65

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

经过一些阅读建议,将 shapefile 转换为 KML 并在 Google 地图中覆盖 KML 是一种选择。如果是这种情况,如何将 shapefile 转换为 KML?

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

4

7 回答 7

43

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

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

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

然后您可以选择您的图层并在其上执行“另存为 kml”。

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

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

于 2011-07-21T22:19:22.603 回答
17

截至 2019 年 3 月 12 日,FusionTables 不再...

使用http://www.shpescape.com/将 Shapefile 导入 Google FusionTables ( http://www.google.com/fusiontables ) ,然后您可以从那里以多种方式使用数据,例如。使用谷歌地图显示它。

于 2011-06-02T18:04:24.987 回答
13

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

此外,在将 shapefile 转换为 KML 之前,请考虑使用MapShaper之类的工具来降低其复杂性;根据您需要多少细节,您将大大减少文件大小。

于 2011-03-22T13:10:43.363 回答
13

我不会使用 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);
于 2015-09-08T19:38:34.670 回答
2

只是为了更新这些答案,ESRI在 ArcMap 10.X中包含了这个工具,称为Layer to KML 。此外,还存在Map to KML工具。

只需导入所需的图层(矢量或栅格)并选择输出位置、分辨率等。非常简单的工具。

于 2015-03-23T18:24:28.897 回答
2

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

这是某人找到的可用方法的列表。

此外,在我看来,多边形层的最有效表示是使用 Google Maps API 的折线编码,它可以显着压缩 lat-lng 数据。但进入该格式需要工作:使用 ArcMap 将 Shape 导出为 lat/lng 坐标,然后使用 Google Maps API 转换为折线。

于 2012-03-21T19:33:30.907 回答
1

2018 年了...我发现这个很棒的在线工具http://mapshaper.org/可以将 ESRI shapefile 转换为 SVG、TopoJSON、GeoJSON。

以下是如何使用它的说明https://www.statsilk.com/maps/convert-esri-shapefile-map-geojson-format

快速而直接!:)

于 2018-01-16T23:58:23.990 回答