在Google地图上覆盖ESRI shapefile的最佳方法是什么?

在Google Maps中覆盖shapefile的最佳方式是什么?

经过一些阅读后发现,将shapefile转换为KML并在Google地图中覆盖KML是一个选项。 如果是这样的话,我该如何将shapefile转换为KML?

我相信会有一些可用于此转换的开源工具。 任何人都可以指向一个工具来将shapefile转换为KML而不会丢失任何数据?

我喜欢使用(开源和GUI友好) 量子GIS将shapefile转换为kml。

Google Maps API仅支持KML标准的一部分 。 一个限制是文件大小。

为了减less文件大小,您可以使用Quantum GIS的“简化几何graphics”function。 这“平滑”多边形。

然后你可以select你的图层,并做一个“另存为kml”。

如果您需要处理一堆文件,则可以使用Quantum GIS的osgeo4w shell的ogr2ogr命令对该进程进行批处理。

最后,我build议将您的kml(使用您最喜爱的压缩程序)压缩为文件大小并将其保存为kmz。

使用http://www.shpescape.com/将Shapefile导入到Google FusionTables( http://www.google.com/fusiontables )中,然后可以通过多种方式使用这些数据,例如。 使用GoogleMaps显示。

你的意思是像Esri shapefile中的shapefile ? 无论哪种方式,您应该能够使用GDAL包中提供的ogr2ogr执行转换。 您需要.shp文件,最好是相应的.dbf文件(它将提供上下文信息)。

另外,考虑使用MapShaper之类的工具来降低shapefile的复杂度,然后再将其转换为KML; 您将大大减less文件大小取决于您需要多less细节。

我不会使用KML。 而是使用GeoJSON ,您现在可以在Google Maps API中本地使用GeoJSON 。 这是从原来的回答中不存在的一个更新的特征。

无论如何,只需在Quantum GIS中打开SHP文件,然后就可以以任何您喜欢的格式(KML,GeoJSON)输出它。

如果您使用的是Google Maps for Work,则会发现一个高级扩展,可直接处理加载shapefile,直接连接到从ESRI生成的shapefile。 我在CMaps网站上进行了一次search,发现这个片段是通过state shapefile加载美国的: https : //gmapsplugin.net/cmapsanalytics/assets/shapes/usstates.shp

 var cMap = new centigon.locationIntelligence.MapView(); cMap.key([your_api_key]); cMap.layerNames(["Basic Shapes"]); cMap.dbfKeys([['Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming']]); cMap.userShapeKeys([['Massachusetts','Minnesota','Montana','North Dakota','Hawaii','Idaho','Washington','Arizona','California','Colorado','Nevada','New Mexico','Oregon','Utah','Wyoming','Arkansas','Iowa','Kansas','Missouri','Nebraska','Oklahoma','South Dakota','Louisiana','Texas','Connecticut','New Hampshire','Rhode Island','Vermont','Alabama','Florida','Georgia','Mississippi','South Carolina','Illinois','Indiana','Kentucky','North Carolina','Ohio','Tennessee','Virginia','Wisconsin','West Virginia','Delaware','District of Columbia','Maryland','New Jersey','New York','Pennsylvania','Maine','Michigan','Alaska']]); cMap.labels([['Massachusetts','Minnesota','Montana','North Dakota','Hawaii','Idaho','Washington','Arizona','California','Colorado','Nevada','New Mexico','Oregon','Utah','Wyoming','Arkansas','Iowa','Kansas','Missouri','Nebraska','Oklahoma','South Dakota','Louisiana','Texas','Connecticut','New Hampshire','Rhode Island','Vermont','Alabama','Florida','Georgia','Mississippi','South Carolina','Illinois','Indiana','Kentucky','North Carolina','Ohio','Tennessee','Virginia','Wisconsin','West Virginia','Delaware','District of Columbia','Maryland','New Jersey','New York','Pennsylvania','Maine','Michigan','Alaska']]); cMap.polyDataSources([centigon.locationIntelligence.CMapAnalytics.DATA_PROVIDERS.SHAPE_DATAPROVIDER]); cMap.layerTypes([centigon.mapping.Layer.TYPE.POLY]); cMap.locations([["https://gmapsplugin.net/cmapsanalytics/assets/shapes/usstates.shp"]]); cMap.panTo("USA"); cMap.zoomLevel(3); 

免费“导出到KML”脚本的ArcGIS 9

以下是某人find的可用方法的列表 。

另外,在我看来,多边形图层最有效的表示方法是使用Google Maps API的折线编码,它可以显着压缩经纬度数据。 但进入这种格式需要工作:使用ArcMap将Shape导出为纬度/经度坐标,然后使用Google Maps API转换为多段线。

为了更新这些答案,ESRI已经包含了这个工具,在ArcMap 10.X中被称为图层到KML 。 此外,存在一个映射到KML工具。

只需input所需的图层(vector或光栅)并select输出位置,分辨率等。非常简单的工具。