麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS教程」从高德地图下载行政区矢量边界数据

在之前的文章《获取高德地图在线的GeoJSON》中我介绍了使用geo/DistrictExplorer插件获取高德在线的GeoJSON的方法。这个方案适用于在线使用场景(比如结合EChart)来绘制数据可视化地图。有的朋友留言说如果我想下载这个数据怎么办?

面临的问题

我们整理一下如果下载,我们需要解决的主要问题。

第一,通过抓包我们发现高德地图的DistrictExplorer插件获取的是一个JSON文件。

这个JSON格式有点特殊,它不是GeoJSON格式,而是类似TopoJSON的格式,但好像也不是标准的TopoJSON,你直接使用QGIS也打不开。

如果我们能实现这个JSON的解析过程,就可以实现离线下载使用了。

解决思路

那后面的解决方案也比较简单了,我们需要知道DistrictExplorer这个插件是如何把它解析的,然后同样实现这个过程就可以了。

我们跟一下这个API的调用代码:

可以看到这里主要用到的2个方法

  1. loadAreaNode
  2. getSubFeatures

先通过 loadAreaNode 获取到数据,然后getSubFeatures获取到转换后的GeoJSON数据。

所以思路就比较明了了,我们只需要找到这两个函数的实现就可以了。

实现方法

我们把页面加载的高德的所有JS文件找到,然后看它的实现。

顺着这些个方法追下去,你会发现这个调用链非常长。所以我换了个偷懒的方法,直接把web加载的JS文件变成Node运行的文件。

这是我修改后的JS文件。

使用方式

最后看一下使用方式

使用QGIS打开转换后的离线文件

后话

  1. 我还没测试所有的地区,代码先不开源,有需要可以留言。相信如果你做过一点webgis,应该能直接实现出来。
  2. 仅限学习测试,切勿用于商业用途
  3. 批量下载所有的高德TopoJSON格式的方法我们后面介绍

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)