https://github.com/Vonng/adcode

https://hub.fastgit.org/Vonng/adcode

GitHub - Vonng/adcode: 中国行政区划代码,包括五级行政区划详细代码,县级以上区划地理围栏。

中国行政区划代码,包括五级行政区划详细代码,县级以上区划地理围栏。

数据来自国家统计局、民政部、高德地图,均为公开数据。

要点在于地理位置数据

SYNOPSIS

  • 行政区划代码数据基线来自国家统计局:2016年统计用区划代码和城乡划分代码(截止2016年07月31日)
  • 行政区划变动数据以民政部公告为准:2017年行政区划代码
  • 行政区划地理边界数据来自:高德地图 行政区划
  • 目前数据时间点为:2016年07月31日,后续会追赶最新变更。
  • 核心数据表两张:
    • 行政区划数据表:adcode
    • 地理围栏数据表:fences
  • 数据格式:
    • 行政区划是csv格式的数据文件,按所属县级行政区划代码(6位)分片在各自的文件中。
    • 地理围栏是json格式的数据文件,相应县级行政区划代码(6位)的地理围栏以GeoJSON形式存储在单独文件中
    • 使用文本数据格式是为了便于其他应用和数据库使用,但本地实际上使用的是PostgreSQL+PostGIS。bin/目录中提供了用于ETL的实用脚本。

DESCRIPTION

行政区划表(adcode)

基础信息

表名 adcode
数据目录 data/adcode/
控制脚本 bin/adcode
模式定义 sql/adcode.ddl
数据样例 朝阳区:data/adcode/110105.csv
相关知识 中国行政区划相关知识

数据结构

Column Type Description
code bigint 国家统计局12位行政区划代码
parent bigint 12位父级行政区划代码
name character varying(64) 行政单位名称
level character varying(16) 行政单位级别:国/省/市/县/乡/村
rank integer 行政单位级别{0:国,1:省,2:市,3:区/县,4:乡/镇,5:街道/村}
adcode integer 6位县级行政区划代码
post_code character varying(8) 邮政编码
area_code character varying(4) 长途区号
ur_code character varying(4) 3位城乡属性划分代码
municipality boolean 是否为直辖行政单位
virtual boolean 是否为虚拟行政单位,例如市辖区、省直辖县等。
dummy boolean 是否为模拟行政单位,例如虚拟社区、虚拟村。
longitude double precision 地理中心经度
latitude double precision 地理中心纬度
center geometry 地理中心, ST_Point
province character varying(64)
city character varying(64)
county character varying(64) 区/县
town character varying(64) 乡/镇
village character varying(64) 街道/村

注意,center字段使用了PostGIS扩展。如果你不希望使用PostGIS,修改center字段的类型为TEXT即可保持兼容,或使用PostgreSQL内建的Point类型。

数据样例

110105043000 110105000000    东湖街道办事处 town    4   110105  \N  \N  \N  f   f   \N  \N  \N  北京市 市辖区 朝阳区 东湖街道办事处 \N
110105400000    110105000000    首都机场街道办事处   town    4   110105  \N  \N  \N  f   f   \N  \N  \N  北京市 市辖区 朝阳区 首都机场街道办事处   \N
110105035200    110105035000    西会村委会   village 5   110105  \N  \N  111 f   f   \N  \N  \N  北京市 市辖区 朝阳区 管庄地区办事处 西会村委会
110105035201    110105035000    东会村委会   village 5   110105  \N  \N  112 f   f   \N  \N  \N  北京市 市辖区 朝阳区 管庄地区办事处 东会村委会
110105001024    110105001000    南郎家园社区居委会   village 5   110105  \N  \N  111 f   f   \N  \N  \N  北京市 市辖区 朝阳区 建外街道办事处 南郎家园社区居委会
110105001025    110105001000    北郎家园社区居委会   village 5   110105  \N  \N  111 f   f   \N  \N  \N  北京市 市辖区 朝阳区 建外街道办事处 北郎家园社区居委会

数据说明

  • 原始数据来自国家统计局、民政部、高德地图的公开数据。
  • 主键为code,国家统计局使用的12位行政区划代码:编制规则。
  • adcode是六位县级行政区划代码,且始终满足adcode=code/1000000
  • levelrank目前为一一对应关系:
