PHP:如何使用与一组坐标的距离创建地理围栏(边界框)

PHP:如何使用与一组坐标的距离创建地理围栏(边界框),php,latitude-longitude,geofencing,coords,Php,Latitude Longitude,Geofencing,Coords,如何使用lat和lon以及距离创建地理围栏(边界框)的点 我有中心点的纬度和经度 我有地球围栏的距离 围绕这些多个点创建地理围栏的逻辑是什么 感谢您的帮助。1将中心纬度/经度转换为笛卡尔(x,y)单位米。 然后你按照你在学校学到的做所有几何: 2使用极坐标公式创建正方形的一个角点 phi = 45 * TO_RADIANS; corner.x = tcenter.x + r * sin(phi); corner.y = tcenter.y + r * cos(phi); 其中r是边界框正方形的

如何使用lat和lon以及距离创建地理围栏(边界框)的点

我有中心点的纬度和经度 我有地球围栏的距离

围绕这些多个点创建地理围栏的逻辑是什么


感谢您的帮助。

1将中心纬度/经度转换为笛卡尔(x,y)单位米。
然后你按照你在学校学到的做所有几何:

2使用极坐标公式创建正方形的一个角点

phi = 45 * TO_RADIANS;
corner.x = tcenter.x + r * sin(phi);
corner.y = tcenter.y + r * cos(phi);
其中r是边界框正方形的半对角线的长度(以米为单位)

通过使用φ=(90*i+45),i=0..3,对其他点执行相同操作


3使用反变换将角点(x/y)变换回lat/lon如果你有一个lat/lon点和一个距离,并且你想找到其他lat/lon点,这称为方位范围问题。请参见网站上指定距离和方位的目的地部分


如果您希望长方体(围栏)与赤道平行,则长方体东北角的方向角将为45度(在使用方程式之前,不要忘记转换为弧度)。然后添加90度以获得下一个角点,直到完成所有4个点。

这些值是否有可能来自启用地理位置的数据库?没有,但我目前正在对此进行研究。它们存储在标准的MYSQL数据库中,如Google Haversine或Vincenty,或在此处搜索以前的答案