【问题标题】:Calculate radius and remove GPS coordinates计算半径并移除 GPS 坐标
【发布时间】:2018-03-17 04:17:53
【问题描述】:

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

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

总共 275 个坐标,从 Google 地图的“.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”坐标的半径在100m以内,但是从“1”到“3”我的值大于100m,即在这种情况下坐标“1”、“2””和“3”在我的文本文件“maps.txt”中。

Example1

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

【问题讨论】:

    标签: gps coordinates


    【解决方案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. ...

    点到向量的距离:

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

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

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

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

    【讨论】:

    • logvca,嗨,找到了一个看起来可以满足您需求的脚本。在我的回答中链接到它。
    猜你喜欢
    • 2011-07-20
    • 2018-08-28
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多