0

我希望将两个表与 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 的问题吗?

4

0 回答 0