从高德采集最新的省市区五级座标和行政区域边界,用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 一下。