level rank code count name
0 country - 1
1 province 2位 34 省、自治区、直辖市、特别行政区
2 city 4位 344 地级市、地区、自治州、盟
3 county 6位 3133 市辖区、县级市、县、自治县、旗、自治旗、特区、林区
4 town 9位 42868 街道、镇、乡、苏木、民族乡、民族苏木
5 village 12位 666655 居委会、村委会
  • post_code表示的邮政编码目前没有数据,仍需补校。

  • area_code表示的长途区号,仍需校对。

  • ur_code是三位城乡划分代码,按标准只有乡、村两级有该属性,但实际中只有村级单位有该属性。

  • municipality表示该行政区划是否为直辖区划,即直辖市,直辖县、直辖镇、直辖村等。

  • virtual表示该行政区域是否为虚拟区划,通常直辖行政单位的上级区划单位是虚拟区划,例如市辖区。

  • dummy表示该行政区是否为虚拟区划,但这是另一种虚拟,不是因为直辖产生的虚拟单位,比如虚拟社区。

  • latitude, longitude均为双精度浮点数,原始数据6位有效数字,所有坐标点使用GCJ-02火星坐标系。

  • center表面类型是PostGIS的GEOMETRY,底层类型是ST_Point

  • province, city, county, town, village是为了使用方便添加的反规范化字段。

  • 港澳台市县级数据有待补充,而且需要修正一些坐标系不一致的问题(WGS84 or GCJ-02)。

  • 此数据描述为2016年7月时的快照。目前除去虚拟行政区划,有6个过时县缺少坐标数据,更新后可修复。83%的镇有坐标数据。只有8%的村级行政单位有地理信息。有待后续完善

数据质量

非虚拟行政单位的地理数据完善情况:

level total have location miss
country 1 1
province 34 34
city 334 334
county 2851 2845 6
town 42846 35350 7496
village 664892 59035 605857

对于县以上的地理数据,除了6个(16~17年发生变更)的县级区划没有地理数据,其他都是最新(2018-02)的数据。六个过期县级行政区划:

130421000000   130400000000    邯郸县     county  3   130421
139001000000    139000000000    定州市     county  3   139001
139002000000    139000000000    辛集市     county  3   139002
320812000000    320800000000    清江浦区    county  3   320812
330204000000    330200000000    江东区     county  3   330204
410211000000    410200000000    金明区     county  3   410211

实用脚本

数据表有操作管理的便利,文本文件有交流可读的便利。因此提供了实用的ETL工具:bin/adcode

大多数功能都要求有一个超级用户权限的PostgreSQL实例,并有一个安装PostGIS扩展的的数据库(非必需)。通过指定环境变量PGURL来提供链接参数。默认使用postgres://localhost:5432/adcode

Usage:bin/adcode <action>action list:create  :   创建adcode表,若已存在则会删除原表。index   :   在adcode表上创建索引(注意,大批量插入时大量索引会严重拖慢插入速度)。order    :   排序重建adcode,使其物理有序(rank,code ASC)drop :   删除fences表trunc  :   清空adcode表clean  :   清空data/adcode中的转储dump   :   将adcode表以文本形式转储至data/adcode/,提供adcode列表参数,则只转储对应数据load    :   从data/adcode/文本转储导入adcode表,提供adcode列表参数,则只导入对应数据backup    :   备份adcode至data/backup/adcode.sqlresotre  :   从备份data/backup/adcode.sql恢复adcodecheck  :   检查adcode数据reload    :   清空adcode表,并重新从data/adcode中加载数据reset  :   删除并创建adcode表setup   :   初始化:建表,加载数据,创建索引。usage :   显示adcode控制脚本用法

本地使用时,可以采用backup/restore的方式进行备份与恢复,速度会快很多(几秒)。

PR/PULL与发布提交时,再使用dump/load生成文本格式的数据(二三十秒)。

此表在平时几乎不会有写入,所以创建了大量索引,可以极大加快查询与转储速度。

但大批量加载时,索引可能会严重拖慢插入速度,您可能需要考虑导入后再重建索引。

