在谷歌地图上叠加ESRI shapefile的最佳方法?

Car*_*sen 63 gis google-maps kml shapefile google-maps-api-3

在Google地图中叠加shapefile的最佳方法是什么?

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

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

Aar*_*der 41

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

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

要减小文件大小,可以使用Quantum GIS的"简化几何"功能.这"平滑"多边形.

然后,您可以选择您的图层并在其上执行"另存为kml".

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

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


cha*_*815 17

使用http://www.shpescape.com/将Shapefile导入Go​​ogle FusionTables(http://www.google.com/fusiontables),然后您可以通过多种方式使用数据,例如.使用GoogleMaps显示它.


Wya*_*son 13

你的意思是在Esri shapefile中的shapefile吗?无论哪种方式,您都应该能够使用GDAL包中提供的ogr2ogr执行转换.您需要该文件,理想情况下需要相应的文件(将提供上下文信息)..shp.dbf

另外,考虑使用像MapShaper这样的工具来降低shapefile的复杂性,然后再将它们转换为KML; 您将根据所需的详细信息大幅减少文件大小.


小智 12

我不会使用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);
Run Code Online (Sandbox Code Playgroud)