【问题标题】:Determine if a GPS location is within a gpx track segment确定 GPS 位置是否在 gpx 轨道段内
【发布时间】:2021-01-14 01:07:31
【问题描述】:

我有这个格式如下的 .gpx 文件:

<trk>
<name>Area1</name>
<extensions>
<gpxx:TrackExtension>
<gpxx:DisplayColor>Magenta</gpxx:DisplayColor>
</gpxx:TrackExtension>
</extensions>
<trkseg>
<trkpt lat="52.806521779700120" lon="5.795177063346190"/>
...
<trkpt lat="52.806521779700120" lon="5.795177063346190"/>
</trkseg>
</trk>
<trk>
<name>Area2</name>
<extensions>
<gpxx:TrackExtension>
<gpxx:DisplayColor>Magenta</gpxx:DisplayColor>
</gpxx:TrackExtension>
</extensions>
<trkseg>
<trkpt lat="52.764805147811629" lon="5.377259838276261"/>
...

这个文件包含超过 18000 个坐标,描述了几个(相邻的)区域。

我的最终目标是查看给定的 GPS 坐标是否在这些区域的边界内。最好的方法是什么?

相关的中间问题: 是否有任何方法可以合理快速地通过所有这些坐标?

【问题讨论】:

    标签: ios xcode performance gps gpx


    【解决方案1】:

    检查点是否在没有孔的多边形区域内的解决方案

    只需使用多边形内的点函数。并使用 x 表示经度,使用 y 表示纬度。您可以直接传入长的纬度坐标。 这样的功能很容易在这里或通过谷歌找到。 例如这里,7行代码:https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html

    此功能失败的唯一可能性是该区域与基准限制重叠(经度 -180、180 的子午线)。
    但是,由于主要是水,该区域不太可能与该线重叠。
    18.000分对这个任务来说没问题,不需要高级算法。

    【讨论】:

    • 亲爱的 Alex,非常感谢您的回答。与此同时,我找到了一个 Web 服务,它对我来说是最有效的。由于我什至不知道笛卡尔空间是什么,恐怕我无权将您的答案归类为正确。希望未来的访客是。
    • 好的,我认为您需要为此编写一个程序,如果您只需要一次拍摄或演示系统,则可以使用 Web 服务。笛卡尔空间是一个 x,y 坐标系,就像您在学校中使用的那样。 GPS 坐标位于球体上,因此它不是笛卡尔空间。为了使学校数学发挥作用,您需要从球坐标转换为平面笛卡尔坐标。
    • 我明白了。非常感谢。
    • 我好像没看清楚你的问题,我已经更新了,因为任务要容易得多。
    • 哇,七行。虽然我已经解决了我的特殊情况,但我会研究这个。
    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 2019-05-15
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多