地理围栏表(fences)

注意,根据中华人民共和国测绘法。

基础信息

表名 fences
数据目录 data/fences/
控制脚本 bin/fences
模式定义 sql/fences.ddl
数据样例 朝阳区地理围栏:data/fences/110105.json
相关知识 GCJ-02, PostGIS Geometry, GeoJSON

数据结构

Column Type Description
code bigint 国家统计局12位行政区划代码
adcode integer 6位县级行政区划代码
fence geometry 地理围栏,GCJ-02,MultiPolygon

数据样例

例如,6位县级行政区划代码为820008的澳门特别行政区-圣方济各堂区的地理围栏为

{"type":"Polygon","coordinates":[[[113.601946,22.138113],[113.603872,22.132865],[113.603681,22.132371],[113.597564,22.125115],[113.580194,22.109694],[113.578955,22.10893],[113.576328,22.108147],[113.561046,22.106214],[113.559643,22.106216],[113.553703,22.107469],[113.55353,22.110847],[113.553296,22.116852],[113.553297,22.120642],[113.553574,22.125144],[113.563949,22.127289],[113.563972,22.127298],[113.564018,22.127343],[113.56407,22.127443],[113.564391,22.128297],[113.564475,22.128366],[113.56446,22.128395],[113.564529,22.128445],[113.564552,22.128452],[113.564651,22.128477],[113.564798,22.128486],[113.567266,22.128386],[113.567475,22.128416],[113.56763,22.128485],[113.567778,22.128615],[113.567856,22.128713],[113.56789,22.128884],[113.568003,22.131992],[113.568107,22.132224],[113.568324,22.13235],[113.568618,22.132386],[113.571408,22.132306],[113.572257,22.132331],[113.573184,22.132482],[113.574068,22.132806],[113.574848,22.133293],[113.575827,22.134051],[113.57659,22.134553],[113.577257,22.134854],[113.57802,22.135012],[113.579329,22.135134],[113.580612,22.135239],[113.581375,22.135379],[113.582311,22.135821],[113.583056,22.136473],[113.584062,22.137923],[113.589178,22.14428],[113.601946,22.138113]]]}

数据说明

  • fences表可通过codeadcode表相连接。
  • fence使用PostGIS的GEOMETRY类型存储,底层类型为POLYGONMULTIPOLYGON(带有飞地)
  • 大约有300个县没有围栏数据,后续修正。
  • 一些虚拟行政区划的地理围栏理论上应当是子行政区的并集,也有待修正。

实用脚本

bin/fences用法同bin/adcode

Usage:bin/fences <action>action list:create  :   创建fences表,若已存在则会删除原表。index   :   在fences表上创建索引(注意,大批量插入时大量索引会严重拖慢插入速度)。order    :   排序重建fences,使其物理有序(rank,code ASC)drop :   删除fences表trunc  :   清空fences表clean  :   清空data/fences中的转储dump   :   将fences表以文本形式转储至data/fences/,提供adcode列表参数,则只转储对应数据load    :   从data/fences/文本转储导入fences表,提供adcode列表参数,则只导入对应数据backup    :   备份fences至data/backup/fences.sqlresotre  :   从备份data/backup/fences.sql恢复fencescheck  :   检查fences数据reload    :   清空fences表,并重新从data/fences中加载数据reset  :   删除并创建fences表setup   :   初始化:建表,加载数据,创建索引。usage :   显示fences控制脚本用法

其他

在项目顶层目录提供了makefile,可以对两个表同时执行同样的操作。

# 创建数据库
make createdb# 创建、加载、建立索引
make setup

