我正在编写一个 Flask 应用程序,使用从 GPS 传感器中提取的一些数据。我能在地图上绘制路径,并想计算 GPS 传感器行驶的距离。一种方法是只获取起点和终点坐标,但由于传感器行驶的方式,这种方法相当不准确。因此,我对每 50 个传感器样本进行采样。如果实际传感器样本大小为 1000,则现在将有 20 个样本(通过提取每 50 个样本)。
现在,我希望能够通过一个函数来计算我的样本列表的距离。到目前为止,我已经能够使用 geopy 包,但当我采用大量 GPS 样本集时,我会收到“请求过多”的错误,更不用说我还会有额外的处理时间来处理这些请求,这不是我想要的。
是否有更好的方法来计算包含纬度和经度坐标的列表元素的累积距离?
我找到了很多不同数学方法的计算距离的方式,仅使用 2 个坐标(lat1、lng1 和 lat2 和 lng2),但没有支持坐标列表的方法。
下面是我当前使用 geopy 的代码:
现在,我希望能够通过一个函数来计算我的样本列表的距离。到目前为止,我已经能够使用 geopy 包,但当我采用大量 GPS 样本集时,我会收到“请求过多”的错误,更不用说我还会有额外的处理时间来处理这些请求,这不是我想要的。
是否有更好的方法来计算包含纬度和经度坐标的列表元素的累积距离?
我找到了很多不同数学方法的计算距离的方式,仅使用 2 个坐标(lat1、lng1 和 lat2 和 lng2),但没有支持坐标列表的方法。
下面是我当前使用 geopy 的代码:
positions = [(lat_1, lng_1), (lat_2, lng_2), ..., (lat_n, lng_n)]
from geopy.distance import vincenty
def calculate_distances(trips):
temp = {}
distance = 0
for trip in trips:
positions = trip['positions']
for i in range(1, len(positions)):
distance += ((vincenty(positions[i-1], positions[i]).meters) / 1000)
if i == len(positions):
temp = {'distance': distance}
trip.update(temp)
distance = 0
trips
是包含有关旅行的信息(如持续时间、距离、起始和终止坐标等)的键值对字典列表,而 trips 中的 positions 对象是元组坐标的列表,如上图所示。
trips = [{data_1}, {data_2}, ..., {data_n}]