从高德采集最新的省市区三级坐标和行政区域边界,用js在浏览器中运行
本文描述的是对国家统计局于
2019-01-31
发布的《2018年统计用区划代码和城乡划分代码(截止2018年10月31日)》中省市区三级的坐标和行政区域边界的采集。
本文更新(移步查阅):
19-04-15 新采集了2018的省市区三级的坐标和行政区域边界数据csv格式
19-03-22 采集了2018的城市数据数据下载 GitHub:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/releases
边界效果预览
数据来源
坐标和边界是高德地图提供的数据接口;可通过方法转换成其他坐标系的坐标,比如百度地图的。
省市区三级是国家统计局统计标准《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
需要解析,蛮复杂的,可以参考2019/map_geo_格式化.js内的SQL Server导入用的SQL语句的例子。
如果需要特定的POLYGON
格式,可以根据库里面介绍的字段格式,自行进行解析和验证。
使用过程中如果遇到多种不同坐标系的问题,比如请求的参数是WGS-84坐标(GPS)
,我们后端存储的是高德的坐标,可以通过将WGS-84坐标
转成高德坐标
后进行处理,百度的坐标一样。转换有相应方法,转换精度一般可以达到预期范围,可自行查找。或者直接把高德的原始坐标数据转换成目标坐标系后再存储(精度?)。
SQL Server
中的运行结果(大概2分钟完成POLYGON
的转换,表数据物理存储空间大概300M):
最后
数据下载和相关问题请到 Github查看:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov
releases内除了有省市区三级坐标和行政区域边界csv数据外,还有处理好的3级或者4级省市区镇 csv数据提供下载。
如果这个库有帮助到您,请 Star 一下。
从高德采集最新的省市区三级坐标和行政区域边界,用js在浏览器中运行的更多相关文章
- 从统计局采集最新的省市区镇数据,用js在浏览器中运行 V2
本文描述的是对国家统计局于2019-01-31发布的<2018年统计用区划代码和城乡划分代码(截止2018年10月31日)>的采集. 相对于用于和采集2016版.2017版的js代码做了比 ...
- 从统计局采集最新的省市区县数据,纯js
本文更新(移步查阅): 19-04-15 新采集了2018的省市区三级坐标和行政区域边界 19-03-22 采集了2018的城市数据 18-11-28 采集了2017的城市数据 数据下载 GitHub ...
- 解析高德地图api获取省市区,生成最新三级联动sql表
前言: 最近项目中用到了全国省市区三级信息,但是网上找到的信息都是比较旧的信息.与现在最新的地区信息匹配不上.后来想到高德地图上可能有这些信息.所以解析了一下api接口,生成了相关省市区的sql信息. ...
- jquery省市区三级联动
jquery省市区三级联动(数据来源国家统计局官网)内附源码下载 很久很久没有写博了. 今天更新了项目的省市区三级联动数据,更新后最新的海南三沙都有,分享给所有需要的小伙伴们... JQUERY + ...
- jquery省市区三级联动(数据来源国家统计局官网)内附源码下载
很久很久没有写博了. 今天更新了项目的省市区三级联动数据,更新后最新的海南三沙都有,分享给所有需要的小伙伴们... JQUERY + JSON,无数据库,纯JS代码,无加密,无压缩,可直接使用在任何项 ...
- 用jsp实现省市区三级联动下拉
jsp+jquery实现省市区三级联动下拉 不少系统都需要实现省市区三级联动下拉,像人口信息管理.电子商务网站.会员管理等,都需要填写地址相关信息.而用ajax实现的无刷新省市区三级联动下拉则可以改善 ...
- jQuery省市区三级联动插件
体验效果:http://hovertree.com/texiao/bootstrap/4/支持PC和手机移动端. 手机扫描二维码体验效果: 代码如下: <!DOCTYPE html> &l ...
- 省市区三级联动 pickerView
效果图 概述 关于 省市区 三级联动的 pickerView,我想大多数的 iOS 开发者应该都遇到过这样的需求.在遇到这样的需求的时候,大多数人都会觉的这个很复杂,一时无从下手.其实真的没那么复杂. ...
- JS省市区三级联动
不需要访问后台服务器端,不使用Ajax,无刷新,纯JS实现的省市区三级联动. 当省市区数据变动是只需调正js即可. 使用方法: <!DOCTYPE html><html>< ...
随机推荐
- 使用混淆ProGuard压缩代码和资源/减少方法数量
ProGuard介绍 ProGuard是一个Java类文件压缩器,优化器,混淆器和预先文件验证器. 压缩步骤检测和删除未使用的类,字段,方法和属性. 优化步骤分析和优化方法的字节码. 混淆步骤使用短无 ...
- Linux内存描述之概述--Linux内存管理(一)
1 前景回顾 1.1 UMA和NUMA两种模型 共享存储型多处理机有两种模型 均匀存储器存取(Uniform-Memory-Access,简称UMA)模型 将可用内存以连续方式组织起来, 非均匀存储器 ...
- DNS区域传送漏洞实验以及二级域名爆破
DNS区域传送漏洞实验以及二级域名爆破 目录: 1.DNS服务器的域传送漏洞(nslookup交互式.非交互式.批处理三种方式) 2.写个二级域名爆破脚本 一.DNS服务器的域传送漏洞 实验环境: 服 ...
- python爬虫之12306网站--车站信息查询
python爬虫查询车站信息 目录: 1.找到要查询的url 2.对信息进行分析 3.对信息进行处理 python爬虫查询全拼相同的车站 目录: 1.找到要查询的url 2.对信息进行分析 3.对信息 ...
- python3基础知识梳理
一.数据类型 1.数字 int(整型) long(长整型) float(浮点型) complex(复数) 2.布尔值 True或False 3.字符串 二.变量 变量命名规则: 变量名只能是 字母 ...
- 怎么将后缀为.opt,.frm,.myd,.myi文件还原或者是导入mySQL中
其实这个问题的解决方案很简单,把这些文件连同这些文件所在的文件夹原封不动地复制到你的 mysql 文件夹下的 data 里面 (在我的电脑里面是D:\xampp\mysql\data), 然后你进my ...
- [福大软工] Z班 第2次成绩排行榜
作业链接 http://www.cnblogs.com/easteast/p/7469291.html 评分细则 本次个人项目分数由三部分组成,分别是 (1)博客 - 20分,分数组成如下: 在文章开 ...
- Angular之模态弹窗ui-bootstrap-modal及轻量级弹窗ngDialog
ui-bootstrap 中模态 官网 angular-ui-bootstrap 对于ui-bootstrap集成大量指令如折叠ui.bootstrap.accordion.时间插件ui.boot ...
- Set replication in Hadoop
I was trying loading file using hadoop API as an experiment. I want to set replication to minimum as ...
- 概率期望dp
对于概率dp,我一直都弄得不是特别明白,虽然以前也有为了考试去突击过,但是终究还是掌握得不是很好,所以决定再去学习一遍,把重要的东西记录下来. 1.hdu4405 Description 在一个 \( ...