Api 反向维基百科地理标记查找

Api 反向维基百科地理标记查找,api,geolocation,sparql,wikipedia,geotagging,Api,Geolocation,Sparql,Wikipedia,Geotagging,维基百科是一个很好的工具。(查看页面的右上角。) 是否有API用于查询地理位置指定半径内的所有数据 更新 好吧,根据lost theory的答案,我尝试了以下方法: 前缀geo: 选择?主题?标签?横向?纵向在哪里{ ?主题地理位置:lat?lat。 ?主题地理:长?长。 ?主题rdfs:标签?标签。 FILTER(xsd:float(?lat)-57.03185上列出了一些工具。我不确定这是否是您要查找的工具,但该工具看起来很酷。您应该能够使用SPARQL和查询纬度/经度。示例(来自): 您可

维基百科是一个很好的工具。(查看页面的右上角。)

是否有API用于查询地理位置指定半径内的所有数据

更新 好吧,根据lost theory的答案,我尝试了以下方法:

前缀geo:
选择?主题?标签?横向?纵向在哪里{
?主题地理位置:lat?lat。
?主题地理:长?长。
?主题rdfs:标签?标签。

FILTER(xsd:float(?lat)-57.03185上列出了一些工具。我不确定这是否是您要查找的工具,但该工具看起来很酷。

您应该能够使用SPARQL和查询纬度/经度。示例(来自):


您可以运行自己的查询。

我对SPARQL不够熟悉,但是如果它可以在其过滤器中使用power,那么使用毕达哥拉斯定理(a^2+b^2=c^2)计算给定文章到给定点的距离就很容易了,这将为您提供半径内的所有文章


另一个选择是获取一个链接并自己处理它-这是我在需要对Wikipedia文章进行语言分析时所做的。

dbpedia端点使用的OpenLink Virtuoso服务器有几个查询功能。我发现有关的信息对于类似的问题很有用

我最后提出了这样一个问题:

SELECT ?page ?lat ?long (bif:st_distance(?geo, bif:st_point(15.560278, 58.394167)))
WHERE{
    ?m foaf:page ?page.
    ?m geo:geometry ?geo.
    ?m geo:lat ?lat.
    ?m geo:long ?long.
    FILTER (bif:st_intersects (?geo, bif:st_point(15.560278, 58.394167), 30))
}
ORDER BY ASC 4 LIMIT 15

本例检索距原始位置30公里内的地理标记位置。

不是API,但您也可以下载这套精美的所有地理标记wikipedia文章,并直接在本地数据库中查询:

可以获取给定邮政编码或坐标(纬度、经度)的地理标记文章


它为每个应用程序提供30000个每日信用额度(由参数“用户名”标识),每小时限制为2000学分。学分是大多数服务的web服务请求命中率。超过此限制时会引发异常。

非常有趣。我不确定SPARQL语法,以及如何对特定区域(由纬度、经度和半径定义)内的所有文章执行查询?我不确定SPARQL是否支持三角函数(它似乎不支持);但您可以将数据集过滤到一个正方形,以获得结果的第一个“切割”,然后在“客户端”执行大圆周距离,并应用第二组过滤。这就是我现在正在尝试的。结果将离极点很近,或者在大半径处,因为纬度和经度不是笛卡尔坐标,但在局部可能大致可以。但是我根本不知道如何计算sparql中某个东西的能力,甚至不知道在哪里查找如何计算功率。我在这里提出了一个问题:当我得到满意的解决方案时,我将更新该问题,但在此之前,我将感谢任何建议。:)在给出这个答案之前,我已经查阅了W3上的SPARQL参考资料,我在那里看到的数学运算不太令人满意。尽管如此,也有一些关于使用嵌入式Javascript添加运算符的讨论,这可能是一个解决方案,但由于时间不够,我没有深入研究。听起来我已经找到了。我猜测了平方根运算符(math:sqrt),它是有效的,但即使在W3页面上似乎也没有记录。而且这不是用于在网页上显示的,所以我不确定任何javascript解决方案会有什么帮助(尽管我自己也注意到了这一讨论)SPARQL处理器很可能有一个javascript解析器来处理这个问题。如果你能让
math:sqrt
工作,那么
math:pow
也可以工作。math:pow对我不起作用,也不试图自己乘以值(关于“(”的语法错误,我不理解)。顺便说一句,在Wikidata上:
SELECT distinct ?s ?la ?lo ?name ?country WHERE {
?s dbpedia2:latitude ?la .
?s dbpedia2:longitude ?lo .
?s dbpedia2:officialName ?name .
?s dbpedia2:country ?country .
filter (
  regex(?country, 'England|Scotland|Wales|Ireland')
  and regex(?name, '^[Aa]')
)
}
SELECT ?page ?lat ?long (bif:st_distance(?geo, bif:st_point(15.560278, 58.394167)))
WHERE{
    ?m foaf:page ?page.
    ?m geo:geometry ?geo.
    ?m geo:lat ?lat.
    ?m geo:long ?long.
    FILTER (bif:st_intersects (?geo, bif:st_point(15.560278, 58.394167), 30))
}
ORDER BY ASC 4 LIMIT 15