为什么 Apache Sedona 的 ST_Buffer 和 ST_Distance 之间存在意外差异?

问题描述

我希望使用 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 的大数字,这似乎是错误的。

在我看来,这两个查询的结果应该或多或少相同,尤其是后者 looks like the Apache Documentation recommends it

这两个查询的评估结果是否不同?我忽略了这些功能的本质,或者这真的是 Sedona 的问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)