GeoJSONcn
GeoJSONcn / 技术专栏 / 行政区划代码怎么配 GeoJSO…

行政区划代码怎么配 GeoJSON 下载?9位12位五级编码与统计库vs民政部区别

发布于 2026-09-01 · GeoJSONcn 技术团队 · 阅读约 7 分钟

刚接手全国省市区县区划边界数据下载这摊子活的时候,我被一串 12 位数字坑过一次:拿到一份村级 GeoJSON,想把它的 properties.adcode 跟我手里的行政编码比对,结果一个编码都配不上。后来才搞明白,我手里那份是"统计用城乡划分代码",跟民政部标准的行政区划代码差着一段规则。这篇文章把两者掰扯清楚,顺便说说它们怎么跟 GeoJSON 数据下载配对。

一、先分清两套代码:面向机构 vs 面向统计

中国行政区划代码在国内数据圈里常混着两种口径,长得都像 9 位或 12 位纯数字,但来源和用途差别很大。

口径常见位数编码规则主要发布方
现行县级以上行政区划代码6 位(可扩到 9 位)省 2 位 + 地市 2 位 + 区县 2 位,乡镇街道后续拨 3 位民政部
统计用区划与城乡划分代码12 位前 9 位同行政区划代码 + 村级 3 位(01/02/03…),末尾可带城乡属性码国家统计局

民政部这套是"法定"版,描述的是行政区划的真实层级关系;统计局这套在其上多叠了两层村级编码,所以村一级代码只能在统计局口径里拿到。做 GeoJSON 数据下载时,如果你要的是乡镇街道以上边界,两套基本能对上;一旦落到村,就得确认源数据的口径。

二、12 位代码到底怎么切成五级

一位一位拆开看,其实就是一个前缀树。以 110105030001 为例:

11 01 05 030 001
│  │  │  │   │
省 市 区  镇  村    → 北京市/朝阳区/某街道/某社区

前 6 位 110105 是朝阳区的区县级代码,再往后 030 是该街道在区内的顺序号,001 是该社区在街道内的顺序号。每一级只需要知道自己的前缀,就能在上一级目录里定位父级。这也是为什么 GeoJSON 按 adcode 前缀做分块下载、按需加载特别顺手——11 开头的直接落到北京那一包。

// adcode → 四级前缀(省/市/区仅取其 2+2+2 位)
function codeLevels(code) {
  return {
    province: code.slice(0, 2),
    city:     code.slice(0, 4),
    district: code.slice(0, 6),
    street:   code.slice(0, 9),
  };
}

这套分层逻辑对分级设色、拓扑合并、按块懒加载都很有用,series-33 里讲的前缀切分,本质就是吃这套编码红利。

三、代码变更才是大坑:拆并、更名、位数不齐

比编码规则更磨人的,是历史变更。区县撤并会直接让前 6 位失效,乡镇改街道只是名字变、代码不变,偶尔还会出现同一区域两个版本代码并存(新旧区划过渡期)。拿 GeoJSON 数据下载去比对时,我踩过的典型坑有三个:

1. 新旧代码混在一个源里:2022 年前后的区县调整,老代码 3605xx 仍大量出现在历史数据里,先做拆分/合并映射再匹配。 2. 乡镇级代码位数不齐:有时只给到 3 位顺序号,没有补齐到 9 位,直接 join 就会对空。 3. 村级 12 位末尾带城乡属性码:统计局代码偶尔把"城镇/乡村"属性混进后几位,比对时先截断或归一化。

我的做法是维护一张"平铺基准表":以全国省市区县乡镇街道村 geojson 数据的官方最新版为准,把每个实体的 9 位/12 位代码、名称、父级前缀建成一张扁表,所有下载数据都拿它做 join 与校验。这样即使源变了,基准不变,diff 一眼能看出哪批边界代码过期了。

顺带说一句,GeoJSON下载回来的包里 adcode 字段很不统一,有的叫 properties.adcode、有的叫 adcode9,命名各家自定。下载前先看表的 schema,别拿 12 位去匹配 9 位字段——这一步看似琐碎,却是"代码配不上 GeoJSON"最常见的根因。

四、这套规则怎么落到下载与校验

落到产品上,最值钱的是两点:一是给每个 GeoJSON 数据包标注它用的口径(民政部/统计局)和代码版本,别人下载就不会犯我当年的错;二是做一个代码查询与行政区代码校验入口,用户黏着它就能自测自己的 adcode 拼得对不对。

要做到位其实不复杂:数据侧定期同步民政部与统计局两份代码,做差集标记变更;查询侧按前缀增量建索引,一次命中省市区县乡镇村任意一级。预览免费、导出付费(按次 ¥1.99)这套付费节奏不变,代码校验这类轻查询依然免费开放。

小结

行政区划代码不是一串冰冷数字,它是全国省市区县区划边界数据下载里最可靠的"主键"。分清民政部与统计局两套口径,吃透 12 位前缀切分,再处理好拆并更名带来的版本漂移,你的 GeoJSON 数据下载、匹配、校验就能少踩一半坑。下回再拿到一批村级 GeoJSON,别急着画图,先看它的 adcode 是哪个口径的——这个习惯能帮你省一整个下午。