AreaCity 开源库整理了省、市、区县、乡镇街道四级行政区划数据,配套了在线工具转换成三级、四级联动JavaScript代码,使用自带的转换工具软件可以导入数据库;数据源自: 统计局、民政部、腾讯地图行政区划、高德地图行政区划,从这四大平台整合。
数据在线预览:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/
GitHub地址:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov
截止发文(2022-02-12),开源库内于2022年02月06日发布了新整理的最新版数据;行政区划数据更新频繁,仅区县每年都有好多个变更,统计局、民政部每年都会发布新数据,不过需要自行处理;所以省市区数据需要经常去同步维护,好在这个开源库有在持续的长期维护,新数据发布后更新相对容易很多。
由于开源库更新维护数据比较及时,所以只要开源库没有被关闭,本文介绍的提取方法就一直适用,不仅仅是适用于今年; 比那些上传到下载平台就万年不更新的数据优秀很多。
除了四级行政区划数据外,开源库内还可以在线预览和下载到省市区三级坐标矢量边界,和乡镇街道地理围栏数据,并且提供了转换工具软件可以方便的导入数据库、转换成shp、geojson、sql格式、转换坐标系;坐标边界我后面再发使用教程,本文只介绍四级行政区划数据的提取使用。
最新版通用json格式文件提取
在数据在线预览页面底下,提供了个在线转换工具,打开就是当前库里面整理好的最新版数据(开源库更新维护数据比较及时),能将省市区镇四级数据转成json格式文件,控制选项也丰富,想要导出一级、两级、三级、四级数据都可以:
转换好后直接可以下载到json文件:
文件内包含了n:城市名、i:城市ID、p:上级ID、y:拼音前缀,都是单个字母做key,目的是减少文件大小,如果想要name、id这样的key,可以点击“在线编辑UserFormat源码”里面默认实现了导出完整的数据格式。
json文件对于跨平台使用很方便,不单单是网页里面使用,手机app、桌面程序、后端代码内使用均适用。
最新版多级联动js版数据代码提取
在数据在线预览页面底下,提供了个在线转换工具,打开就是当前库里面整理好的最新版数据(开源库更新维护数据比较及时),能将省市区镇四级数据转成多级联动js,控制选项也丰富,转成两级、三级、四级联动都可以,还能在页面上直接体验到四级联动下拉选择:
转换好后直接可以下载到js文件:
其实js代码内已经内嵌了json格式的数据,并且封装好了多级联动js代码,我们只需要按代码内的说明,调用方法即可在html网页里面快速实现多级联动,用户选择后会有事件回调。
最新版数据导入数据库
导入前先下载好:
- 【转换工具软件】在数据在线预览页面内,点击转换工具软件链接可以下载到开源库提供的转换工具,使用此工具,可以将省市区镇四级行政区划数据导入到MySQL、SQL Server数据库,或者转换成sql文件(导入到其他兼容数据库);
- 【ok_data_level4.csv数据文件】在数据在线预览页面内,点击显示的数据下载链接,下载得到
ok_data_level4.csv
数据文件。
注意:文件一定要到开源库内下载,开源库更新维护数据比较及时,不要到其他的下载平台下载,不然那些上传到下载平台万年不更新的极有可能下载到老版本。
转换工具软件只支持Windows电脑,Mac上可以使用虚拟机来使用软件。
准备好后,打开转换工具,开始将数据导入数据库(这里导入的MySQL,导入SQL Server一样操作):
- 点击工具内的“高级>>”按钮,打开自定义脚本界面;
- 在脚本界面点击顶上的选择文件,选择下载的
ok_data_level4.csv
数据文件; - 在内置脚本下拉框中选择“省市区镇导入数据库”选项,然后点击应用按钮;
- 在左侧界面的数据库设置中,选择类型为MySQL,填写好数据库连接端口+数据库名+账号密码;
- 自定义脚本界面中点击“导入数据库”按钮,等待一会,4万多条数据3分钟不到就就导入数据库了。
导入成功,4万多条数据耗时2分22秒:
MySQL客户端查看数据:
以上操作同样适用于SQL Server,一样的步骤,另外内置脚本中还支持“省市区镇转SQL”功能,可以直接导出SQL文件,可以导入到其他兼容的数据库。
数据的一些要注意的地方
开源库会尽量和民政部的更新频率保持一致,但由于最为主要的两个数据源国家统计局
、腾讯地图行政区划
更新频度并没有民政部高;因此省市区三级准确度和民政部准确度是一量级,并且要更完整些;第四级镇级主要由腾讯地图行政区划
提供,腾讯数据源并不经常更新,因此会导致小部分新增、调整的城市第四级没有数据(会用上级数据补齐),使用前应该考虑此缺陷。
数据通过使用上级数据补齐的形式(具体细节请参考库文档后面的数据规则),使得任何一个数据都能满足省市区镇4级结构,没有孤立的(ID全局唯一),因此不管从哪级进行下级选择,都能进行有效操作。可以通过ID结构来识别这种补齐填充的数据,只要ID为上级的ID+多个0,就代表此数据为补齐填充数据,比如:东莞(4419)-东莞(441900),很容易鉴别出441900为补齐用的填充数据。
会发生补齐行为的数据很少,约50来个,主要为:直筒子市(东莞、儋州等)、省直辖县级市(济源、潜江等),他们的下一级仅有补齐的这条数据。另外直辖市(北京、天津等)下级也仅有一条数据,ID结尾为01(不包括重庆,重庆下级分成了市、县两个)。
直筒子等这种为什么不直接把下级往上提一级来做区级,采用补齐填充的方式来对齐数据的原因,请参考issue#9。
数据中不包含大部分行政管理区,比如:雄安新区、天府新区、苏州工业园区等。
省市区县乡镇坐标、矢量边界数据
在数据在线预览页面中同样可以下载到省市区三级坐标边界数据,和乡镇级的坐标边界数据,通过转换工具软件可以方便的导入数据库、转换成shp、geojson、sql格式、转换坐标系。
坐标边界的使用我后面再发教程,敬请关注~
ECharts Map四级下钻在线测试和预览+代码生成:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-echarts.html
【END】