如何将GeoName ID/Wikidata ID映射至geoBoundary的ADM1/ADM2级别shapeID?
将Wikidata/GeoName ID映射到geoBoundaries ADM1/ADM2 shapeID的可行方案
直接映射的现状
目前geoBoundaries官方没有提供Wikidata或GeoName ID到shapeID的直接映射表,但可以通过以下几种更可靠的间接方式实现匹配,比单纯名称匹配的准确率高很多:
1. 利用属性关联做精准匹配
geoBoundaries的shapefile自带shapeGroup(国家代码)和shapeType(行政级别)属性,结合GeoNames的对应字段可以缩小匹配范围:
- 先筛选GeoNames中
feature code为ADM1/ADM2的条目 - 匹配时同时结合国家代码(GeoNames的
country code对应geoBoundaries的shapeGroup)和标准化名称,避免不同国家同名区域的歧义
2. 以Wikidata为中间桥梁
Wikidata的行政区域条目通常同时关联GeoName ID和geoBoundaries shapeID:
- 若有GeoName ID,可通过Wikidata的
P1566属性(对应GeoNames ID)找到对应条目,再提取该条目的P894属性值,就是geoBoundaries的shapeID - 若直接有Wikidata ID,直接提取
P894属性即可得到目标shapeID
3. 优化名称匹配的准确率
如果必须依赖名称匹配,可通过以下方式降低误差:
- 统一格式:去除标点、大小写归一化、替换通用同义词(比如把"State"和"Province"统一处理)
- 用模糊匹配算法(比如Levenshtein距离)处理拼写差异
- 先通过行政级别和国家范围缩小候选集,再做名称匹配
示例验证
以你提供的纽约数据为例:
- GeoName ID
5128638对应的Wikidata条目是Q60,该条目的P894属性值正好是66186276B43575054209436,与geoBoundaries的shapeID完全对应 - 用国家代码(USA)+标准化名称(New York)匹配,也能直接定位到正确的shapeID
内容的提问来源于stack exchange,提问作者Slash
相关产品推荐
相关产品推荐

