Bja*_*sen 13 api wikipedia geotagging geolocation sparql
维基百科的地理标记功能一个不少 的 其 文章.(请查看页面右上角.)
是否有任何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
Run Code Online (Sandbox Code Playgroud)
这非常接近我想要的,除了它在点周围的(局部)方块内返回结果而不是圆.另外我想如果结果根据距离点的距离进行排序.(如果可能的话.)
我试图将欧氏距离确定为真实距离的近似值,但我在SPARQL中对数字进行平方时遇到了麻烦.(问题在这里打开.)当我得到有用的东西时,我会更新问题,但与此同时,我将欣赏有关替代方法的任何建议.
最后的更新.我放弃了通过DBpedia使用SPARQL.我编写了一个简单的解析器,它可以获取Wikipedia文章文本夜间数据库转储并解析所有文章以获取地理编码.它工作得很好,它允许我存储有关地理标记文章的信息,但我希望如此.
这可能是我将继续使用的解决方案,如果我开始创建一个很好的接口,我可能会考虑允许公共API访问和/或将源发布到解析器.
小智 3
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
Run Code Online (Sandbox Code Playgroud)
此示例检索距原点位置 30 公里范围内的地理标记位置。
| 归档时间: |
|
| 查看次数: |
2713 次 |
| 最近记录: |