反向维基百科地理标记查找
-
05-07-2019 - |
题
维基百科是 地理标记 A 很多 的 它是 文章. 。(查看页面的右上角。)
有没有API可以查询全部 地理标记页面 在某个地理位置的指定半径内?
更新
好的,所以根据丢失理论的答案,我尝试了这个(在 DBpedia 查询浏览器):
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?subject ?label ?lat ?long WHERE {
?subject geo:lat ?lat.
?subject geo:long ?long.
?subject rdfs:label ?label.
FILTER(xsd:float(?lat) - 57.03185 <= 0.05 && 57.03185 - xsd:float(?lat) <= 0.05
&& xsd:float(?long) - 9.94513 <= 0.05 && 9.94513 - xsd:float(?long) <= 0.05
&& lang(?label) = "en"
).
} LIMIT 20
这非常接近我想要的,除了它返回 (当地的) 围绕该点形成正方形而不是圆形。我还想知道结果是否根据距该点的距离进行排序。(如果可能的话。)
更新2
我正在尝试将欧几里德距离确定为真实距离的近似值,但我在 SPARQL 中对数字求平方时遇到困难。(问题在这里打开.)当我得到有用的东西时,我会更新问题,但与此同时,我将感谢任何有关替代方法的建议。
更新3
最后更新。我放弃了通过 DBpedia 使用 SPARQL。我编写了一个简单的解析器,它获取维基百科文章文本夜间数据库转储并解析所有文章的地理编码。它工作得相当好,它允许我随心所欲地存储有关地理标记文章的信息。
这可能是我将继续使用的解决方案,如果我能够为其创建一个漂亮的接口,我可能会考虑允许公共 API 访问和/或将源代码发布到解析器。
解决方案
dbpedia端点使用的OpenLink Virtuoso服务器具有多个查询功能。我在 http://docs.openlinksw.com/virtuoso/rdfsparqlgeospat.html对类似问题有用。
我最终得到了一个这样的查询:
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公里内的地理标记位置。
其他提示
您应该能够使用SPARQL和 dbpedia 查询纬度/经度。一个例子(来自此处 ):
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]')
)
}
您可以此处运行您自己的查询。
上面列出了一些工具 基于维基百科坐标的工具和应用程序. 。我不确定这是否是您正在寻找的,但是 地理搜索.py 工具看起来很酷。
不是API,但您也可以下载所有地理标记的维基百科文章,并直接在本地数据库中查询: http://www.google.com/fusiontables/DataSource?dsrcid=423292
免费 GeoNames.org FindNearbyWikipedia服务可以获取地理标记文章以获取邮政编码或坐标(纬度,经度)
它为每个应用程序提供30,000个学分的每日限制(由参数“username”标识),每小时限制为2000个学分。信用是大多数服务的Web服务请求。超出限制时会抛出异常。
我对SPARQL不够熟悉,但如果它可以在其滤波器中使用功率,那么使用毕达哥拉斯定理很容易计算给定物品与给定点的距离(a ^ 2 + b ^ 2 = c ^ 2)这将为你提供半径范围内的所有文章。
另一种选择是获取维基百科数据转储并自行处理 - 这是我在需要对维基百科文章进行语言分析时所做的。