使用Python在球坐标中靠近大地测量线的点

2024-09-21 03:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用球坐标(lon/lat,haversine metric)并试图找到一种有效的方法来找到所有既靠近一条大地测量线的点,并且它们的投影w.r.t该线在这条线上。我见过几个可以对几何体进行空间索引或执行操作的库,例如计算交点以及几何体是否包含其他几何体,但我没有找到一个可以对球坐标中的几何体进行空间索引和操作的库。因此,我自己尝试了一些东西。使用scikit learn的BallTree对具有haversine度量的点进行空间索引和查询,我完成了以下操作:

  • 输入:点、线\点1、线\点2、距离\阈值
  • 对点执行空间索引
  • 通过在线\点1和线\点2之间滑动,以最大距离\阈值的间隔查找线上的点
  • 对于每个内插点,包括线\点1和线\点2,执行sqrt(2)*距离\阈值的半径查询(以保证没有假阴性)。删除重复项并获取查询点中的结果
  • 删除查询中的所有点,这些点要么距离直线的距离大于阈值,要么距离直线不在直线上的投影。可以通过简单的闭式解来实现。你知道吗

我想知道是否有一个更有效和更简单的解决方案,不需要重新发明车轮。你知道吗

我在10000个坐标上测试了我的实现,这些坐标均匀分布在lon/lat-1到1之间的赤道周围。我附加了我收到的输出的image。青色表示线条本身,蓝色表示接近线条的点,橙色表示不接近线条的点。你知道吗


Tags: 方法距离空间阈值metric直线线条投影

热门问题