首页 文章

GraphDB GeoSPARQL 投影支持

提问于
浏览
1

我在使用 non-default 投影将数据加载到 GraphDB 时遇到了一些问题。

使用文档网站中的示例文件,但将投影从 CRS84 更改为 CRS83,导致在运行示例 2(也来自网站)时未找到交叉点。 GraphDB 是否支持使用不同的投影加载数据?如果是这样的话,为了让它起作用,我还需要做些什么吗?

如果我将投影保留为 CRS84,一切都按预期工作。

这是我试图执行的查询:

PREFIX my: <http://example.org/ApplicationSchema#>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX geof: <http://www.opengis.net/def/function/geosparql/>

SELECT ?f
WHERE {
    ?f my:hasPointGeometry ?fGeom .
    ?fGeom geo:asWKT ?fWKT .
    FILTER (geof:sfWithin(?fWKT, '''
        <http://www.opengis.net/def/crs/OGC/1.3/CRS83>
        Polygon ((-83.4 34.0, -83.1 34.0, -83.1 34.2, -83.4 34.2, -83.4 34.0))
        '''^^geo:wktLiteral))
}

1 回答

  • 0

    首先,作为一名地理学家,“将 CRS84 的预测改为 CRS83”可能是灾难性的。如果您只是将字符“4”更改为“3”,则表示您的数据已损坏。 (也许我误解了“改变”对你意味着什么)。

    从 CRS 到另一个 CRS 的转换是涉及重投影的数学过程。只需更改 CRS 的名称就无法完成。

    这是一个了解两个坐标系之间的许多差异的链接:外部文件

    最后,geof函数需要主题和对象在同一个 CRS 中表达。你知道这些预测是为了保持连贯性。如果您重新投影其中一个,则第二个也需要重新投影。这样可以保持 data/query 的一致性。

相关问题