cn / gb2260 Goto Github PK
View Code? Open in Web Editor NEW中华人民共和国国家标准 GB/T 2260 行政区划代码
中华人民共和国国家标准 GB/T 2260 行政区划代码
Each language implementation should have a maintainer.
Here is a list according to the current active status:
Agreed?
BTW @damonchen could you move Go lang implementation to cn group?
I have done a similar work in python-stdnum:
Is there any help we could take from it?
查询资料的过程中,发现作为推荐标准的 GB/T 2260,至少存在 GB/T 2260-2002 和 GB/T 2260-2007 两个版本,而且 GB/T 2260-2007 是直接代替 GB/T 2260-2002 的。
而 Repo 中从国家统计局网站抓取的数据,2002 至 2007 之间每一年都有新版本。这些数据显然不属于 GB/T 2260 的任何版本。
所以,似乎国家统计局网站上公布的行政区划代码实际上并不是 GB/T 2260 的代码。至少 2002 至 2007 年间的不是。
需要一个沟通工具,issue 还是不太适合讨论。大家投票选一下吧:
另外还可以选 Slack 和 Bearychat,但是这两者不公开,不推荐使用。
国家新发布的行政区划变更情况未入库
Source Revision URL Schema
mca 201802 http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804121005.html mca
mca 201712 http://www.mca.gov.cn/article/sj/tjbz/a/2018/201803131439.html mca
mca 201612 http://www.mca.gov.cn/article/sj/tjbz/a/2016/201612/201705311652.html mca
mca 201512 http://www.mca.gov.cn/article/sj/tjbz/a/2015/201706011127.html mca
mca 201412 http://files2.mca.gov.cn/cws/201502/20150225163817214.html mca
mca 201312 http://files2.mca.gov.cn/cws/201404/20140404125552372.htm mca
mca 201212 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201707271556.html mca
mca 201112 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201707271552.html mca
mca 201012 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220946.html mca
mca 200912 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220943.html mca
mca 200812 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220941.html mca
mca 200712 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220939.html mca
mca 200612 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220936.html mca
mca 200512 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220935.html mca
mca 200412 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220930.html mca
mca 200312 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220928.html mca
mca 200212 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220927.html mca
mca 200112 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220925.html mca
mca 200012 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220923.html mca
mca 199912 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220921.html mca
mca 199812 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220918.html mca
mca 199712 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220916.html mca
mca 199612 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220914.html mca
mca 199512 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220913.html mca
mca 199412 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220911.html mca
mca 199312 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708041023.html mca
mca 199212 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220910.html mca
mca 199112 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708041020.html mca
mca 199012 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708041018.html mca
mca 198912 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708041017.html mca
mca 198812 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220903.html mca
mca 198712 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220902.html mca
mca 198612 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220859.html mca
mca 198512 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220858.html mca
mca 198412 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708220856.html mca
mca 198312 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708160821.html mca
mca 198212 http://www.mca.gov.cn/article/sj/tjbz/a/1980-2000/201707141125.html mca
mca 198112 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708041004.html mca
mca 198012 http://www.mca.gov.cn/article/sj/tjbz/a/201713/201708040959.html mca
比如python branch,nodejs branch。这样如何?
我看.net 版本已经有了,但是没有列出来。
定义未找到 code 时返回什么?
目前的 Specification 中基础数据结构的 year
字段是这样的:
Optional. The revision year, and empty means "latest".
这么做的最大问题,就是对版本的依赖:例如 new GB2260("2014").get("110103").year
目前返回的是 null
,但同样的客户代码,在若干年后更新了版本后返回的可能变成 2014
,因为最新版本可能已经是 2018 年了。
其次,对 year
的这种处理,实际上是重载了这一字段的含义。使其不再表示单一的「年份版本」,同时还表示了「是否是最新版本」。而且从目前的 Spec 中还无法得知「最新版本」到底是哪一版。
我觉得在数据结构层面上允许为空,事实上让使用变得更加麻烦。可以仅在参数处允许用空值表示「最新版本」作为最新一年的缺省值,实际数据结构中始终用具体的年份,以达到统一。同时新增一个常量表示最新的版本的 year
,以满足检查某个 Division 是否是最新版本的需求。
Add pinyin name in txt files:
110000 北京市 běi-jīng-shì
Notes on next release:
tsv
source revision code name
yyyymm
GB2260 目前已经有 6 种语言实现了,各个语言的版本与 spec 的版本无法一一对应,打算新的 spec 从版本 1 开始,各语言的版本命名:spec-version.data-update.lang-version
比如新的 spec 为 v1,数据第 2 次更新,那么 cn/GB2260 这个库会打一个 1.2
的 tag,cn/GB2260.js 这个 JavaScript 的实现的版本则是 1.2.0
,JS 库修正自己代码的 bug 后有更新的话则版本变为 1.2.1
。
@cn/gb2260
完成 spec 的定义
实现一组 UI picker 组件
Generate a common JSON tree data for every language.
Here is a demo:
{
"11": {
"name": "北京市",
"code": "110000",
"prefectures": {
"1101": {
"name": "市辖区",
"code": "110100",
"counties": {
"110101": {
"name": "东城区",
"code": "110101"
},
"110102": {
"name": "西城区",
"code": "110102"
}
// ...
}
}
// ...
}
}
// ...
}
MCA 源中,所有 revision 都有部分地级行政区缺失,例如 110101
(北京东城区)对应的地级行政区 110100
不存在。(对应标准及 STATS 源中,该地级行政区为「市辖区」)
所有直辖市都有缺失情况,但也有其它省份存在特殊情况,例如 201801 版本中,以下县级行政区缺少对应的地级行政区:
济源市 河南省
仙桃市 湖北省
潜江市 湖北省
天门市 湖北省
神农架林区 湖北省
五指山市 海南省
琼海市 海南省
文昌市 海南省
万宁市 海南省
东方市 海南省
定安县 海南省
屯昌县 海南省
澄迈县 海南省
临高县 海南省
白沙黎族自治县 海南省
昌江黎族自治县 海南省
乐东黎族自治县 海南省
陵水黎族自治县 海南省
保亭黎族苗族自治县 海南省
琼中黎族苗族自治县 海南省
石河子市 **维吾尔自治区
阿拉尔市 **维吾尔自治区
图木舒克市 **维吾尔自治区
五家渠市 **维吾尔自治区
北屯市 **维吾尔自治区
铁门关市 **维吾尔自治区
双河市 **维吾尔自治区
可克达拉市 **维吾尔自治区
昆玉市 **维吾尔自治区
首先,这影响 Spec 中 Division.province
属性的定义,该属性只有在对省级行政区对象调用时才允许为空值。
其次,由于地级行政区缺失,使用 GB2260.provinces()
& GB2260.prefectures(province_code)
& GB2260.counties(prefecture_code)
三级遍历行政区划时,无法到遍历到这些县级行政区。
似乎需要想个解决方法。
kk
GB2260 本身并不向后兼容,例如北京崇文区 110103
在 2009 以后的版本中是不存在的。
目前的 Spec 中 GB2260
接口都必须对应到具体的年,与 GB2260 本身是一致的。那么通过 `new GB2260("2014").get("110103") 应该是得不到结果的。
目前的 Spec 不支持在各个历史版本中查询。例如查询 110103
可以:
GB2260.search("110103") // 在所有历史版本中查询
GB2260.search("110103", ["2009", "2011"]) // 在 2009 和 2011 版本中查询
// =>
{
"code": "110103",
"name": "崇文区",
"year": "2009",
}
GB2260.search("110103", ["2007", "2008"]) // 得到 2008 版本
如果想要基于目前的 Spec 实现这个函数的话,不带参数的版本因为 Spec 中未给出 year 可选范围,几乎无法进行编写。
GB2260 Code <-> Post Code
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.