GEOSPARQL函数和空间参考系统(SRS)



我试图在本体中表示一些几何对象( polygon lines points ),并通过采用 geosparql 相关功能来计算其空间/拓扑关系( sftouches sfequals /em>等)。我正在使用geosparql插件使用GraphDB。

我已经看到,在几何对象的WKT表示中,geosparql使用默认空间参考系统的概念(即< http; http://www.opengis.net/def/def/def/crs/ogc/ogc/1.3/crs84>与WGS84坐标参考系统( crs )相对应的URI。但是,在我的用例中,几何对象的坐标实际上对应于中的值2D笛卡尔坐标系

我在EPSG测量参数注册表中发现了代表笛卡尔坐标的适当CR,我在WKT表示中附加了适当的URI,但是GEOSPARQL函数没有返回任何结果或错误。

>

我的问题是:" 除了在任何其他类型的CR中代表空间对象时,GeoSparql功能是否正常运行,除了默认一个吗?"。"。

预先感谢您。

当前GDB不支持WKT文字中的替代CR,而是在GML文字中支持它们(问题GDB-3142)。GML文字稍微复杂一些,但仍然足够容易产生,让我们知道您是否需要帮助。

但是,我质疑您对您有笛卡尔坐标的断言。一方面,任何一对(lat,long)或(没有,恢复)是笛卡尔坐标。另一方面,由于地球不是平坦的,因此任何CRS或投影方法只是近似值,其中许多是针对特定地区的。

因此,请告诉我们您选择了哪个EPSG CR,以及有关数据的局部性的一些。

您的例子,略微重新格式化,并使用普通的乌龟短菜:

ex:polygon_ABCD rdf:type ex:ExampleEntity ;
  geo:hasGeometry ex:geometry_polygon_ABCD .
ex:geometry_polygon_ABCD a geo:Geometry, sf:Polygon ;
  geo:asWKT "<opengis.net/def/cs/EPSG/0/4499> Polygon((389.0 1052.0, 563.0 1052.0, 563.0 1280.0, 389.0 1280.0, 389.0 1052.0))"^^geo:wktLiteral .
ex:point_E rdf:type ex:ExampleEntity ; 
  geo:hasGeometry ex:geometry_point_E . 
ex:geometry_point_E a geo:Geometry, sf:Point ;
  geo:asWKT "<opengis.net/def/cs/EPSG/0/4499> Point(400.0 1100.0)"^^geo:wktLiteral ; .

您必须对CRS使用特定的URL,并且不能省略http:,因此正确的URL为http://www.opengis.net/def/def/crs/epsg/0/4499。

但是,您可以从返回的描述中看到此CRS已在120°E和126°E之间的"中国 - 陆上和海上"。我不是Geo预测专家,因此我不能保证CRS是否会满足您的需求"让我的坐标独自一人,它们只是电表"。我会寻找带有加速和北部坐标的英国(Ordnancesurvey)CR。

学习如何格式化GML:

  • 请参阅GEOSPARQL SPEC(OGC 11-052R4)P18,WHCHC给出了有关gml:Point的示例。
  • 然后Google for gml:Polygon。有很多链接,但提供示例的链接是http://www.georss.org/gml.html

有了这些知识,我们可以将您的榜样重新格式化为GML:

ex:polygon_ABCD rdf:type ex:ExampleEntity ;
  geo:hasGeometry ex:geometry_polygon_ABCD .
ex:geometry_polygon_ABCD a geo:Geometry, sf:Polygon ;
  geo:asGML """
      <gml:Polygon xmlns:gml="http://www.opengis.net/gml" srsName="http://www.opengis.net/def/crs/EPSG/0/TODO">
         <gml:exterior>
            <gml:LinearRing>
               <gml:posList>
389.0 1052.0, 563.0 1052.0, 563.0 1280.0, 389.0 1280.0, 389.0 1052.0
               </gml:posList>
            </gml:LinearRing>
         </gml:exterior>
      </gml:Polygon>
"""^^geo:gmlLiteral.
ex:point_E rdf:type ex:ExampleEntity ; 
  geo:hasGeometry ex:geometry_point_E . 
ex:geometry_point_E a geo:Geometry, sf:Point ;
  geo:asGML """
      <gml:Point xmlns:gml="http://www.opengis.net/gml" srsName="http://www.opengis.net/def/crs/EPSG/0/TODO">
        <gml:pos>
      400.0 1100.0
        </gml:pos>  
      </gml:Point>
"""^^geo:gmlLiteral.
  • """(长报价)允许我们在文字中使用"而不引用
  • 用您选择的更好的CR替换TODO
  • 文档http://graphdb.ontotext.com/documentation/master/enterprise/geosparql-support.html#geosparql-examples提供了一个与您的示例相似的示例,但它作弊,因为所有协调都在范围内( - 90, 90),因此只能使用WGS。
  • 使用geof:拓扑功能进行调试后,打开索引并切换到geo:谓词,因为函数很慢(它们检查了每个几何图形),而谓词使用特殊的Geo索引

让我知道它的发展!

最新更新