Geonames - Admin3 和 Admin4 数据

Posted

技术标签:

【中文标题】Geonames - Admin3 和 Admin4 数据【英文标题】:Geonames - Admin3 and Admin4 data 【发布时间】:2019-01-20 14:39:36 【问题描述】:

我已经下载了geonames data dump

主表有 admin3 和 admin4 列,但没有与这些列中的数据对应的数据转储。

有人知道如何将 admin3 和 admin4 代码与它们各自的地名对应起来吗?

【问题讨论】:

根据here 的解释,它在 XX 文件本身中。它的级别低于 admin1 和 admin2,所以我猜想保留这些参考文件可能有点毫无意义。 @LukStorms 不,这是不正确的。我想我已经弄清楚了,看起来主表是自引用的 - 每个管理员代码的父子关系可以通过使用功能代码和管理员级别的组合来识别。我将用答案更新帖子以更好地解释它。文档没有很好地解释它。 【参考方案1】:

主要网站上的文档似乎没有解释这一点,但你去吧:

select  t4.name as town,
        t3.name as county, 
        t2.name as district, 
        t1.name as admin1, 
        t0.name, 
        t0.feature_class, 
        t0.feature_code,
        t0.country_code,
        t0.admin1,
        t0.admin2,
        t0.admin3,
        t0.admin4,
        t0.population
from geoname t0
left join geoname t1 on t1.admin1 = t0.admin1 and t1.feature_code = 'ADM1'
left join geoname t2 on t2.admin2 = t0.admin2 and t2.feature_code = 'ADM2'
left join geoname t3 on t3.admin3 = t0.admin3 and t3.feature_code = 'ADM3'
left join geoname t4 on t4.admin4 = t0.admin4 and t4.feature_code = 'ADM4'
where t0.name = 'London'

【讨论】:

答案很有帮助,但并不完全正确 - 加入时,您还必须限制加入 ON country_code 匹配,并且在 t2 到 t4 上您还必须加入更高级别的管理员代码,否则您可能有连接中有多个结果。 @Peter 请您提供您的 SQL,因为我不明白您的回答。仅当您下载所有国家/地区的数据转储时才需要国家/地区代码。就我而言,我只有英国的垃圾场。 如果您仅限于一个国家/地区,则在这种情况下发生冲突的可能性较小 - 问题是相同的管理员代码可能用于多个国家/地区来表示不同的地区。如果数据引用父级的地理名称 ID 而不是管理代码会更好。

以上是关于Geonames - Admin3 和 Admin4 数据的主要内容,如果未能解决你的问题,请参考以下文章

Django基础之创建admin账号

华为账号免费手机号和密码

宝德存储默认密码

常用设备管理口默认用户名密码汇总

ActiveMQ + NodeJS + Stomp 极简入门

(转载)数据库表设计-水电费缴费系统(oracle)