我试图分析每一个点GPS收集数据的速度。我正在使用gpxpy,我已经从gpx文件中打印出了一些东西,如最大速度、开始和结束时间、移动时间等,但我不知道如何打印速度、lat、long等。gpx文件我有462分,我想知道更多关于每一点。我的代码如下:
def print_gpx_part_info(gpx_part, indentation=' '):
"""
gpx_part may be a track or segment.
"""
length_2d = gpx_part.length_2d()
length_3d = gpx_part.length_3d()
moving_time, stopped_time, moving_distance, stopped_distance, max_speed = gpx_part.get_moving_data()
print('%sTotal Moving time: (hr/min/sec) %s' % (indentation, format_time(moving_time)))
#print('%sStopped distance: %sm' % stopped_distance)
#print('%sMax speed: %sm/s = %skph' % (indentation, max_speed, max_speed * 60. ** 2 / 1000. if max_speed else 0))
print('%sMax speed: %smph' % (indentation, max_speed * 2.3694 if max_speed else 0))
start_time, end_time = gpx_part.get_time_bounds()
print('%sStarted: %s' % (indentation, start_time))
print('%sEnded: %s' % (indentation, end_time))
points_no = len(list(gpx_part.walk(only_points=True)))
print('%sPoints: %s' % (indentation, points_no))
print('')
def print_gpx_info(gpx):
print('File: %s' % gpx_file)
if gpx.name:
print(' GPX name: %s' % gpx.name)
if gpx.description:
print(' GPX description: %s' % gpx.description)
print_gpx_part_info(gpx)
for track_no, track in enumerate(gpx.tracks):
for segment_no, segment in enumerate(track.segments):
print ' Track #%s, Segment #%s' % (track_no, segment_no)
print_gpx_part_info(segment, indentation=' ')如有任何建议,将不胜感激。提前谢谢你。
发布于 2013-12-01 07:19:03
GPXTrackPoint类有一个方法speed_between(another_gpx_track_point)。只需遍历所有点并为相邻点调用此函数即可。
GPX文件格式还允许将速度直接保存在GPX点。如果您的轨道是这样的,则不需要使用speed_between()进行计算.只需使用gpx_track_point.speed属性即可。
我是从head (忽略typoos:)编写的,但这或多或少是代码:
for track in gpx.tracks:
for segment in track.segments:
for point_no, point in enumerate(segment.points):
if point.speed != None:
print "Speed=", point.speed
elif point_no > 0:
printf "Calculated speed=", point.speed_between(segment.points[point_no - 1])顺便说一句,您可以计算当前点与前一点、当前点和下一个点之间的速度,然后平均这些值以获得更好的速度。
https://stackoverflow.com/questions/20308253
复制相似问题