【问题标题】:GEOSPARQL "within" and stardogGEOSPARQL“内部”和stardog
【发布时间】:2017-01-27 10:59:32
【问题描述】:

我正在为 geosparql 苦苦挣扎,尤其是 geo:Within。

我可以在以下位置找到的文档:open gis documentation 声明它需要 geo:SpatialObject 并且 geo:Featuregeo:SpatialObject 的一种类型。我有许多功能,它们的位置都有点。当我跑步时

SELECT Distinct * WHERE {   
  ?g geo:asWKT ?gWKT .  
}

我返回了 25 个点,所有这些点都应该在下面定义的(相当大的)多边形中。

然而

SELECT * WHERE {   
  ?g geo:asWKT ?gWKT .
  FILTER geof:within( ?g ,"POLYGON(51.45, -0.115,51.52,-0.08)"^^geo:wktLiteral  ) .
}

导致“内部服务器错误”。

任何想法我做错了什么?我是 GeoSPARQL 的新手,但对标准 SPARQL 相当熟悉。

【问题讨论】:

  • 您是否启用了对多边形的支持?如此处所述:docs.stardog.com/#_enhanced_polygons
  • 我确实做到了。我还用我的多边形定义修复了错误,现在是SELECT Distinct ?g WHERE { ?g geo:asWKT ?gWKT . FILTER (geof:within( ?g ,"POLYGON((-0.05 51.1 , 0.25 51.1 ,-0.05 52,0.25 52 ))"^^geo:wktLiteral )) }
  • 进一步说:我相信我已经启用了对多边形的支持,但我做错了。为了他人的利益:jts-core jar 文件需要位于名为ext 的文件夹中,您需要在stardog 安装目录中的服务器下创建该文件夹

标签: sparql stardog geosparql


【解决方案1】:

您的形状仍然定义不正确。您似乎正在尝试创建一个简单的矩形,因此作为 POLYGON,它将是 "POLYGON(( -0.05 51.1, 0.25 51.1, 0.25 52, -0.05 52, -0.05 51.1 ))"^^geo:wktLiteral(角 1、角 2、角 3、角 4、角 1 将其关闭)。

或者,您可以通过使用如下 ENVELOPE 来简化此操作(并消除对 JTS 的需要):"ENVELOPE(-0.05, 0.25, 52, 51.1)"^^geo:wktLiteral (minLat, maxLat, maxLon, minLon -注意所需的奇数顺序)。

【讨论】:

  • 您理解正确,ENVELOPE 是我需要的解决方案,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 2018-05-16
相关资源
最近更新 更多