首页 文章

GraphDB 和 GeoSPARQL

提问于
浏览
0

我运行这个查询:

PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
select *
where 
{
   ?x <http://www.opengis.net/ont/geosparql#hasGeometry> ?fGeom .
   ?fGeom geo:asWKT ?fWKT .
   FILTER (geof:sfWithin(
     '<http://www.opengis.net/def/crs/EPSG/0/27572> 
     Point (729326 2521619)   '^^geo:wktLiteral,
     ?fWKT))
}

针对 GraphDB:

<http://data.edf.fr/departements/dep_france_dom/Geometry/2> a <http://www.opengis.net/ont/geosparql#Geometry> ;
<http://www.opengis.net/ont/geosparql#asWKT> "
<http://www.opengis.net/def/crs/EPSG/0/27572> MULTIPOLYGON (((729326 2521619,....

在商店里,我没有得到任何结果。你认为这是由于“法国异国情调”的 CRS 吗?

1 回答

  • 0

    更新:

    这是代码:

    PREFIX geo: <http://www.opengis.net/ont/geosparql#>
    PREFIX geof: <http://www.opengis.net/def/function/geosparql/>
    
    SELECT * WHERE {
        ?obj geo:hasGeometry ?fGeom .
        ?fGeom geo:asWKT ?fWKT .
        FILTER (geof:sfTouches(?fWKT, ''' POINT(729326 2521619)'''^^geo:wktLiteral))
    }
    

    很多话要说:

    • 位于Polygon边界的Point不能是Within。它改为TouchesInstersects边界。

    • 为了优化,最好是变量几何是函数中的第一个参数,顺式几何是第二个参数。

    • 重点是geof: 需要才能与<http://www.opengis.net/def/crs/OGC/1.3/CRS84>一起工作。它是许多讨论的重要主题,但它是唯一有效的方法......然后,您需要删除所有几何和请求中的 CRS 规范。我尝试过不同的 CRS,但他们也没有用。

    正如在这个帖子中所说的那样。

    如果仅适用于 WGS84,为什么要在 WKT 中精确确定 CRS?为什么只有 WGS84 可以通过重投影轻松完成?我不知道,讨论是开放的。

    最后,请务必再次正确重新投放数据。

相关问题