确定GPS位置是否在gpx轨道段内

我有这个格式如下的.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坐标是在这些地区的任何一个边界内。 那么最好的方法是什么?

相关的中间问题:任何方法都可以合理快速地贯穿所有这些坐标吗?

解决scheme检查一个点是否在没有孔的多边形区域内

只需使用点多面函数。 用x表示经度,y表示纬度。 你可以直接通过长,半坐标。 这样的function很容易find这里或通过谷歌。 例如这里有7行代码: https : //www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html

此function失败的唯一可能性是该区域与基准极限(经度-180,180处的子午线)重叠。
然而,由于大部分是水,所以该地区不太可能重叠。
18.000分这个任务没有问题,不需要高级algorithm。