gpt4 book ai didi

mysql - 如何查询纬度/经度区域内的所有记录?

转载 作者:可可西里 更新时间:2023-11-01 08:00:02 25 4
gpt4 key购买 nike

我正在寻找创建一个 MySQL 查询来查找世界指定区域内的所有记录。每条记录包含一个点(纬度/经度),我有指定区域的右上角(纬度/经度)和左下角(纬度/经度)。

有了这些信息,我怎样才能找到合适的记录?

最佳答案

LAT1 = MIN(右上纬度,左下纬度)

LAT2 = MAX(右上纬度,左下纬度)

LON1 = MIN(右上经度,左下经度)

LON2 = MAX(右上角经度,左下角经度)

SELECT fields
FROM points
WHERE lat BETWEEN LAT1 AND LAT2
AND lon BETWEEN LON1 AND LON2

这样,如果您带着盒子穿过本初子午线或赤道,查询应该会处理。

要处理第 180 条子午线(或逆子午线),您需要比较右经度和左经度,检查右经度是否为负而左经度是否为正。如果是这样,那么您已经穿过第 180 条子午线。然后,您的查询必须如下所示:

SELECT fields
FROM points
WHERE lat BETWEEN LAT1 AND LAT2
AND (lon BETWEEN -180 AND LON1 OR lon BETWEEN LON2 AND 180)

不过,我宁愿不去想如何处理一个位于地球顶部或底部的盒子,它位于真正的两极之一之上。 =)

关于mysql - 如何查询纬度/经度区域内的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920565/

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