我有这个.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"/>
...
此文件包含超过18.000个坐标,描述了几个(相邻)区域。
我的最终目标是,如果给定的GPS坐标位于任何这些区域的边界内。对此最好的方法是什么?
相关,中间问题: 通过所有这些坐标,任何方法都能快速合理吗?
答案 0 :(得分:1)
检查点是否在没有孔的多边形区域内的解决方案
只需使用点中多边形函数即可。并且使用x表示经度,使用y表示纬度。你可以直接传递长,拉特的坐标。 这样的功能很容易在这里或通过谷歌找到。 例如,这7行代码:https://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
此功能失败的唯一可能性是当区域与基准限制重叠时(经度-180,180处的子午线)。
然而,由于主要是水,因此该区域不太可能与该线重叠
18.000点对于此任务没有问题,不需要高级算法。