本地数据库有一组经纬度存储,现在获取到一组经纬度,求数据库内距离他最近的经纬度
时间: 2024-03-09 14:48:31 浏览: 46
计算两经纬度之间的距离存储过程_mysql
5星 · 资源好评率100%
你可以使用Haversine公式来计算两个经纬度之间的距离,然后遍历数据库内所有经纬度,计算每一个经纬度与目标经纬度的距离,找到距离最近的经纬度。
Haversine公式如下:
```
a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlon/2)
c = 2 * atan2( √a, √(1−a) )
d = R * c
```
其中,`lat1`和`lon1`是目标经纬度,`lat2`和`lon2`是数据库内的经纬度,`R`是地球半径,可以取值为6371km。
你可以使用以下Python代码实现:
```python
from math import radians, sin, cos, sqrt, atan2
def get_nearest_coordinate(target_lat, target_lon, coordinates):
R = 6371.0
min_distance = float('inf')
nearest_coordinate = None
for coord in coordinates:
lat2, lon2 = coord
lat1, lon1 = target_lat, target_lon
dlat = radians(lat2 - lat1)
dlon = radians(lon2 - lon1)
a = sin(dlat / 2) ** 2 + cos(radians(lat1)) * cos(radians(lat2)) * sin(dlon / 2) ** 2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance = R * c
if distance < min_distance:
min_distance = distance
nearest_coordinate = coord
return nearest_coordinate
```
其中,`target_lat`和`target_lon`是目标经纬度,`coordinates`是数据库内所有经纬度的列表。调用该函数即可得到距离目标经纬度最近的经纬度。
阅读全文