中国行政区划数据:民政部更新机制、行政代码 vs 邮编、为什么各地图不一样

· 约 4 分钟 🗺️ 行政区查询

行政区划是各种业务的基础数据:用户地址、配送范围、本地推荐、统计分析。但行政区划本身不是静态的——撤县设市、合并区划、新设国家级新区每年都有。理解数据来源、编码逻辑、变更机制,才能维护好这套数据。

中国行政层级

中央
 ├─ 省级(34)
 │   ├─ 省(23)
 │   ├─ 自治区(5)
 │   ├─ 直辖市(4)
 │   └─ 特别行政区(2)

 ├─ 地级(约 333)
 │   ├─ 地级市
 │   ├─ 自治州
 │   ├─ 地区
 │   └─ 盟(仅内蒙古)

 ├─ 县级(约 2843)
 │   ├─ 市辖区
 │   ├─ 县级市
 │   ├─ 县
 │   ├─ 自治县
 │   ├─ 旗(仅内蒙古)
 │   └─ 林区(仅湖北神农架等)

 ├─ 乡级(约 38000+)
 │   ├─ 镇
 │   ├─ 乡
 │   ├─ 街道
 │   └─ 民族乡

 └─ 村级(约 660000+)
     ├─ 村委会
     └─ 居委会

数字会随调整变化,浮动几个到几十个/年。

6 位行政代码的结构

国家标准 GB/T 2260《中华人民共和国行政区划代码》:

PP CC DD
│  │  └─ 县/区(00 = 该市本级)
│  └─ 地级市(00 = 该省本级)
└─ 省级

例子:

代码含义
110000北京市(省级本级)
110100北京市辖区(地级合集)
110108北京市海淀区
130000河北省
130100河北省石家庄市
130102河北省石家庄市长安区
110200(历史)北京市辖县 — 已废止

省级编码不连续

代码省级
11北京
12天津
13河北
14山西
15内蒙古
21辽宁
22吉林
23黑龙江
31上海
32江苏
65新疆
71台湾
81香港
82澳门

跳号的位置(16-20、24-30 等)是历史预留——预留给可能的省级行政区调整。

行政代码会变,老数据库要做映射

很多人以为行政代码不变——完全错误。区划调整时旧代码废弃,新代码启用:

调整老代码新代码
北京撤销宣武区并入西城区(2010)110104 宣武区并入 110102 西城区
北京原崇文区并入东城区(2010)110103 崇文区并入 110101 东城区
杭州临安撤市设区(2017)330185 临安市改 330112 临安区
雄安新区设立(2017)130600 系列新设
重庆撤销万县市改万州区(多年前)多个老代码500101 等

实务后果

  • 老订单 / 老用户档案存的是历史代码,匹配不上新数据
  • 必须维护一份”老→新”映射表
  • 民政部发布的调整公告里有迁移指南

本工具内置近年主要变更映射,老代码查询能正常返回当前对应区划。

邮编、行政代码、电话区号互不对应

三套编码各按各的逻辑:

编码来源设计目的与行政区关系
行政区代码(6 位)民政部行政管辖严格对应
邮编(6 位)邮政总局投递路线松散——一个区可能多邮编、一个邮编可能跨区
电话区号(3-4 位)工信部通信交换不严格对应——历史上有跨地区共用区号

邮编结构

PP RR PT
│  │  └─ 投递点
│  └─ 投递区域
└─ 省 / 直辖市

例子:

  • 100080 = 北京(10)海淀区(00)中关村片区(80)
  • 200001 = 上海(20)市中心(00)外滩附近(01)

邮编的”100086”和”100089”可能在同一行政区(海淀区)但不同投递片区。所以:

  • 用邮编判断行政区 → 不准
  • 用邮编估算”是哪个城市” → 比较准(前 2 位)
  • 邮编填错(甚至填 000000)大多能寄到——投递员主要看地址文字

电话区号

区号长度 = 4 位(除了北京 010、上海 021、天津 022、广州 020、深圳 0755 等大城市用 3-4 位混合)

省会一般是省份代号 + 1,如 020 广州、023 重庆、025 南京、027 武汉。三位区号留给少数大城市。

港澳台数据的特殊性

港澳台行政区划在国务院发布的”行政区划调整公告”里通常不出现——这些地区有各自的行政体系:

  • 香港:18 个区议会选区
  • 澳门:7 个堂区 + 4 个分区
  • 台湾:6 个直辖市 + 13 县 + 3 县级市,下分乡镇市区

中国大陆的行政区划编码体系把它们编为:

  • 71 = 台湾
  • 81 = 香港特别行政区
  • 82 = 澳门特别行政区

但下级区划编码各家口径不一——民政部发的简册只有省级编码,统计局有地级编码,第三方数据则按各地实际行政划分填。

