专栏 命名系统

命名系统(6):交通与地理——从机场三字码到车架号

交通和地理的编码有个共同要求: 终身唯一 。船可以改名换旗,车可以过户转籍,人可以在城市间迁徙,但底层的号不能变。变一次,海关、保险、事故记录就全断了。

命名系统(6):交通与地理——从机场三字码到车架号

交通和地理的编码有个共同要求:终身唯一。船可以改名换旗,车可以过户转籍,人可以在城市间迁徙,但底层的号不能变。变一次,海关、保险、事故记录就全断了。

一、航空:两套机场码,各管一段

同一个机场,有两个名字:

类型 例子 位数 用途
IATA 代码 PEK 3 售票、行李牌、旅客界面
ICAO 代码 ZBAA 4 飞行计划、航管、气象

ICAO 的结构

ZBAA 拆开:Z 是中国所在区域,B 是华北,AA 是机场序号。这套编码有明确的地理逻辑,管制员看一眼就知道大概方位。

IATA 的混乱

IATA 三字码来自城市名、机场名或历史习惯:

  • PEK 来自 Peking(北京的旧拼法)
  • PVG 来自浦东
  • CAN 来自 Canton(广州旧称)

问题是:三字码只有 26³ = 17576 个组合,已经接近耗尽。新机场只能拿到不直观的码,或者用数字(如 SJJ 之类)。而且机场改名、城市更名后,码通常不改——改码的成本太高,全球订座系统、行李分拣、登机牌模板全要动。

机型和航班

  • 机型:A320neo(厂商名)、B737-8(波音命名)、B38M(ICAO 机型代码)
  • 航班号:CA1234,两字码 + 1-4 位数字
  • 航司代码:IATA 两字 CA,ICAO 三字 CCA,呼号 AIR CHINA

同一架飞机,在机票上、雷达屏上、维修记录里,用的是三套不同的标识。

二、航运:船号是终身的

IMO 号

格式 IMO + 7 位数字,例如 IMO 9074729。船舶报废前终身不变,换船名、换船旗、换船东都不改。

校验算法:前 6 位从右往左乘 2、3、4、5、6、7,求和取个位。

def imo_check(first6: str) -> int:
    total = sum(int(c) * (i + 2) for i, c in enumerate(reversed(first6)))
    return total % 10

print(imo_check("907472"))   # 9

2×2 + 7×3 + 4×4 + 7×5 + 0×6 + 9×7 = 139,139 % 10 = 9。

MMSI 与呼号

  • MMSI:9 位,AIS 系统用的身份码。首位表示类别:2 渔船、3 岸台、4/5 救生设备、7 便携 VHF、8 小艇、9 导航设备
  • 呼号:国籍前缀 + 字母,如 B 开头是中国
  • 船名:可以改,没有全球唯一性,只能作为辅助识别

集装箱号

ISO 6346 规定:4 个字母 + 6 位数字 + 1 位校验。

MSCU 123456 7
│││└─ 类别标识(U 集装箱、J 可拆卸设备、Z 拖车底盘)
│└─── 所有者代码
└──── 所有者代码

校验稍复杂:字母先映射成数字(A=10、B=12……跳过 11 的倍数),每位乘 2 的幂次,求和后对 11 取模,余数 10 记作 0。

港口

UN/LOCODE 五位:CN SHA = 中国上海。前两位国别,后三位地点。全球港口、机场、内陆口岸共用这套码。

三、汽车:17 位 VIN

VIN 是消费领域最常见的唯一编码,17 位分三段:

LSV AM4 1 8 5 E 2 100001
│││ │││ │ │ │ │ │ └────── 生产序号
│││ │││ │ │ │ │ └──────── 工厂代码
│││ │││ │ │ │ └────────── 年份码(E = 2014)
│││ │││ │ │ └──────────── 校验位(北美强制)
│││ │││ │ └────────────── 车型/车身/发动机
│││ └┴┴─────────────────── 车辆特征
└┴┴─────────────────────── WMI:国别 + 厂商

规则要点:

  • 字母 I、O、Q 禁用,避免与数字 1、0 混淆
  • 第 10 位年份码 30 年一循环:2020=L、2021=M、2022=N、2023=P、2024=R、2025=S、2026=T
  • 中国生产的车 WMI 以 L 开头
  • 第 9 位校验位只在北美强制,其他地区可能填 Z 或任意字符

VIN 的价值在于:它把「哪国、哪厂、什么车型、哪年、第几台」全部编进了 17 个字符,且全球不重复。二手车、保险、召回的整个链条都靠它串联。

四、铁路与公路:字母即等级

车次

G 高铁、D 动车、Z 直达、T 特快、K 快速、纯数字普快。字母本身就是等级声明,旅客不用查表。

公路编号

前缀 含义 编号规则
G 国道 放射线 1 位(G1 京哈、G2 京沪);纵线 2 位奇数(G15 沈海);横线 2 位偶数(G10 绥满)
S 省道 各省自定
X 县道 四位
Y 乡道 四位
C 村道 四位

方向也编进了数字:奇数是纵向,偶数是横向。看编号就知道这条路大体是南北走向还是东西走向。

五、地理:所有实名系统的底座

国家码

ISO 3166-1 给了三套:

类型 例子 用途
alpha-2 CN 域名、国籍、最常用
alpha-3 CHN 体育赛事、货币、避免歧义
numeric 156 机器处理,与语言无关

ISO 3166-2 再往下到省级:CN-BJ、US-CA。

中国行政区划代码

6 位,身份证前 6 位就是它:

44 01 06
│  │  └─ 县级(天河区)
│  └──── 市级(广州市)
└─────── 省级(广东省)
  • 11 北京、31 上海、44 广东、51 四川
  • 省直辖县级行政区用 90 占位
  • 乡镇级已扩展到 9 位

这套码是统计、税务、邮政、社保、公安共用的底座。改一次区划,全国系统都要跟着改——所以撤县设区这类调整,IT 成本远比想象中高。

邮政编码与地名

  • 中国邮编 6 位,前两位对应省份和邮区
  • 地名有 GEOnet(美国 NGA 维护)、海底地形有 SCUFN(IHO 命名委员会)
  • 地址体系是最难标准化的:中国是「省市区 + 道路 + 门牌 + 楼栋 + 房号」,欧美是「门牌 + 街道 + 城市 + 邮编」,日本是「都道府县 + 市区町村 + 町名 + 番地 + 号」

跨国地址库永远做不完美,因为地址本身不是为机器设计的。

六、这一行的启示

  1. 终身唯一是硬要求:IMO、VIN、行政区划码,都设计成「对象在,号就在」。
  2. 码位会耗尽:IATA 三字码就是前车之鉴,设计时要预留扩展位。
  3. 地理编码是所有实名系统的地基:身份证、税务登记、统计普查,全都建在行政区划码上。
  4. 可读性和唯一性通常只能选一个:船名可读但不唯一,IMO 号唯一但不可读,所以两者并存。

最后一篇进书房:书号、作品号、色号,那些管着「文化产品」的命名体系。

说明 · 本站内容均为学习笔记与经验总结,所有菜谱与技法请结合实际食材、季节与个人口味灵活调整。涉及生食、营养与健康的内容仅供参考,特殊体质或疾病请咨询专业营养师/医生。