计算半径并删除GPS坐标

计算半径并删除GPS坐标,gps,coordinates,Gps,Coordinates,我有一个问题,关于如何使用线段、投影向量或其他方法从“maps.txt”文件中删除一些“不必要的”坐标 在谷歌地图上创建的路径: 总计275个坐标,从Google地图的“.KML”文件中提取。 当我手动操作时,它保持不变(Map2),有9个坐标 我有一个名为“maps.txt”的文件,其中包含坐标的行的格式如下: Obs:每条线上的坐标:纬度、经度 有没有办法让代码读取我的文件“maps.txt”并使用100米的半径进行线段、矢量投影、点距离计算? 如果代码将从文件“maps.txt”

我有一个问题,关于如何使用线段、投影向量或其他方法从“maps.txt”文件中删除一些“不必要的”坐标

在谷歌地图上创建的路径:

总计275个坐标,从Google地图的“.KML”文件中提取。

当我手动操作时,它保持不变(Map2),有9个坐标

我有一个名为“maps.txt”的文件,其中包含坐标的行的格式如下: Obs:每条线上的坐标:纬度、经度

有没有办法让代码读取我的文件“maps.txt”并使用100米的半径进行线段、矢量投影、点距离计算? 如果代码将从文件“maps.txt”中“删除线/不必要的坐标”,则保持这种方式(仅举一个示例):

在Python、C、C++或其他语言中。 我希望我已经说清楚了,并提前感谢您的帮助。 谢谢你(:

我会尽量解释得更好。 在下图中,我有3个坐标(1、2和3)。 坐标“1”相对于“2”坐标的半径在100m以内,但从“1”到“3”,我的值大于100m,即在本例中,我的文本文件“maps.txt”中的坐标“1”、“2”和“3”

在示例2中的下图中,我只需要文件“maps.txt”中的坐标“1”和“3”。

更新:

下面是一个将KML转换为GPX的脚本:

下面是一个Python脚本,它似乎可以实现您想要的功能(对于GPX文件):


先前的答案:

我不知道您要我们回答的问题有多远;这个问题有点复杂,所以这里有一些伪代码供初学者使用:

总体算法:
  • 从点1到3的向量。检查点2到该向量的距离。(假设阈值正常)
  • 从点1到4的向量。检查点2和3与该向量的距离。(假设阈值正常)
  • 从点1到5的向量。检查点2、3和4与该向量的距离。(假设阈值不正确)
  • 确定第一个向量:从点1到4。第二个向量从点4开始
  • 从点4到6的向量。检查点5与该向量的距离
  • 从点4到点7的向量。检查点5和点6与该向量的距离
  • 点到矢量的距离: 在这一点上,我们需要做出决定:

  • 如果我们希望这是(相当)精确的,我们必须找到一条垂直于我们的线并穿过这一点的线,找到这两条线的交点。然后,我们使用哈弗森公式计算交点和这一点之间的距离。(除非坐标之间的距离有时更长,否则我认为我们不需要这个。)
  • 如果我们不太在意精确性,我们使用以下公式来计算“距离”,然后“实验性地”找到一个适合我们的好阈值。(这个阈值只是我们在检查距离时使用的一些浮点数。如果它高于阈值,我们就开始新的一行。)

    (式中,(x0,y0)是我们正在研究的点,直线穿过(x1,y1)和(x2,y2)。)


  • logvca,您好,找到了一个脚本,它似乎可以满足您的需要。在我的答案中链接到它。
    -37.2012600, -59.8404600
    -37.2000200, -59.8419600
    -37.1985300, -59.8439200
    -37.1970600, -59.8458500
    -37.1959100, -59.8473500
    -37.1957800, -59.8475200
    -37.1948600, -59.8486900
    -37.1939500, -59.8498600
    -37.1931400, -59.8509400
    -37.1928400, -59.8513100
    -37.1926700, -59.8515000
    -37.1924600, -59.8517200
    -37.1922600, -59.8519200
    
    -37.2012600, -59.8404600
    -37.1948600, -59.8486900
    -37.1922600, -59.8519200