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吗?

4

1 回答 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))
}

很多话要说:

  1. Point位于 a 边界上的APolygon不可能是Within它。它TouchesInstersects边界代替。
  2. 为了优化,最好将变量几何作为函数中的第一个参数,将形式几何作为第二个参数。
  3. 重要的是,它geof: 需要<http://www.opengis.net/def/crs/OGC/1.3/CRS84>. 这是许多讨论的重要主题,但它是唯一有效的方法......然后您需要删除所有几何图形和请求中的 CRS 规范。我尝试过使用不同的 CRS,但它们也不起作用。

正如在这个线程中所说。

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

最后,再次确保正确地重新投影您的数据。

于 2018-04-30T08:58:10.057 回答