查看原文
其他

北京市街道边界矢量数据获取方法

小猿猴GISer 2022-04-25

The following article is from GIS点滴 Author James

Hello,大家好,我是James.

 

我们知道:数据是GIS比较重要的组成部分,没有基础数据的支撑,其他工作无从展开。可能你曾为了一份行政边界数据在群里或者论坛各种跪求,但都石沉大海,膝盖也已长出了老茧,今天我以一个近期遇到的数据爬取为例,手把手教你抓取地图矢量数据。


也是偶然看到天地图北京的官网有行政区、街道办的边界数据



惯性使然打开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个区!

 

3、展开其中一个后,看到更为详细的信息

 

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文本

 

 

接下来一篇我们要将这些数据导入至ArcMap,转成空间数据文件(shapefile或者gdb要素类存储),敬请期待!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存