从高德采集最新的省市区五级座标和行政区域边界,用js在浏览器中运行

优采云 发布时间: 2020-08-09 17:57

  从高德采集最新的省市区五级座标和行政区域边界,用js在浏览器中运行

  本文描述的是对国家统计局于2019-01-31发布的《2018年统计用区划代码和城乡划分代码(截止2018年10月31日)》中省市区五级的座标和行政区域边界的采集。随着时间变化,本文内容会逐步变旧或失效,请到GitHub库房查阅最新更新数据。

  本文更新(移步查阅):

  19-04-15 新采集了2018的省市区五级的座标和行政区域边界数据csv格式

  19-03-22 采集了2018的城市数据

  数据下载 GitHub:

  边界疗效预览

  

  全国省份

  

  广东

  数据来源

  坐标和边界是高德地图提供的数据插口;可通过方式转换成其他坐标系的座标,比如百度地图的。

  省市区五级是国家统计局统计标准《2018年统计用区划代码和城乡划分代码(截止2018年10月31日)》,截稿时是最新的。

  

  数据采集1. 调用高德地图插口抓取原创数据

  涉及源码:map_geo.js

  进入高德地图测试页面,执行代码即可完成抓取,开了4个模拟的线程,采集了3300+数据,首次运行大约2分多钟完成采集。

  

  抓取完成后会手动弹出保存文件数据。

  源码上面收录了对不同地名的处理,有些城市不能直接通过编码或城市名称来查询,高德地图相对于统计局还是有些滞后。

  2. 处理数据和导入CSV

  涉及源码:map_geo_格式化.js

  这个代码比较简单,目前只是起到把数据导下来的作用,里面写了一大堆方式,但运行过一次后发觉,基本上可以不用了,因为对数据进行验证部份发觉高德的数据非常完美。

  代码运行完成就手动弹出保存csv文件数据了。

  为什么不采百度的

  使用高德插口采集是前面才决定的,因为原本是用百度地图的插口,但数据全部搞完,经过使用发觉百度地图数据有严重问题:

  参考 肃宁县(右下方向那块飞地)、路南区(唐山科技职业技术学院那儿一段奇特的边界) 边界,百度数据大量线段交叉的无效polygon(百度地图测试),没有人工未能修正,高德没有这个问题();

  并且高德对镂空性质的宗地处理比百度强,参考天津市对天津大块飞地的处理,高德数据只须要Union操作能够生成polygon,百度既有Union操作又有Difference操作,极其复杂数据还无效。

  所以舍弃使用百度地图数据。

  如何使用这种数据

  坐标和边界数据和省市区数据是分开储存的,通过ID来进行关联。

  采集到的csv文件可以导出到数据库内使用,由于POLYGON须要解析,蛮复杂的,可以参考src/map_geo_格式化.js内的SQL Server导出用的SQL句子的反例。

  如果须要特定的POLYGON格式,可以依照库上面介绍的数组格式,自行进行解析和验证。

  使用过程中若果遇见多种不同坐标系的问题,比如恳求的参数是WGS-84座标(GPS),我们前端储存的是高德的座标,可以通过将WGS-84座标转成高德座标后进行处理,百度的座标一样。转换有相应方式,转换精度通常可以达到预期范围,可自行查找。或者直接把高德的原创座标数据转换成目标坐标系后再储存(精度?)。

  SQL Server中的运行结果(大概2分钟完成POLYGON的转换,表数据化学储存空间大约300M):

  

  全国

  最后

  最新的数据下载和相关问题请到 Github查看:

  releases内不仅有省市区五级座标和行政区域边界csv数据外,还有处理好的3级或则4级省市区乡 csv数据提供下载。

  如果这个库有帮助到您,请 Star 一下。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线