麻辣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-麻辣GIS

作者:

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

声明

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

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

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

已有 20 条评论

  1. Amor💭
    Amor💭 1#
    想请问怎么获取乡镇级别的地级市行政区划图呀
      1. 麻辣GIS
        麻辣GIS 作者
        乡镇目前还比较麻烦,严格来说精确到这个级别是涉密的
  2. Penguin🦉👀
    Penguin🦉👀 2#
    乡镇一级的路网水系
  3. Fisher
    Fisher 3#
    敢问南海那块怎么处理的?
  4. Z
    Z 4#
    这个数据精度不够
      1. 麻辣GIS
        麻辣GIS 作者
        用于web可视化数据,抽稀过
  5. yolo
    yolo 5#
    在arcgis里转换要素不成功,缺少内容
      1. 麻辣GIS
        麻辣GIS 作者
        用QGIS试试?
  6. yolo
    yolo 6#
    嗯嗯,qgis打开了,这个地理编码是按照什么规则来的,想要选关于湖南的部分
  7. 小老实
    小老实 7#
    亲亲,这个能下载到世界地图么
      1. 麻辣GIS
        麻辣GIS 作者
        这个不能,世界地图找osm
  8. WY
    WY 8#
    这个网站上的经纬度坐标是哪个坐标系下的呀?
      1. 麻辣GIS
        麻辣GIS 作者
        WGS84
  9. 九天
    九天 9#
    有两个文件运行有问题,有坐标转换的那两个文件,
    出现process finished with exit code -1073741571(0xC0000FD),
  10. 下一站:______
    下一站:______ 10#
    请问我想找中国省级地图,带海域的那种,怎么找?这里的中国地图包含吗?[撇嘴][撇嘴]
  11. (ノ*゚ー゚)ノ
    (ノ*゚ー゚)ノ 11#
    县级数据可以抓获吗?
      1. 麻辣GIS
        麻辣GIS 作者
        只能有边界
  12. 李伟坚-Excel催化剂&Easyshu作者
    李伟坚-Excel催化剂&Easyshu作者 12#
    我用Excel催化剂,整理了全网最全的geojson地图数据包,没有违反广告法,就是这么牛逼[偷笑]
  13. 我
    我 13#
    提取所有的省级adcode,在Terminal中输入如下命令:这个命令是什么啊
      1. 麻辣GIS
        麻辣GIS 作者
        Linux命令行,Windows原生的cmd是不支持的。

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