问题1. 中国行政区划特点

地址库的区划标准为国家(民政部、国统局)正式行政区划(国标),它们具有健全的行政管理机构(人民政府等部门)。国统局的行政区划可参见最新县及县以上行政区划代码,每年发布一个版本,不在列表的都不是国家正规行政区划。

  1. 行政区划级别。现行地址库支持4级行政区划,地址库为每一个级别编制了divisionLevel(divisionLevel=1为国家),代码中对级别的判定应该使用divisionLevel:

    一级(divisionLevel=2):省、自治区、直辖市、特别行政区

    二级(divisionLevel=3):地级市、地区、盟、自治州

    三级(divisionLevel=4):县、区、自治县、旗

    四级(divisionLevel=5):乡、镇、街道行政区划级别

  2. 行政区划跳级。“省-市-区”的三级结构并不一定是完整的,有两类跳级区划处理要特别小心,地址库方法提供promotion属性对此提供支持,代码应根据业务场景酌情使用,现有跳级区域参考“特殊区划列表”。

    无区市:目前为东莞市、中山市、三亚市、嘉峪关市,这些地级市下面没有区,直接挂镇,例如“广东省-东莞市-莞城街道”,如果依据“省-市-区”结构进行解析,会将镇解析为区,出现严重错误。无区市已经是前三级的叶子节点,有些业务会将其作为区处理。

    省辖县:这类县(县级市)直接挂在省下面,全国一共有28个,例如“湖北省-天门市”、“海南省-安定县”,这种区划的处理要更为小心,有些业务需要将县提到市的级别进行处理,例如发货地“湖北省天门市”;如果是4级地址,会出现类似无区市的问题,例如“湖北省-天门市-竟陵街道”。

  3. 各类开发区。如开发区、经济开发区、经济技术开发区、高新区⋯⋯这是一类为了经济管理设立的职能区划,不是独立的正规行政区划,从行政管理上来说一定属于前面提到的标准行政区划,例如“苏州市工业园区”属于“姑苏区”,“成都市高新区”属于“武侯区”。这不是地址库的标准区划,但由于习俗,很多人也会误将这类开发区当成行政区划,地址库对这类区划的处理方式是“前端引导,后端强制标准化,对外适配”。

  4. 行政区划变更。行政区划不是一成不变的,前三级行政区划每年变化数都超过10个,包括改名、升级、撤销、合并;但为了统计和使用方便,大多数机构通常不会对行政区划进行实时变更,例如国统局每年发布一次最新行政区划,地址库也采取了类似策略。

  5. 行政区划编码。每个行政区划都有一个数字编码,例如“浙江省”为330000,“杭州市”为330100,西湖区为330106,地址库对应字段为divisionId或者areaId(不是areaCode)。编码数字从形式上具有“父子关系”,但严禁使用id进行区划类型或者父子关系判断,一是没有事实上的这种规约,二是地址库的部分行政区划id已经失去了这种特点。