【问题标题】:Use SPARQL and Dbpedia to query for cities within a given radius based on long and lat使用 SPARQL 和 Dbpedia 根据 long 和 lat 查询给定半径内的城市
【发布时间】:2017-12-22 02:28:24
【问题描述】:

我一直在尝试使用 DBpedia 和 SPARQL 根据地理位置获取城市。

例如,http://dbpedia.org/page/Berlin 具有属性

geo:lat: 52.516666 (xsd:float)
geo:long: 13.383333 (xsd:float)

我想根据位置和给定半径查询城市。 例如,我想查找纬度 10 公里范围内的城市:51.5033640 和经度:-0.1276250

我知道这给了我城市 --

SELECT ?city WHERE {      ?city rdf:type dbo:City    } 

-- 但我不知道如何使用过滤器来根据半径进行过滤。有人知道吗?

【问题讨论】:

    标签: sparql dbpedia


    【解决方案1】:

    使用 Virtuoso GeoSpatial 函数 bif:st_intersectsbif:st_point

    无论是几何对象(您的伦敦坐标中没有城市,请更改为dbo:Place 以查看伦敦周围是否有其他对象):

    SELECT  * { 
     ?city a dbo:City ;
           geo:geometry ?geo
     FILTER ( bif:st_intersects( ?geo, bif:st_point (-0.1276250, 51.5033640), 10))
    } 
    

    或经纬度:

    SELECT * { 
     ?city a dbo:City ;
           geo:lat ?lat ;
           geo:long ?long .
     FILTER ( bif:st_intersects( bif:st_point (?long, ?lat), bif:st_point (-0.1276250, 51.5033640), 10))
    }
    

    【讨论】:

    • 谢谢!我永远也想不通! - 祝你有美好的一天!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多