符合国际标准的城市编码

问题

fork的项目running_page有一个Issue提到国家和地区识别不正确,看了数据样例较为复杂,有的是有国家省市区,有的只有部分,还有国外的。running_page中代码以逗号分隔取国家,然后根据统计用区划代码和城乡划分代码对比取出城市。

问题是,数据是全球的用户是全球的,那全球各个国家和区域的标准应该是什么?中国有省市区,那其他国家有吗?有统一标准吗?

国际标准 ISO 3166

全球化那就必然要找国际标准了,看这里ISO 3166, Codes for the representation of names of countries and their subdivisions

里面又包含了

如何使用

我们拿到gps后做需要逆地址解析拿到ISO 3166标准的代码,有哪些方式可以呢,google map?

我调研了2个方式

GeoNames

The GeoNames geographical database covers all countries and contains over eleven million placenames that are available for download free of charge.

免费全球地理数据库

注册账号,每个账号有免费调用接口额度,对于个人来说完全够了,接口不同占用额度不同,具体如下

Terms and Conditions

Terms and Conditions

GeoNames Webservice Credits

GeoNames Webservice Credits

Nominatim

Nominatim

Nominatim 是一个开源的地理数据库,可通过 REST API 访问。它由 OpenStreetMap 社区维护,包含来自各种来源的数据,包括 OpenStreetMap 数据库、维基百科和其他开放数据集。

Nominatim 解析的地址是使用国际标准化组织 (ISO) 3166 标准。ISO 3166 标准定义了世界各国的名称和代码。Nominatim 还使用其他标准,如 ISO 6709 标准,该标准定义了地理坐标的格式。

有python库Nominatim

参考

对ISO3166《国家和所属地区名称代码》国际标准的几点认识