通过GPS位置获取城市的WikiData标识符

时间:2017-06-23 09:39:54

标签: geolocation gps sparql wikidata

我希望在特定的gps位置获得城市/定居点。 意味着在给定范围内最接近的一个或最多是最接近的一个。

我在维基媒体数据示例中找到了一些示例查询。

我尝试采用,但我只得到错误或超时

这是我当前的查询:

 SELECT *
    WHERE
    {
      ?city wdt:P31/wdt:P279* wd:Q15642541 . // only settlements
       # Search by Nearest
  SERVICE wikibase:around { 
    ?place wdt:P625 ?location . 
    bd:serviceParam wikibase:center "Point(8.4024875340491 48.9993762209831)"^^geo:wktLiteral .
    bd:serviceParam wikibase:radius "1" . 
    bd:serviceParam wikibase:distance ?distance .
  }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
    } 
ORDER By ?distance

当我遗漏了结算条件时,查询有效。但是当我添加它时,查询需要太长时间 我究竟做错了什么?什么是正确的语法?

1 个答案:

答案 0 :(得分:2)

我发现了我的错误。

这是工作查询:

 SELECT DISTINCT *
    WHERE
    {
      ?place wdt:P31/wdt:P279* wd:Q515 .
       # Search by Nearest
  SERVICE wikibase:around { 
    ?place wdt:P625 ?location . 
    bd:serviceParam wikibase:center "Point(8.4024875340491 48.9993762209831)"^^geo:wktLiteral .
    bd:serviceParam wikibase:radius "10" . 
    bd:serviceParam wikibase:distance ?distance .
  }
      SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
    } 

Order by  ?distance