中国行政区划代码,包括五级行政区划详细代码,县级以上区划地理围栏相关推荐

  1. 2022年最新全国各省五级行政区划代码及名称数据(省-市-区县-乡镇-村)

    1.数据来源:国家统计局 2.官方更新时间:2021年10月31日 3.数据样例: 包括字段:省份名称.城市代码.城市名称.区县代码.区县名称.乡镇街道代码.乡镇街道名称.居委会村代码.城乡分类代码. ...

  2. 全国行政区划代码(json对象)---只包含城市代号和城市名称的json对象代码(包括县级市)

    最简单的只包含城市代号和城市名称的json对象代码(包括县级市): var area = {"110000":"北京市","110100": ...

  3. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】

    作者:小棋子js 转发链接:https://www.jianshu.com/p/b5171efa340f JavaScript 是目前最流行的编程语言之一,正如大多数人所说:"如果你想学一门 ...

  4. 开放下载!《15分钟打造你自己的小程序》(内附详细代码)

    简介: 零基础开发你自己的支付宝小程序,教程在手不迷路,从入门到精通,还有详细代码在里面哦~ <15分钟打造你自己的小程序>独家电子书上线啦!零基础开发你自己的支付宝小程序,手把手教你从入 ...

  5. python random函数_详细代码实战讲解:如何用 Python让自己变成天选之子

    今天为大家带来的内容是:详细代码讲解:如何用 Python让自己变成天选之子 话不多说直接上代码: 请大家猜一猜下面这段代码的运行效果: 你是不是以为这段代码运行以后,结果如下图所示? 但实际上,我可 ...

  6. android Json解析详解(详细代码)

    android Json解析详解(详细代码)   JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当 ...

  7. x264 代码重点详解 详细分析

    eg mplayer x264 代码重点详解 详细分析 分类: ffmpeg 2012-02-06 09:19 4229人阅读 评论(1) 收藏 举报 h.264codecflv优化initializ ...

  8. ffmpeg mplayer x264 代码重点详解 详细分析

    ffmpeg和mplayer中求平均值得方法 1 ordinary c language level #define avg2(a,b) ((a+b+1)>>1) #define avg4 ...

  9. mask rcnn 超详细代码解读(一)

    mask r-cnn 代码解读(一) 文章目录 1 代码架构 2 model.py 的结构 3 train过程代码解析 3.1 Resnet Graph 3.2 Region Proposal Net ...

  10. hfss和python_利用Python与HFSS联合仿真设计一个微带天线(附详细代码)

    原标题:利用Python与HFSS联合仿真设计一个微带天线(附详细代码) 我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便.而该软件也预留了可以运行脚本的接口,使用者可以使用脚本对软 ...

最新文章

  1. python 培训-本人的Python自学历程分享
  2. 同大取大同小取小口诀图解_微信课堂:峦头九星砂体图解
  3. goland 方法注释_goland 设置注释模板的过程图文详解
  4. 【转】什么是磁珠(Ferrite Bead 即 FB)
  5. java的各种加载和初始化的详细过程
  6. 如何在MFC界面使用OCX控件
  7. Java xml格式化工具
  8. 路由器WIFI密码怎么设置?快速设置,只需1分钟
  9. 项目管理的5大过程/ 9大知识领域/44个子过程
  10. 打包jar包时文件读取和第三方jar包的问题
  11. 在AIX或Linux下,如何查看磁盘是否包含数据?
  12. c语言能求50的阶乘吗,c语言50的阶乘,这个for循环什么意思啊,有没有大佬解释一下...
  13. 埃安崛起,新能源汽车下半场
  14. 复睿智行CC++开发实习面试
  15. 为什么 Redis 不支持回滚(roll back)
  16. 当JAVA集合移除自身集合元素时发生的诸多问题
  17. XCode运行,提示build successed,无法启动模拟器
  18. android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)
  19. 北斗终端,北斗短报文终端,北斗指挥机,北斗终端,北斗通信卡的区分和定义
  20. java自己写不出来_第一次java考试(考试的时候没做出来自己回来写好的还是缺乏练习)...

热门文章

  1. excel 根据两点经纬度计算距离
  2. 水晶易表 Xcelsius 2008 安装指南 完美支持office2010
  3. j2ee与java区别_j2ee和java的区别是什么?
  4. TD-LTE原理及关键技术个人笔记(1)TD-LTE概述
  5. 《老友记》典故集解 Season 1-10
  6. iOS视频录制及gif图片制作
  7. 传说中的三核浏览器:Lunascape
  8. android mapabc 地图 无法 拖动、缩放问题
  9. 60款顶级大数据开源工具
  10. Tera Term使用说明