MySQL 范围内地理空间查询地图
从大型数据库中查询地理数据以显示指定范围内的特定位置是一个常见的挑战在地图应用中。本问题探讨如何优化用户给定地理位置 5 英里半径内的地址检索。
用于距离计算的半正矢公式
确定之间的距离地球表面的两点,采用半正矢公式。此数学公式计算大圆距离,同时考虑到地球曲率以及点的纬度和经度。
使用 Haveline 公式进行查询优化
利用半正矢公式,提供的 MySQL 查询仅检索落在所需范围内的地址:
$sql = "SELECT *, (3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
参数和变量
结果
查询输出一个地址列表及其各自的计算距离。 HAVING 子句确保仅检索指定 5 英里半径内的地址,从而实现更高效、更有针对性的记录选择。这种方法极大地减少了传输和处理的数据量,从而提高了地图应用程序的整体性能。
以上是如何优化 MySQL 中半径内地址的地理空间查询?的详细内容。更多信息请关注PHP中文网其他相关文章!