我希望将两个表与 Apache Sedona(以前的 GeoSpark)连接起来,并在两种方法之间获得意想不到的差异。特别是 ST_Distance 似乎产生了一些奇怪的结果,我无法弄清楚这是否是 Sedona 的问题,或者(更有可能)是关于我使用该功能的方式的问题。
我正在尝试加入对象彼此相距不到 5m 的位置。
方法一(在相交旁边使用缓冲区)
SELECT
MAX(ST_Distance(left.geometry, right.geometry)
FROM
left
INNER JOIN
right
ON ST_INTERSECTS(left.geometry, ST_BUFFER(right.geometry, 5))
这会产生预期的结果(即,这些对象之间的最大距离约为 5)
方法二(使用距离评估)
SELECT
MAX(ST_Distance(left.geometry, right.geometry)
FROM
left
INNER JOIN
right
ON ST_DISTANCE(left.geometry, right.geometry) < 5
这将返回大约 400 的大量数字,这似乎是错误的。
对我来说,这两个查询的结果似乎应该或多或少相同,尤其是后者看起来像 Apache 文档推荐的那样。
这两个查询应该以不同的方式评估是否有原因?我错过了这些功能的本质,或者这真的是 Sedona 的问题吗?