Code Monkey home page Code Monkey logo

gb2260's People

Contributors

billryan avatar damonchen avatar dependabot[bot] avatar eyrefree avatar ftao avatar gitter-badger avatar hugg95 avatar hye avatar juniel avatar lepture avatar shen2 avatar timothyqiu avatar tonyseek avatar windfarer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gb2260's Issues

pinyin data

Add pinyin name in txt files:

110000  北京市   běi-jīng-shì

Spec v1

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 的定义

  • revision - source 标注来源
  • load data 定义,支持多数据源
  • 空数据定义

语言实现

  • JavaScript
  • Swift
  • Python
  • Ruby
  • Java
  • Go

UI 实现

实现一组 UI picker 组件

  • React.js
  • Angular.js
  • Vue.js
  • iOS
  • Android

Spec v0.3

Notes on next release:

  1. file format: tsv
  2. tsv format: source revision code name
  3. revision format: yyyymm

IRC / librelist / Gitter

需要一个沟通工具,issue 还是不太适合讨论。大家投票选一下吧:

  1. IRC (freenode)
  2. Mail list (librelist)
  3. Gitter

另外还可以选 Slack 和 Bearychat,但是这两者不公开,不推荐使用。

JSON Data

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"
          }
          // ...
        }
      }
      // ...
    }
  }
  // ...
}

Spec 的数据结构中 year 允许为空不合理

目前的 Specification 中基础数据结构的 year 字段是这样的:

Optional. The revision year, and empty means "latest".

这么做的最大问题,就是对版本的依赖:例如 new GB2260("2014").get("110103").year 目前返回的是 null,但同样的客户代码,在若干年后更新了版本后返回的可能变成 2014,因为最新版本可能已经是 2018 年了。

其次,对 year 的这种处理,实际上是重载了这一字段的含义。使其不再表示单一的「年份版本」,同时还表示了「是否是最新版本」。而且从目前的 Spec 中还无法得知「最新版本」到底是哪一版。

我觉得在数据结构层面上允许为空,事实上让使用变得更加麻烦。可以仅在参数处允许用空值表示「最新版本」作为最新一年的缺省值,实际数据结构中始终用具体的年份,以达到统一。同时新增一个常量表示最新的版本的 year,以满足检查某个 Division 是否是最新版本的需求。

来源是否准确

查询资料的过程中,发现作为推荐标准的 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 年间的不是。

Spec 对历史查询不友好

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 可选范围,几乎无法进行编写。

the latest source.tsv

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

MCA 源中部分地级行政区缺失

MCA 源中,所有 revision 都有部分地级行政区缺失,例如 110101(北京东城区)对应的地级行政区 110100 不存在。(对应标准及 STATS 源中,该地级行政区为「市辖区」)

所有直辖市都有缺失情况,但也有其它省份存在特殊情况,例如 201801 版本中,以下县级行政区缺少对应的地级行政区:

济源市 河南省
仙桃市 湖北省
潜江市 湖北省
天门市 湖北省
神农架林区 湖北省
五指山市 海南省
琼海市 海南省
文昌市 海南省
万宁市 海南省
东方市 海南省
定安县 海南省
屯昌县 海南省
澄迈县 海南省
临高县 海南省
白沙黎族自治县 海南省
昌江黎族自治县 海南省
乐东黎族自治县 海南省
陵水黎族自治县 海南省
保亭黎族苗族自治县 海南省
琼中黎族苗族自治县 海南省
石河子市 **维吾尔自治区
阿拉尔市 **维吾尔自治区
图木舒克市 **维吾尔自治区
五家渠市 **维吾尔自治区
北屯市 **维吾尔自治区
铁门关市 **维吾尔自治区
双河市 **维吾尔自治区
可克达拉市 **维吾尔自治区
昆玉市 **维吾尔自治区

首先,这影响 Spec 中 Division.province 属性的定义,该属性只有在对省级行政区对象调用时才允许为空值。

其次,由于地级行政区缺失,使用 GB2260.provinces() & GB2260.prefectures(province_code) & GB2260.counties(prefecture_code) 三级遍历行政区划时,无法到遍历到这些县级行政区。

似乎需要想个解决方法。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.