1

我正在使用球坐标(经度/纬度,harsine 度量),并试图找到一种有效的方法来找到所有靠近大地线的点,并且它们的投影线在线上。我已经看到几个库可以进行空间索引或对几何执行操作,例如计算交点以及几何是否包含另一个几何,但我没有找到可以在球坐标中对几何进行空间索引和操作的库。因此,我自己尝试了一些东西。使用 scikit-learn 的 BallTree 进行空间索引和使用半正弦度量查询点,我执行了以下操作:

  • 输入:点、line_point1、line_point2、distance_threshold
  • 对点执行空间索引
  • 通过在 line_point1 和 line_point2 之间进行 SLERPing,以最多 distance_threshold 的间隔查找线上的点
  • 对于包括 line_point1 和 line_point2 在内的每个插值点,执行 sqrt(2)*distance_threshold 的半径查询(以保证没有误报)。删除重复项并在 query_points 中获取结果
  • 删除 query_points 中距离线比 distance_threshold 更远的所有点,或者它们的投影线不在线上。可以通过简单的封闭式解决方案来完成。

我想知道是否存在不需要重新发明轮子的更有效和更简单的解决方案。

我在 10000 个坐标上测试了我的实现,这些坐标在 lon/lat -1 到 1 之间均匀分布在赤道周围。我附上了收到的输出图像。青色是线本身,蓝色是靠近线的点,橙棕色是不靠近线的点。

4

0 回答 0