Browse Source

docs: 更新 README 文件

modood 7 years ago
parent
commit
52f7657906
1 changed files with 196 additions and 65 deletions
  1. 196 65
      README.md

+ 196 - 65
README.md

@@ -6,82 +6,90 @@
 [![downloads](https://img.shields.io/npm/dt/china-division.svg)](https://www.npmjs.com/package/china-division)
 [![license](https://img.shields.io/badge/license-WTFPL%20--%20Do%20What%20the%20Fuck%20You%20Want%20to%20Public%20License-green.svg)](https://raw.githubusercontent.com/modood/Administrative-divisions-of-China/master/LICENSE)
 
-中华人民共和国行政区划:省份、城市、区县、乡镇(街道)
+中华人民共和国行政区划(五级):
 
-*   数据来源(民政部、国家统计局):
+*   省级(省份、直辖市、自治区)
+*   地级(城市)
+*   县级(区县)
+*   乡级(乡镇、街道)
+*   村级(村委会、居委会)
+
+## 数据来源
+
+*   民政部、国家统计局:
     * [中华人民共和国民政部-中华人民共和国行政区划代码](http://www.mca.gov.cn/article/sj/tjbz/a/)
-    * [中华人民共和国国家统计局-行政区划代码](http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/)
     * [中华人民共和国国家统计局-统计用区划和城乡划分代码](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/)
     * [中华人民共和国国家统计局-统计用区划代码和城乡划分代码编制规则](http://www.stats.gov.cn/tjsj/tjbz/200911/t20091125_8667.html)
 *   本项目已更新至:
-    * [最新县及县以上行政区划代码(截止时间:2016-07-31,发布时间:2017-03-10)](http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html)
     * [2016年统计用区划代码和城乡划分代码(截止时间:2016-07-31,发布时间:2017-05-16)](http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/index.html)
 
-## JSON
-
-| 文件列表                                     | 下载地址       |
-|:---------------------------------------------|:---------------|
-| 省份数据                                        | [provinces.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/provinces.json) |
-| 城市数据                                        | [cities.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/cities.json) |
-| 区县数据                                        | [areas.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/areas.json) |
-| 乡镇(街道)数据                                | [streets.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/streets.json) |
-| “省份、城市” 二级联动数据                       | [pc.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pc.json) |
-| “省份、城市” 二级联动数据(带编码)             | [pc-code.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pc-code.json) |
-| “省份、城市、区县” 三级联动数据                 | [pca.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pca.json) |
-| “省份、城市、区县” 三级联动数据(带编码)       | [pca-code.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pca-code.json) |
-| “省份、城市、区县、乡镇” 四级联动数据           | [pcas.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pcas.json) |
-| “省份、城市、区县、乡镇” 四级联动数据(带编码) | [pcas-code.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pcas-code.json) |
+## 数据下载
 
-> 提示:需要打包下载全部文件,请看 [Releases](https://github.com/modood/Administrative-divisions-of-China/releases)。
+| 文件列表                     | JSON | CSV |
+|:-----------------------------|:-----|:----|
+| 省级(省份、直辖市、自治区) | [provinces.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/provinces.json) | [provinces.csv](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/provinces.csv) |
+| 地级(城市)                 | [cities.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/cities.json) | [cities.csv](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/cities.csv) |
+| 县级(区县)                 | [areas.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/areas.json) | [areas.csv](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/areas.csv) |
+| 乡级(乡镇、街道)           | [streets.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/streets.json) | [streets.csv](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/streets.csv) |
+| 村级(村委会、居委会)       | [villages.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/villages.json) | [villages.csv](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/villages.csv) |
 
-## Usage
+| 文件列表                                    | 普通 | 带编码 |
+|:--------------------------------------------|:-----|:-------|
+| “省份、城市” 二级联动数据                   | [pc.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pc.json) | [pc-code.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pc-code.json) |
+| “省份、城市、区县” 三级联动数据             | [pca.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pca.json) | [pca-code.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pca-code.json) |
+| “省份、城市、区县、乡镇” 四级联动数据       | [pcas.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pcas.json) | [pcas-code.json](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/pcas-code.json) |
+| “省份、城市、区县、乡镇、村庄” 五级联动数据 | - | - |
 
-抓取并导出最新数据
+> 提示:需要打包下载全部文件,请看 [Releases](https://github.com/modood/Administrative-divisions-of-China/releases)。
 
-```
-$ npm install
+## 数据更新
 
-$ npm run build
 ```
+$ yarn
+$ npm run fetch
 ```
-[1/1] 正在抓取省份、城市和区县数据...
-[1/2848] 正在抓取乡镇数据,当前区县: 110105 朝阳区
-[2/2848] 正在抓取乡镇数据,当前区县: 110101 东城区
-[3/2848] 正在抓取乡镇数据,当前区县: 110106 丰台区
-[4/2848] 正在抓取乡镇数据,当前区县: 110109 门头沟区
-[5/2848] 正在抓取乡镇数据,当前区县: 110112 通州区
-[6/2848] 正在抓取乡镇数据,当前区县: 110102 西城区
-[7/2848] 正在抓取乡镇数据,当前区县: 110107 石景山区
-[8/2848] 正在抓取乡镇数据,当前区县: 110111 房山区
-[9/2848] 正在抓取乡镇数据,当前区县: 110108 海淀区
-[10/2848] 正在抓取乡镇数据,当前区县: 110113 顺义区
-...
-[2841/2848] 正在抓取乡镇数据,当前区县: 659006 铁门关市
-[2842/2848] 正在抓取乡镇数据,当前区县: 210522 桓仁满族自治县
-[2843/2848] 正在抓取乡镇数据,当前区县: 210881 盖州市
-[2844/2848] 正在抓取乡镇数据,当前区县: 130902 新华区
-[2845/2848] 正在抓取乡镇数据,当前区县: 150782 牙克石市
-[2846/2848] 正在抓取乡镇数据,当前区县: 542421 那曲县
-[2847/2848] 正在抓取乡镇数据,当前区县: 610122 蓝田县
-[2848/2848] 正在抓取乡镇数据,当前区县: 610322 凤翔县
-[1/5] 正在导出 “省份” JSON 数据...
-[2/5] 正在导出 “城市” JSON 数据...
-[3/5] 正在导出 “区县” JSON 数据...
-[4/5] 正在导出 “乡镇” JSON 数据...
-[5/5] 数据抓取完成!
-[1/4] 正在导出 “省份、城市” 二级联动数据...
-[2/4] 正在导出 “省份、城市、区县” 三级联动数据...
-[3/4] 正在导出 “省份、城市、区县、乡镇” 四级联动数据...该步骤操作数据较多,比较耗时,请耐心等候...
-[4/4] 数据更新完成!
 ```
+[1/1]正在抓取省级数据...
 
->  提示:
->
->  由于抓取乡镇数据为异步操作,每次输出的乡镇数据顺序可能不同
->
->  但是不会影响其它数据的顺序以及所有数据的完整性。
+[1/31]正在抓取地级数据,当前省级:11 北京市
+[2/31]正在抓取地级数据,当前省级:12 天津市
+[3/31]正在抓取地级数据,当前省级:13 河北省
+[4/31]正在抓取地级数据,当前省级:14 山西省
+...
+[29/31]正在抓取地级数据,当前省级:63 青海省
+[30/31]正在抓取地级数据,当前省级:64 宁夏回族自治区
+[31/31]正在抓取地级数据,当前省级:65 新疆维吾尔自治区
+
+[1/344]正在抓取县级数据,当前地级:1101 市辖区
+[2/344]正在抓取县级数据,当前地级:1201 市辖区
+[3/344]正在抓取县级数据,当前地级:1301 石家庄市
+[4/344]正在抓取县级数据,当前地级:1302 唐山市
+...
+[342/344]正在抓取县级数据,当前地级:6542 塔城地区
+[343/344]正在抓取县级数据,当前地级:6543 阿勒泰地区
+[344/344]正在抓取县级数据,当前地级:6590 自治区直辖县级行政区划
+
+[1/2856]正在抓取乡级数据,当前县级:110101 东城区
+[2/2856]正在抓取乡级数据,当前县级:110102 西城区
+[3/2856]正在抓取乡级数据,当前县级:110105 朝阳区
+[4/2856]正在抓取乡级数据,当前县级:110106 丰台区
+...
+[2854/2856]正在抓取乡级数据,当前县级:659003 图木舒克市
+[2855/2856]正在抓取乡级数据,当前县级:659004 五家渠市
+[2856/2856]正在抓取乡级数据,当前县级:659006 铁门关市
+
+[1/42951]正在抓取村级数据,当前乡级:110101001 东华门街道办事处
+[2/42951]正在抓取村级数据,当前乡级:110101002 景山街道办事处
+[3/42951]正在抓取村级数据,当前乡级:110101003 交道口街道办事处
+[4/42951]正在抓取村级数据,当前乡级:110101004 安定门街道办事处
+...
+[42949/42951]正在抓取村级数据,当前乡级:659004502 兵团一零三团
+[42950/42951]正在抓取村级数据,当前乡级:659006100 博古其镇
+[42951/42951]正在抓取村级数据,当前乡级:659006101 双丰镇
+[100%] 数据抓取完成!
+```
 
-## Testing
+## 数据校验
 
 ```
 $ npm test
@@ -89,18 +97,141 @@ $ npm test
 > eslint . && mocha -t 5000
 
   中华人民共和国行政区划:
-    ✓ 省份数据
-    ✓ 城市数据
-    ✓ 区县数据
-    ✓ 乡镇数据
+    ✓ “一级” 省级(省份、直辖市、自治区)数据
+    ✓ “二级” 地级(城市)数据
+    ✓ “三级” 县级(区县)数据
+    ✓ “四级” 乡级(乡镇、街道)数据
+    ✓ “五级” 村级(村委会、居委会)数据
+
+  联动数据
     ✓ “省份、城市” 二级联动数据
     ✓ “省份、城市、区县” 三级联动数据
     ✓ “省份、城市、区县、乡镇” 四级联动数据
     ✓ “某省、某市、某县、某镇” 不存在
 
-  8 passing (12ms)
+  9 passing (37ms)
 ```
 
+## 数据库支持
+
+目前本项目抓取的数据保存在 sqlite3,数据文件下载:[sqlite.data](https://github.com/modood/Administrative-divisions-of-China/blob/master/dist/sqlite.data)。
+
+可以自己将数据迁移到其他数据库管理系统中(MySQL, Oracle, MSSQL 等)。
+
+**省级数据模型**
+
+```sql
+CREATE TABLE IF NOT EXISTS `province` (
+  `code` VARCHAR(255) PRIMARY KEY,
+  `name` VARCHAR(255)
+);
+```
+
+数据预览:
+
+| code | name   |
+|:-----|:-------|
+| 11   | 北京市 |
+| 12   | 天津市 |
+
+**地级数据模型**
+
+```sql
+CREATE TABLE IF NOT EXISTS `city` (
+  `code` VARCHAR(255) PRIMARY KEY,
+  `name` VARCHAR(255),
+  `provinceCode` VARCHAR(255)
+    REFERENCES `province` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE
+);
+```
+
+数据预览:
+
+| code | name     | provinceCode |
+|:-----|:---------|:-------------|
+| 1301 | 石家庄市 | 13           |
+| 1302 | 唐山市   | 13           |
+| 1303 | 秦皇岛市 | 13           |
+
+**县级数据模型**
+
+```sql
+CREATE TABLE IF NOT EXISTS `area` (
+  `code` VARCHAR(255) PRIMARY KEY,
+  `name` VARCHAR(255),
+  `cityCode` VARCHAR(255)
+    REFERENCES `city` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE,
+  `provinceCode` VARCHAR(255)
+    REFERENCES `province` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE
+);
+```
+
+数据预览:
+
+| code   | name     | cityCode | provinceCode |
+|:-------|:---------|:---------|:-------------|
+| 110105 | 朝阳区   | 1101     | 11           |
+| 110106 | 丰台区   | 1101     | 11           |
+| 110107 | 石景山区 | 1101     | 11           |
+
+**乡级数据模型**
+
+```sql
+CREATE TABLE IF NOT EXISTS `street` (
+  `code` VARCHAR(255) PRIMARY KEY,
+  `name` VARCHAR(255),
+  `areaCode` VARCHAR(255)
+    REFERENCES `area` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE,
+  `cityCode` VARCHAR(255)
+    REFERENCES `city` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE,
+  `provinceCode` VARCHAR(255)
+    REFERENCES `province` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE
+);
+```
+
+数据预览:
+
+| code      | name             | areaCode | cityCode | provinceCode |
+|:----------|:-----------------|:---------|:---------|:-------------|
+| 110101001 | 东华门街道办事处 | 110101   | 1101     | 11           |
+| 110101002 | 景山街道办事处   | 110101   | 1101     | 11           |
+| 110101003 | 交道口街道办事处 | 110101   | 1101     | 11           |
+
+**村级数据模型**
+
+```sql
+CREATE TABLE IF NOT EXISTS `village` (
+  `code` VARCHAR(255) PRIMARY KEY,
+  `name` VARCHAR(255),
+  `streetCode` VARCHAR(255)
+    REFERENCES `street` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE,
+  `areaCode` VARCHAR(255)
+    REFERENCES `area` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE,
+  `cityCode` VARCHAR(255)
+    REFERENCES `city` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE,
+  `provinceCode` VARCHAR(255)
+    REFERENCES `province` (`code`)
+    ON DELETE SET NULL ON UPDATE CASCADE
+);
+```
+
+数据预览:
+
+| code         | name       | streetCode | areaCode | cityCode | provinceCode |
+|:-------------|:-----------|:-----------|:---------|:---------|:-------------|
+| 620723101213 | 新民村委会 | 620723101  | 620723   | 6207     | 62           |
+| 620723102201 | 大寨村委会 | 620723102  | 620723   | 6207     | 62           |
+| 620723102202 | 长庄村委会 | 620723102  | 620723   | 6207     | 62           |
+
 ## Stargazers over time
 
 [![Stargazers over time](https://starcharts.herokuapp.com/modood/Administrative-divisions-of-China.svg)](https://starcharts.herokuapp.com/modood/Administrative-divisions-of-China)
@@ -115,4 +246,4 @@ $ npm test
 
 ## License
 
-this repo is released under the [WTFPL](http://www.wtfpl.net/) – Do What the Fuck You Want to Public License.
+This repo is released under the [WTFPL](http://www.wtfpl.net/) – Do What the Fuck You Want to Public License.