手把手教你抓取地图矢量数据【附代码和北京矢量地图区、街道办数据下载】【一】

Hello,大家好,我是James.

偶然看道天地图北京的官网有行政区深圳街道办的边界数据
天地图

惯性使然打开F12,惊奇地看道一串串熟悉的坐标
线索

曾经搜遍论坛网站各个角落,今天在官方却能轻而易举的找到,真是太激动

于是先研究了url请求结构,最终得到了北京16个区和下属街道办的边界信息

接下来跟大家分享抓取过程,

1、首先进入首页(http://beijing.tianditu.gov.cn/bjtdt-mapcenter/),
首页

2、点击【行政区划】,F12我们可以看到在http://beijing.tianditu.gov.cn/tdt-web-sysmanager/services/catalog/special/getLoginOutCatalogSpecials/38ed87a3fe8e4bb1a01949c47baf5244请求结果中包含了北京下属的16个区!
北京16个区

3、展开其中一个后,看道更为详细的信息
北京16个区详细信息

4、点击东城区,我发现在http://beijing.tianditu.gov.cn/tdt-web-sdks/biz/httpproxy/httpproxy.jsp?url=http://www.bjmap.gov.cn:8080/dfc/services/sgssfs/2220?request=getfeature&filter=+GBCODE%3D%27110101%27请求结果中有不得了的坐标串,明显是行政区划的边界节点坐标串嘛
区坐标串

5、继续点击建国门街道,同样在http://beijing.tianditu.gov.cn/tdt-web-sdks/biz/httpproxy/httpproxy.jsp?url=http://www.bjmap.gov.cn:8080/dfc/services/sgssfs/2220?request=getfeature&filter=+GBCODE%3D%27110101001%27看道街道办的坐标穿,完美!
街道办坐标串

接下来上python代码
1、首先惯例,我使用的是python2,首先声明编码,导入request、json解析模块
导入模块

2、接下来需要写4个函数方法,
主要是:
(1)解析、构造url地址
(2)组织爬取的信息
函数方法

3、然后是调取以上函数方法,写入至txt文件
调取、写入

4、最后分别得到行政区和街道办边界节点的txt文本
txt文本
行政区边界节点的txt文本
街道办边界节点的txt文本

本节结束,这里附上完整的代码和txt文本下载链接
链接:https://pan.baidu.com/s/1eaDApBPATqf3D9sWwfAMow
提取码:gnkx
或者长按以下二维码获取下载
二维码获取下载