我正在尝试更新GPS坐标之间的移动距离。我的错误是GPS可以在静止状态下移动短距离。我现在每隔一秒就把新的坐标添加到一个列表中,计算这一秒和最后一秒之间的距离,然后把这些距离添加到一个新列表中,然后把它们全部添加到一起
问题是,站着不动时,远处的小动作会不断累积。有人知道这样做的正确方法吗
self.breadcrumbs = []
#Calc Linear Distance GPS
while 1:
report = gpsp.get_current_value() #Retrieves GPS Values
try:
self.lat = report.lat
self.lon = report.lon
self.latlon = (self.lat, self.lon) #Put lat lon into tuple
self.breadcrumbs.append(self.latlon) #Append lat lon to breadcrumb list
breadcrumb_distances = [] #Holds distances between latlon data points
for i, b in enumerate(self.breadcrumbs):
current_location = b
last_location = self.breadcrumbs[i - 1]
miles = geodesic(current_location, last_location).miles
feet = miles * 5280 #convert to feet
breadcrumb_distances.append(feet)
cumulative_distance = round(sum(breadcrumb_distances),2)
print(cumulative_distance)
except Exception as e:
print(e)
sleep(1)
没有一种“正确”的方法可以做到这一点。问题是,当你移动非常缓慢时,“错误”的移动压倒了用户认为的实际移动。在获取出错的数据和删除代表实际运动的数据之间,这是一种折衷。问题在于获取数据的速度越快,速度越慢
一种方法是设置使您记录新数据的最小距离。如果新点与上一个点的距离ϵ在一定范围内,则放下该点。对于好的选择,这将忽略实际停止时的运动。然后,您不需要关心数据点之间的时间,或者需要记录点的时间(或者以某种方式指示间隙的位置和持续时间)。如果问题是由于停止周期造成的,这可能是最好的
另一种方法是降低测井频率。对于某些应用,后退到5s或类似时间就足够了
相关问题 更多 >
编程相关推荐