在 Google 地图中覆盖 shapefile 的最佳方法是什么?
经过一些阅读建议,将 shapefile 转换为 KML 并在 Google 地图中覆盖 KML 是一种选择。如果是这种情况,如何将 shapefile 转换为 KML?
我相信会有一些开源工具可用于这种转换。任何人都可以指出将 shapefile 转换为 KML 而不会丢失任何数据的工具吗?
在 Google 地图中覆盖 shapefile 的最佳方法是什么?
经过一些阅读建议,将 shapefile 转换为 KML 并在 Google 地图中覆盖 KML 是一种选择。如果是这种情况,如何将 shapefile 转换为 KML?
我相信会有一些开源工具可用于这种转换。任何人都可以指出将 shapefile 转换为 KML 而不会丢失任何数据的工具吗?
我喜欢使用(开源和 gui 友好)Quantum GIS将 shapefile 转换为 kml。
Google Maps API 仅支持KML 标准的一个子集。一个限制是文件大小。
要减小文件大小,您可以使用Quantum GIS的“简化几何”功能。这“平滑”了多边形。
然后您可以选择您的图层并在其上执行“另存为 kml”。
如果您需要处理一堆文件,可以从 osgeo4w shell 使用 Quantum GIS 的 ogr2ogr 命令批处理该过程。
最后,我建议压缩您的 kml(使用您最喜欢的压缩程序)以减小文件大小并将其保存为 kmz。
截至 2019 年 3 月 12 日,FusionTables 不再...
使用http://www.shpescape.com/将 Shapefile 导入 Google FusionTables ( http://www.google.com/fusiontables ) ,然后您可以从那里以多种方式使用数据,例如。使用谷歌地图显示它。
您是指Esri shapefile中的 shapefile吗?无论哪种方式,您都应该能够使用ogr2ogr执行转换,它在GDAL包中可用。您需要该.shp
文件,最好是相应的.dbf
文件(它将提供上下文信息)。
此外,在将 shapefile 转换为 KML 之前,请考虑使用MapShaper之类的工具来降低其复杂性;根据您需要多少细节,您将大大减少文件大小。
我不会使用 KML。相反,请使用您现在可以在 Google Maps API 中本地使用的GeoJSON 。这是原始响应中不存在的较新功能。
在任何情况下,只需在Quantum GIS中打开 SHP 文件,然后您就可以将其输出为您喜欢的任何格式(KML、GeoJSON)。
如果您使用的是 Google Maps for Work,我发现了一个高级扩展,可以直接处理加载 shapefile,您可以直接连接到从 ESRI 生成的 shapefile。我在 CMaps 网站上进行了搜索,发现了这个按州 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);
只是为了更新这些答案,ESRI在 ArcMap 10.X中包含了这个工具,称为Layer to KML 。此外,还存在Map to KML工具。
只需导入所需的图层(矢量或栅格)并选择输出位置、分辨率等。非常简单的工具。
这是某人找到的可用方法的列表。
此外,在我看来,多边形层的最有效表示是使用 Google Maps API 的折线编码,它可以显着压缩 lat-lng 数据。但进入该格式需要工作:使用 ArcMap 将 Shape 导出为 lat/lng 坐标,然后使用 Google Maps API 转换为折线。
2018 年了...我发现这个很棒的在线工具http://mapshaper.org/可以将 ESRI shapefile 转换为 SVG、TopoJSON、GeoJSON。
以下是如何使用它的说明https://www.statsilk.com/maps/convert-esri-shapefile-map-geojson-format
快速而直接!:)