首页 > 解决方案 > 检查给定区域/坐标内的点的算法

问题描述

我在这里需要帮助。我仍然不知道如何检查一个点是否在某个位置(由某些坐标给出的位置)内。例如,我有一个区域,具有给定的纬度和经度,如这张图片

https://i.stack.imgur.com/zR9VX.png)(被线覆盖的那个)

和里面的一个点(标志)。检查该点是在区域内还是区域外的最快方法是什么?

请在这里帮助我

标签: phpalgorithmgoogle-maps-markersgraph-algorithm

解决方案


我们从纬度线和北极之间的地球面积公式开始。

A = 2*pi*R*h

其中R是地球的半径,h是从包含纬线的平面到极点的垂直距离。我们可以使用三角函数计算 h

h = R*(1-sin(lat))

因此,一条纬线以北的区域为

A = 2*pi*R^2(1-sin(lat))

两条纬线之间的面积是一个纬度以北的面积与另一纬度以北的面积之差:

A = |2*pi*R^2(1-sin(lat2)) - 2*pi*R^2(1-sin(lat1))|
= 2*pi*R^2 |sin(lat1) - sin(lat2)|

经纬矩形的面积与经度差成正比。我刚刚计算的面积是经线之间相差 360 度的面积。因此我们寻求的区域是

A = 2*pi*R^2 |sin(lat1)-sin(lat2)| |lon1-lon2|/360
= (pi/180)R^2 |sin(lat1)-sin(lat2)| |lon1-lon2|

推荐阅读