计算半径并移除GPS坐标

时间:2018-03-17 04:17:54

标签: gps coordinates

我有一个关于如何删除一些"不必要的问题的问题。来自" maps.txt"的坐标文件使用分段线,投影矢量或其他方法。

在Google地图上创建的路径: Map1

总共275个坐标,从" .KML"中提取谷歌地图的文件。 Map1_2

Map2

当我手动操作时,它会保持这种方式(Map2),有9个坐标。

我有一个名为" maps.txt"的文件。其坐标的线条采用以下格式: Obs:每条线上的坐标:纬度,经度。

  

-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

有没有办法让代码读取我的文件" maps.txt"使用半径为100米的线段,矢量投影,点距离计算? 如果代码将"删除行/不必要的坐标"从文件" maps.txt",这样离开(只是一个例子):

  

-37.2012600, -59.8404600
-37.1948600, -59.8486900
-37.1922600, -59.8519200

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

我会尝试更好地解释。 在下图中,我有3个坐标(1,2和3)。 坐标" 1"相对于" 2"半径在100米以内。坐标,但来自" 1"到" 3"我的值大于100米,即在这种情况下坐标" 1"," 2" "和" 3"在我的文本文件" maps.txt"。

Example1

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

1 个答案:

答案 0 :(得分:1)

<强>更新

这是一个将KML转换为GPX的脚本:https://gist.github.com/timabell/8791116

这是一个Python脚本,看起来它会做你想要的(对于GPX文件):https://wiki.openstreetmap.org/wiki/User:Travelling_salesman/gpx_reduce

上一个回答:

我不知道你要求我们采取多少答案;这个问题有点复杂,所以这里有一些初学者伪代码:

整体算法:

  1. 从第1点到第3点的矢量。检查点2与此向量的距离。 (假设门槛还可以)
  2. 从第1点到第4点的矢量。检查点2和3与此向量的距离。 (假设门槛还可以)
  3. 从第1点到第5点的向量。检查点2,3和4与此向量的距离。 (假设门槛很差)
  4. 确定第一个向量:它是从第1点到第4点。第二个向量从第4点开始。
  5. 从第4点到第6点的矢量。检查点5与此向量的距离。
  6. 从第4点到第7点的矢量。检查点5和6与此向量的距离。
  7. ...
  8. 距离矢量的距离:

    此时,我们需要做出决定:

    1. 如果我们想要(非常)精确,我们必须找到一条垂直于我们的直线并经过这一点的直线,并找到这两条直线的交点。然后,我们使用交点和点之间的半正公式计算距离。 (除非我们有时在坐标之间有更长的距离,否则我认为我们不需要这样做。)
    2. 如果我们不太关心准确性,我们使用以下公式计算“距离”,然后“实验”找到适合我们的良好阈值。 (这个阈值只是我们在检查距离时使用的一些浮点数。如果它高于阈值,我们就开始换行。)

      https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line#Line_defined_by_two_points

      Formula

      (其中(x0,y0)是我们正在调查的点,该线经过(x1,y1)和(x2,y2)。)