给定GEO-JSON多边形,如下所示:
[
[15.520376, 38.231155],
[15.160243, 37.444046],
[15.309898, 37.134219],
[15.099988, 36.619987],
[14.335229, 36.996631],
[13.826733, 37.104531],
[12.431004, 37.61295],
[12.570944, 38.126381],
[13.741156, 38.034966],
[14.761249, 38.143874],
[15.520376, 38.231155]
]
如何检查GPS位置是否在多边形区域内?
例如,如果用户位于 Lat 37.387617 , Long 14.458008 ,我将如何搜索数组?
我不需要有人为我编写代码,我只是不明白我如何检查的逻辑。如果您有任何示例(任何语言),请指出我。
答案 0 :(得分:3)
此任务称为point in polygon
test。
Gerve已经解释了widley用于此任务的算法。但这不会帮助您实现它。有脚踩,如平行线。
其中一种算法叫做Crossings Multiply test,它是一种优化变体。
源代码:CrossingsMultiplyTest(文件中的最后一个函数)
中提供了概述使用经度表示x
坐标和y
坐标的纬度。
答案 1 :(得分:2)
我找到了一篇关于Ray-casting algorithm的文章。这里解释得很好,它的主旨是( in pseudo code ):
count ← 0
foreach side in polygon:
if ray_intersects_segment(P,side) then
count ← count + 1
if is_odd(count) then
return inside
else
return outside