【问题标题】:Is there an api i can call for getting iata codes for cities有没有我可以调用的 api 来获取城市的 iata 代码
【发布时间】:2020-02-25 11:25:33
【问题描述】:

我正在开发一个同时具有出发地和目的地字段的旅行网络应用程序,我可以调用一个 API 来获取出发地和目的地并为它们返回 iata 代码吗?

【问题讨论】:

    标签: api geolocation


    【解决方案1】:

    您可以使用 Wikidata 和 Wikidata 的 SPARQL 查询服务来检索 IATA 代码。

    要求是您知道您的出发/目的地城市的维基百科文章的标题。对于大城市来说,这应该不是问题,因为维基百科的标题与城市名称一致。但对于较小的地方,您可能需要先使用 Wikipedia API 来找到正确的文章。

    一旦您知道维基百科的标题,您就可以在https://query.wikidata.org 上运行以下查询:

    SELECT DISTINCT ?iata WHERE {
    <https://en.wikipedia.org/wiki/Los_Angeles> schema:about ?city .
      ?airport wdt:P31/wdt:P279* wd:Q1248784;
               wdt:P131+ ?city;
               wdt:P238 ?iata
    }
    

    如果您是 Wikidata 和 SPARQL 的新手,您可以在 https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/A_gentle_introduction_to_the_Wikidata_Query_Service 找到介绍。

    简而言之,以上几行做了以下事情:

    1. &lt;https://en.wikipedia.org/wiki/Los_Angeles&gt; schema:about ?city . 查询链接到给定 Wikipedia 文章的 Wikidata 项。

    2. ?airport wdt:P31/wdt:P279* wd:Q1248784; wdt:P131+ ?city; 查找位于该城市的所有机场。

    3. ?airport wdt:P238 ?iata 返回该机场的 IATA 代码。

    要以编程方式访问数据,请调用https://query.wikidata.org/sparql?query=...

    【讨论】:

    • 我编辑了您的查询并选择了“?airport”。我取回每个 IATA 代码的 WD:ID。你能告诉我要调整什么来检索机场名称而不是 ED:ID?
    • SELECT DISTINCT ?iata ?airportLabel WHERE { en.wikipedia.org/wiki/Los_Angeles> schema:about ?c​​ity . ? 机场 wdt:P31/wdt:P279* wd:Q1248784; wdt:P131+ ?城市; wdt:P238 ?iata SERVICE wikibase:label { bd:serviceParam wikibase:language "en"。 } }
    • en.wikipedia.org/wiki/Ouagadougou 不响应任何 IATA 或机场。但是在 Wikipedia 上提到了 Aiport/IATA 代码,即使通过谷歌搜索,Wiki fininds 也提到了它。这怎么可能?
    猜你喜欢
    • 2021-05-25
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多