如何将shapefile图层叠加到Google Maps中?
经过一些阅读后建议,可以将shapefile转换为KML格式并在Google地图上叠加KML图层。如果这样的话,如何将shapefile转换为KML格式呢?
我相信有一些开源工具可用于此转换。有没有人指出一种能够完整转换shapefile为KML格式的工具?
如何将shapefile图层叠加到Google Maps中?
经过一些阅读后建议,可以将shapefile转换为KML格式并在Google地图上叠加KML图层。如果这样的话,如何将shapefile转换为KML格式呢?
我相信有一些开源工具可用于此转换。有没有人指出一种能够完整转换shapefile为KML格式的工具?
截止2019年12月03日,FusionTables已不再可用...
使用ShpEscape将Shapefile导入到Google FusionTables (http://www.google.com/fusiontables),然后您可以使用多种方式使用数据,例如使用GoogleMaps显示它。
我不建议使用KML,而是使用GeoJSON,现在Google Maps API可以本地消费它。这是一个较新的功能,在原来的响应中不存在。
无论如何,只需在Quantum GIS中打开SHP文件,就可以将其以任何格式输出(KML、GeoJSON)。
如果您正在使用Google Maps for Work,则可以使用高级扩展程序直接处理加载shapefiles,只需连接到您从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);
.shp
文件以及最好有相应的.dbf
文件(它将提供上下文信息)。这里有一份已有人整理的可用方法列表。
此外,我认为最有效的多边形图层表示方法是使用Google Maps API的折线编码,它可以显着压缩纬度-经度数据。但是,要将其转换成该格式需要一些工作:使用ArcMap将Shape导出为纬度/经度坐标,然后使用Google Maps API将其转换为折线。
2018年已经过去了... 我发现了这个很棒的在线工具 http://mapshaper.org/ ,可以将ESRI shapefiles转换为SVG、TopoJSON和GeoJSON。
这里是如何使用它的解释 https://www.statsilk.com/maps/convert-esri-shapefile-map-geojson-format
快速简单! :)
mapshaper
没有被问及的 Google 地图图层。 - nurgasemetey