数据库设计建议:港澳台单独存表,不混入大陆行政区划,避免变更管理混乱。

数据怎么获取

来源内容更新频率格式
民政部《行政区划简册》县级以上年度PDF
国家统计局”统计用区划代码”五级(含街道乡镇村)年度网页 / Excel
国务院公报”国函”具体调整批复实时PDF
高德 / 百度地图 API区划 + 边界实时但滞后JSON
开源 GitHub 项目整理后 JSON / SQL半年到一年数据库可导入

自己维护的关键点

  1. 保留时间维度:每条记录加 valid_fromvalid_to,方便历史查询
  2. 维护 alias 表:旧代码 → 新代码的映射
  3. 支持模糊匹配:用户填”中关村”要能匹配到海淀区
  4. 拼音 / 简称索引:BJ、京、北京 都要能匹配北京

行政区划与法律意义

很多业务规则与行政区划绑定:

  • 税收:增值税地区返还按行政区
  • 社保 / 公积金:按缴存地行政区
  • 车牌限号:按城市行政区(北京限”京 A-京 V”全市)
  • 房产限购:按区甚至街道(深圳分核心区与非核心区)
  • 学区房:按街道甚至学校片区
  • 法律管辖:刑事 / 民事案件按户籍所在或居住地的法院管辖

行政区划调整意味着这些业务规则可能跟着变——比如撤县设区后,原”农村户籍”可能变”非农户籍”,土地征收政策、宅基地政策都会变。

一句话总结

行政区划是动态数据——民政部年度更新、6 位代码会废弃、邮编 ≠ 行政区、港澳台单独管,老数据库必须维护历史映射。

❓ 常见问题

中国到底有多少省市区?数据各家不一样是为什么?

取决于哪一年、哪个口径。截至 2025 末:34 个省级(23 省 + 5 自治区 + 4 直辖市 + 2 特区)、约 333 个地级、约 2843 个县级(含县级市、市辖区、自治县、旗等)、约 38000+ 个乡级(镇 / 乡 / 街道)。数字浮动原因:(1) 撤县设市、撤乡设镇、设立新区每年都有调整;(2) 口径不同——民政部按《行政区划简册》、统计局按"统计用区划代码"含开发区临时代码、邮政按邮编片区;(3) 时点不同——年初年末、不同部门发布日期不同。权威源:国务院民政部官网每年发布最新区划,但地图 / GPS 工具往往滞后 1-2 年。

6 位行政区代码每位代表什么?

结构 PPCCDD:前 2 位省(PP)、中 2 位市(CC)、后 2 位县(DD)。比如 110108 = 北京市(11)+ 市辖区(01)+ 海淀区(08)。省级编码 11-65 不连续:11=北京、12=天津、13=河北…直到 65=新疆,跳过的号是历史预留(如 70+ 留给特区)。"00" 表示该级"全部":110000 = 北京市(不指具体区)、110100 = 北京市辖区合集。3 位与 6 位:邮政统计代码用 6 位,省级简化代码用前 2 位(如车牌"京 A"对应 11 省);公安户籍 18 位身份证前 6 位也是行政区代码。注意:行政区代码会变——2018 年北京原来的 110201 / 110202 / 110203 等被废弃改为 110115 / 110116 / 110117,老数据库要做映射。

邮编、行政代码、电话区号是同一套体系吗?

完全独立的三套6 位邮编:按邮政投递路线划分,前 2 位是省(如 100 北京、200 上海),后 4 位是投递分区——一个区可能跨多个行政区,一个行政区也可能含多个邮编。6 位行政代码:按行政管辖。电话区号:3-4 位,按通信交换设计,与省市区不严格对应(如同一城市可能多个区号、跨省共用区号在历史上也存在)。实操陷阱:用邮编反查城市经常不准,因为邮编是路线编码不是地理编码——网购填地址时邮编用 000000 多数也能寄到。准确的位置反查应该用行政代码,邮编只是辅助。

如何获取最新的行政区划数据?

官方源:(1) 民政部《行政区划简册》PDF 每年发布;(2) 国家统计局"统计用区划代码"网页(含街道乡镇五级,最详细);(3) 国务院公报刊登的具体区划调整批复。第三方:高德 / 百度地图 API 提供行政区划查询,与官方比有一定滞后。开源数据:GitHub 上的 china-divisions 类项目,社区从官方源转为 JSON / SQL 格式,更新频率半年到一年。自己维护要注意:(1) 历史数据要保留,否则旧地址匹配不上;(2) 撤并区划要做映射表;(3) 港澳台数据通常单独维护——国务院公报里没有这些区划调整。

🗺️ 打开 行政区查询 省市区级联·邮编·区号·行政代码