gpt4 book ai didi

php - 确定经纬圆和球体上的圆是否重叠

转载 作者:行者123 更新时间:2023-11-29 05:46:50 27 4
gpt4 key购买 nike

我正在使用 PHP 作为服务器脚本语言并使用 MySQL 作为数据库来创建具有地理邻近搜索功能的应用程序。

考虑一种情况:

我们有一组特定的对象,这些对象具有与各个对象相关联的纬度和经度位置。在指定国家和/或城市等位置详细信息以及 KM 中的范围/半径时,我们使用 MySQL 查询获取位于该半径/范围内的对象:

SELECT [columns] 
FROM [column]
WHERE 1=1
AND 3963.191 *
ACOS(
(SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) +
(COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) )
<= 10

以上计算将给出地球上距离国家/城市中心点10公里范围内的物体。

现在假设我有一个物体(带有纬度和经度)不在这 10 公里的区域内,例如距地球上的国家/城市中心点 15 公里。此对象的服务范围为 10 KM(提供服务范围达 10 KM 的区域)。

现在的问题是,如果我正在寻找距国家/城市中心点 10 公里范围内的对象,那么服务范围为 10 公里的对象(距国家/城市中心点 15 公里)也应包含在搜索中.

我怎样才能让它成为可能?我有国家/城市中心纬度、长坐标、范围/半径(我们必须在其中找出对象)和具有传递半径的对象(例如 10 KM)及其对应坐标。

你能指导我如何使用 PHP 和 MySQL 来做到这一点吗?

最佳答案

使用 MySQL 空间扩展 http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html

另一方面,如果您只想识别与给定圆相交的其他圆,它们将是所有这些圆心之间的距离小于半径之和。换句话说,假设您的原始点和范围由三重 (x0,y0 给出, r0),你需要所有的 (xn,yn,rn) 对于其中

√((x0 - xn)² + (y 0 - yn)²) ≤ r0 + rn

关于php - 确定经纬圆和球体上的圆是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/610496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com