麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS教程」批量抓取全国GeoJSON数据(DataV.GeoAtlas)方法

在之前的文章中《利用Python获取全国GeoJSON数据并预览转换成shp格式文件》中介绍了使用 Python 下载DataV.GeoAtlas地图边界数据的方法,但在留言中有不少朋友告诉我使用 Python 爬虫抓数据要坐牢,吓到宝宝了,于是今天宝宝再给大家分享一个不用 Python 爬虫来批量下载全国GeoJSON矢量边界数据的方法。毕竟一个一个点,也是个不体力活不是。

DataV Geo

环境要求

推荐 MacOS Terminal (Mac原生自带),或者用 Linux 也行,也是原生自带 Terminal。实在不行,Windows也可以,但在 Windows 上需要安装 Windows Terminal,或者其他第三方 Terminal 工具。

PS:本文所有操作是在 MacOS 下操作完成,其他平台请大家自行测试,如有问题欢迎反馈。

抓取思路

使用命令行来做这个事情,不太方便像Python一样,让它先点哪个按钮再点哪个按钮(主要我水平太菜)。我们先观察一下数据结构,如下图:

全国数据:

全国GeoJSON数据

省级数据:

四川省GeoJSON数据

地级市数据:

成都市GeoJSON数据

到这就不难发现下面的规律:

全国数据:

下载全图的数据只有一个,直接下载就好。即:https://geo.datav.aliyun.com/areas/bound/100000_full.json

省级数据:

下载所有省级数据只要有所有省份的 adcode,并构造出一个下载地址就好,比如:

甘肃:https://geo.datav.aliyun.com/areas/bound/620000_full.json

内蒙古:https://geo.datav.aliyun.com/areas/bound/150000_full.json

以此类推,地级市数据和省级类似,不过把 adcode 换成了各个地级市的而已。那怎样下载所有的adcode?我们再观察,回到原网站上,有个Excel下载按钮,我们先下载下来看看。

全国GeoJSON Excel

打开看:

excel格式全国属性数据

这里点击 province、city、district 即可下载各个级别的属性数据。点击下载:

下载excel格式全国属性数据

数据格式如下:

excel格式全国属性数据格式

至此我们的抓取思路就完整了,如下:

  1. 抓取所有的省级adcode
  2. 抓取所有地级市的adcode
  3. 构造url批量下载

准备工具

  1. Terminal
  2. wget或者迅雷等任何支持批量下载的工具

数据下载

下面就是实践过程了,先获取所有的省级adcode,下载province标签下的json数据,地址:http://datavmap-public.oss-cn-hangzhou.aliyuncs.com/areas/csv/100000_province.json

提取所有的省级adcode,在Terminal中输入如下命令:

cat 100000_province.json | grep -Eo \"adcode\"\:\"\(\[0-9\]{6}\)\", > provinces.txt

sed 's/\"adcode\"\:\"/https:\/\/geo\.datav\.aliyun\.com\/areas\/bound\//g' provinces.txt > tmp.txt

sed 's/\"\,/\_full\.json/g' tmp.txt > provinces.txt && rm tmp.txt

wget -i provinces.txt

执行完之后,所有的省级GeoJSON数据就下载下来了。

省级GeoJSON数据

省级GeoJSON数据

地级市的数据下载方法与省级一致,只需要把上面命令源文件换一下即可,这里就不赘述了。

总结

其实这个数据抓取属于非常简单的级别,但万变不离其中,不管是命令行还是Python、Node,不管是MacOS还是Linux、Windows,我们要学会善于思考,善于使用各类工具来解决各类问题。

麻辣GIS-Sailor
作者:
GIS爱好者,学GIS,更爱玩GIS。
微博关注
手机阅读
赞赏支持
手机阅读
微信捐助麻辣GIS
微信打赏
支付宝捐助麻辣GIS
支付宝打赏

声明

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

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

3.如果本文对您有所帮助,请您对我们团队进行 打赏捐助让我们在传播3S的路上可以走得更远,不胜感激。PS:如果你是学生党,请优先把经费用于购买学习资料 以及 与小哥哥/小姐姐约会上:-)

如您有疑问,可在文末留言,或到QQ群中提问。

本站QQ群(一):291616564 加入QQ群

本站QQ群(二):166408035 加入QQ群

本站QQ群(三):627853279 加入QQ群

本站QQ群(四):436386604 加入QQ群

本站QQ群(五):606176554 加入QQ群

本站QQ群(六):946178380 加入QQ群

本站QQ群(七):861271808 加入QQ群

微信公众号:malagis,扫描右边二维码直接关注。

发表评论