我在使用 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 回答
首先,作为一名地理学家,“将 CRS84 的预测改为 CRS83”可能是灾难性的。如果您只是将字符“4”更改为“3”,则表示您的数据已损坏。 (也许我误解了“改变”对你意味着什么)。
从 CRS 到另一个 CRS 的转换是涉及重投影的数学过程。只需更改 CRS 的名称就无法完成。
这是一个了解两个坐标系之间的许多差异的链接:外部文件
最后,
geof
函数需要主题和对象在同一个 CRS 中表达。你知道这些预测是为了保持连贯性。如果您重新投影其中一个,则第二个也需要重新投影。这样可以保持 data/query 的一致性。