https://github.com/wecatch/china_regions
主要项目代码是china_regions,在此基础上,增加了make_region.py 脚本。 创建了mysql-region 文件夹。使用 6 位区号。mysql使用一张表
CREATE TABLE `region` (
`id` varchar(10) NOT NULL COMMENT '地区编号',
`name` varchar(50) NOT NULL COMMENT '地区名称',
`parent_id` varchar(10) DEFAULT NULL COMMENT '地区父id',
`level` int(2) DEFAULT NULL COMMENT ' 1-省、自治区、直辖市 2-地级市, 3-市辖区、县',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='地区表';
使用地区编号做主键,6位的号。
最全最新**省,市,地区 json 及 sql 数据,自动抓取国标 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 数据,并且自动生成 JavaScript es6 module 以及 sql 数据。
最新国标行政区规划最低到居委会这一级别了,行政区代码代码也变长了,不包含港澳台信息,按需所需不同的版本,见 https://github.com/wecatch/china_regions/releases
http://wecatch.me/china_regions/
数据分 json、es6 module、sql 三种格式存储,es6 module 和 sql 是根据 json 自动生成,json 数据又是根据最新国标生成,
├── js # js module 格式
├── json # json 格式
├── mysql # mysql sql 格式
直接拷贝 json 和 es6 文件可直接使用,也可以根据对应的语言生成不同的模块。
Village 数据文件特别大,默认不包含在仓库中,可以 clone 仓库,在 src 中解压 village 的压缩文件,然后执行 python makedata.py
仓库中的现在的数据是根据最新国标生成,如果在使用中发现国标有变动,可以手动进行更新,需要有 node8 或更高环境:
- git clone 本仓库
- yarn install 或者 npm install
- 移除 src 目录下的 json 文件:
├── city.json
├── country.json
├── province.json
├── source.json
├── town.json
└── village.json
- 打开 main.js 文件,取消对 main 函数执行的注释,开始执行
node main.js
,一般情况下可以顺利爬取到 province、 city、country 的信息 - 利用已经爬取的 province、city、country 开始同步其他行政区域的信息,注释掉 main 函数根据需要分别打开 pullTownDataSync、pullVillageDataSync 爬取其他行政区域的信息,注释事项见函数注释
- 最后执行
python makedata.py
生成各种格式文件
根据 town 爬取的 village 数据非常大,默认情况下不会自动生成 village 的信息,可以根据自己的需要 clone 仓库之后自己生成
行政级别顺序是:province-> city --> country --> town --> village,对应的是:省->市(市辖区)->县(区、市)->镇(街道)->村(居委会)
爬取 village 时由于数据量特别大会导致 nodejs 出现内存泄漏的情况,所以每次增量更新文件时会自动进行文件备份,生成 src/village_backup.json
备份文件不进仓库,最后再手动干预偏移量
village 的数据文件是压缩过的解压执行 tar xvfz village.tar.gz .
默认情况下不生成 village 这个级别的数据,如果需要请执行 makedata.py
如果国标页面 html 结构发生变化,请提 issue。
更新到 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/index.html 2020 最新数据
fix #17 针对东莞市 中山市 儋州市三个不设区的市单独处理,
这三个市没有区,直接到镇 town,镇的上一级就是市,开发者可以根据自己的情况特殊处理,详见 src/special_city.json
,SQL 数据包含在 town.sql 中
- fix #16
- 更新数据生成的方式
- 校验数据生成是否准确
cat src/village.json | grep id | wc -l
==wc -l mysql/village.sql
- 更新数据抓取方式,使用 nodejs 抓取
- 更新数据到最新的 2018 国标
- 移除对 sqlite 以及 postgresql 的