帮我写一个python函数,能够在一组以经纬坐标为元素的列表中,找出距离某一经纬坐标最近的坐标的索引
时间: 2023-03-26 14:01:12 浏览: 112
好的,以下是 Python 函数的代码:
```python
from math import radians, sin, cos, sqrt, atan2
def find_nearest_coordinate_index(coordinates, target):
"""
在一组以经纬坐标为元素的列表中,找出距离某一经纬坐标最近的坐标的索引
:param coordinates: 经纬坐标列表,每个元素为一个包含经度和纬度的元组
:param target: 目标经纬坐标,为一个包含经度和纬度的元组
:return: 最近坐标的索引
"""
R = 6371 # 地球平均半径,单位为千米
lat1, lon1 = radians(target[1]), radians(target[])
distances = []
for i, coord in enumerate(coordinates):
lat2, lon2 = radians(coord[1]), radians(coord[])
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
distance = R * c
distances.append(distance)
return distances.index(min(distances))
```
这个函数接受两个参数:一个经纬坐标列表和一个目标经纬坐标。它会遍历经纬坐标列表中的每个坐标,计算它们与目标坐标之间的距离,并将这些距离存储在一个列表中。然后,它会返回距离最小的坐标的索引。
使用示例:
```python
coordinates = [(116.397128, 39.916527), (116.410886, 39.881949), (116.434364, 39.908176)]
target = (116.39703, 39.90869)
nearest_index = find_nearest_coordinate_index(coordinates, target)
print(nearest_index) # 输出 ,即第一个坐标是距离目标坐标最近的
```
希望这个函数能够帮助你解决问题!
阅读全文