12位村级代码怎么读:逐段拆解与真数据验证
技术专栏 · 数据处理 · 2026-10-11
最近写成都、重庆、广州三篇村界数据的文章,「按村级码前 6 位分区」这句话反复出现。它为什么成立?这一串 12 位数字里每一段到底是什么?空口讲规则容易,拿真数据验证才踏实——本轮解析了铜鼓县、宜丰县、广州市三份村界包共 3,082 个村级码,把五段结构逐一验证,连教科书规则在真实数据里对不上的地方也都挖了出来。
五段结构:2+2+2+3+3
以一个真实码为例——成都锦江区的棬子树村,村级码 510104035200,从左到右切五刀:
前 6 位就是县级行政区划代码,本级一层层套上去:51 是四川、5101 是成都、510104 是锦江区。7-9 位是乡镇街道——三份包里去重后的数量分别是铜鼓 13 个、宜丰 55 个、广州 176 个,乡镇街道加各类场站的量级。也就是说,一个 12 位码自带五级归属,靠字符串切片就能逐级汇总,不需要任何空间计算。
结构完整性先验证一遍:三份包 3,082 个码,长度不是 12 位的 0 个、含非数字字符的 0 个。前 6 位的去重数也对得上行政区划常识——铜鼓全县只有 1 个码 360926,宜丰 1 个码 360924,广州 11 个码正好对应 11 个区。
末三位才是身份:居委会、村委会,还有一段「其他」
前 9 位定位到「地方」,末三位回答「这个地方是什么」。实测分布:
| 末三位段 | 铜鼓县(97) | 宜丰县(354) | 广州市(2,631) |
|---|---|---|---|
| 001–099(居委会 / 社区类) | 2 | 44 | 974 |
| 101–199(社区类,城市化地区) | 0 | 0 | 498 |
| 200–399(村委会类) | 90 | 251 | 1,140 |
| 400–599(其他:场 / 库 / 站) | 5 | 59 | 19 |
拿名称后缀做交叉验证:铜鼓 2 个「社区」全部落在 001–099,90 个「村」全部落在 200–399,命中率 100%;宜丰的社区同样命中,209 个村名单元里 205 个落在 200–399。规则在真实数据里站得住,但下面两节是它站不稳的地方。
400–599 里住着林场、农场和共管面
「其他」段是名单最有意思的一段。铜鼓 5 个非村非社区单元全是林场:茶山林场、龙门林场、花山林场、大沩山林场四个落在 598,城郊林场落在 501;广州的 19 个里有圭沙农场(598)、民生农场(500)和南沙的一串管理区;宜丰的 59 个里则是黄岗山垦殖场的各个分场(505、510)。
宜丰还有一类特殊名字:「同安乡党田村与同安村争」「潭山镇店上村与潭山村争」——这是共管面,两个村对同一片地共同管辖,登记时连名。它们的末三位在 401、403 一带,名称却以「村…争」收尾,按名称后缀做分类时这 4 个会被误判。所以从名称猜类型不如直接看末三位,反过来用末三位反查类型更要留意共管面的存在。
广州多出一段 101–199
对照表里最扎眼的数字是广州的 498——两份县包里完全缺席的 101–199 段,在广州被 497 个「社区」外加 1 个单元占满。城市化的推进让社区数量远超 001–099 一段的容量,101–199 段被用作了社区的第二段。换句话说,末三位的分段在不同发达程度的地区丰俭不一:山地县两段够用,超大城市四段齐上。拿着「社区一定在 001–099」的固定假设去广州筛数据,会漏掉一半社区。
验证脚本不长,核心就是按段计数加后缀交叉:
const l3 = +code.slice(9); // 末三位转数字
const range = l3 <= 99 ? '001-099'
: l3 <= 199 ? '101-199'
: l3 <= 399 ? '200-399'
: l3 <= 599 ? '400-599' : '600+';
const isShequ = name.endsWith('社区') || name.endsWith('居委会');
const isCun = name.endsWith('村') && !isShequ;
// 交叉记录:社区是否落在 0 段、村是否落在 2 段
if (isShequ) l3 <= 99 ? hit0++ : miss0++;
if (isCun) (l3 >= 200 && l3 <= 399) ? hit2++ : miss2++;
四个用法,记码就够
按县、按市、按省汇总:取前 6、4、2 位分组。按乡镇汇总:取前 9 位,记得乡镇级里也混着场站。区分村居类型:直接看末三位段,别猜名称。校验数据:先查长度与纯数字,再查前 6 位与已知区划代码的一致性。代码与名称的双向查询可以用本站的行政区划码查询工具,五级代码本地检索即时出结果。
这套编码体系贯穿本站全部村界商品:按市购买的每个包里,村界数据 · 按市的每个面要素都带完整 12 位村级码字段,与《广州2,631个村界装进一张图:geojson整包下载》《下载成都市村界geojson:20区县一个包全拿》两篇里的分区脚本同源。数据质量层面的问题(缝隙、重叠)见《边界数据拓扑检查:一段脚本查出缝隙与重叠》。
常见问题
- 12 位村级代码每一位是什么含义?
- 五段结构 2+2+2+3+3:第 1-2 位是省,第 3-4 位是地级市,第 5-6 位是区县,第 7-9 位是乡镇街道,第 10-12 位是村级单元本身。前 6 位合起来就是县级行政区代码,例如 510104 是成都市锦江区;用村级码前 6 位分组即可完成任何按县、按市、按省的汇总,无需空间计算。
- 怎么从代码区分村和社区?
- 看末三位。实测三份村界包:名称以「村」结尾的单元 95% 到 100% 落在 200-399 段(村委会类),「社区」「居委会」类单元集中在 001-099 段。广州这类高度城市化的包还会启用 101-199 段承接社区(实测 498 个),林场、农场、垦殖场等单元则落在 400-599 段(如 598 的林场、500 的农场)。
- 为什么村级码和区划名称对不上?
- 两种情况。一是名称沿用旧称而代码已更新(如开县与开州区),此时以代码为准;二是名称字段为空或字段值互相矛盾,此时同样回到代码。代码由统计口径统一维护,比名称稳定得多,按代码统计、再映射现名是稳妥顺序。
- 「A村与B村争」这类单元名是怎么回事?
- 这是共管面:两个村级单元对同一片土地存在共同管辖,数据里以连名形式登记(实测宜丰县有多个「同安乡党田村与同安村争」式单元)。它们的村级码独立、边界独立,统计时按名称前缀或代码归入主导村即可,不宜拆分。
- 在哪里能查一个村级代码对应的地方?
- 本站的行政区划码查询工具支持省、市、区县、乡镇街道、村五级代码与名称的双向检索,浏览器本地完成。村界数据商品里每个面要素都带完整 12 位村级码字段,与查询工具使用同一套编码体系。