首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GeoSPARQL函数与空间参考系统

GeoSPARQL函数与空间参考系统
EN

Stack Overflow用户
提问于 2019-03-08 09:44:24
回答 2查看 315关注 0票数 0

我试图在本体中表示一些几何对象(多边形、直线、点等)。并采用GeoSPARQL相关函数(sfTouches、sfEquals、sfContains等)计算它们的空间/拓扑关系。我使用的是GraphDB,启用了GeoSPARQL插件。

我已经看到,在几何对象的WKT表示中,GeoSPARQL使用了默认空间参考系统的概念(即与WGS84坐标参考系统相对应的[http://www.opengis.net/def/crs/OGC/1.3/CRS84](http://www.opengis.net/def/crs/OGC/1.3/CRS84) URI )。然而,在我的用例中,几何对象的坐标实际上对应于中的值--一个2D笛卡尔坐标系

我在EPSG大地测量参数登记处中找到了用于表示笛卡尔坐标的适当CRS,并在WKT表示中附加了适当的URI,但GeoSPARQL函数不返回任何结果或错误。

我的问题是:“在表示任何其他类型的CRS中的空间对象时,除了默认的空间对象之外,GeoSPARQL函数是否运行正常?”

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2019-03-10 11:50:48

目前,GDB不支持WKT文本中的替代CRS,但在GML文本中支持它们(发布GDB-3142)。GML文字稍微复杂一些,但仍然很容易生成,如果需要帮助,请告诉我们。

然而,我怀疑你的断言,你有笛卡尔坐标。一方面,任何一对(lat,long)或(nothing,hand )都是笛卡尔坐标。另一方面,由于地球并不平坦,任何CRS或投影方法都只是近似值,其中许多都是针对特定地点的。

因此,请告诉我们您选择了哪个EPSG,以及您的数据的位置。

票数 1
EN

Stack Overflow用户

发布于 2019-03-20 13:02:48

您的示例稍微修改了格式,并使用了普通的海龟缩写:

代码语言:javascript
复制
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:,因此正确的http://www.opengis.net/def/crs/EPSG/0/4499http://www.opengis.net/def/crs/EPSG/0/4499

但从返回的描述可以看出,这个CRS适用于“中国-岸上和近海之间120°E到126°E”。我不是地理投影方面的专家,所以我不能保证这个CRS是否能满足你的需要,“别管我的坐标,它们只是米”。我会寻找一个英国(OrdnanceSurvey) CRS与东和东北坐标。

要了解如何格式化GML:

  • 参见GeoSPARQL规范(OGC-052r4) p18,whchc给出了一个关于gml:Point的示例。
  • 然后用谷歌搜索gml:Polygon。有很多链接,但给出例子的是http://www.georss.org/gml.html

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

代码语言:javascript
复制
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.
  • """ (长引号)允许我们在文字中使用"而不引用
  • 用您选择的更好的CRS替换TODO
  • 文档http://graphdb.ontotext.com/documentation/master/enterprise/geosparql-support.html#geosparql-examples给出了一个类似于您的例子,但是它有点作弊,因为所有的坐标都在(-90,+90)范围内,所以它可以只使用WGS。
  • 使用geof:拓扑函数进行调试后,打开索引并切换到geo:谓词,因为函数速度慢(它们检查每个几何图形,而谓词使用特殊的geo索引)。

告诉我是怎么回事!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55060508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档