首页 > 解决方案 > 在 Python 中计算 GPS 数据的平均值和归一化

问题描述

我有一个带有 gps 坐标的 json 数据集:

"utc_date_and_time":"2021-06-05 13:54:34", # timestamp
"hdg":"018.0",                             # heading
"sog":"000.0",                             # speed
"lat":"5905.3262N",                        # latitude
"lon":"00554.2433E"                        # longitude

这些数据将被导入数据库,每个“容器”每秒都有一个条目。正如您可以想象的那样,这是提供我不需要的准确度的大量数据。

我的目标:

我的脚本现在通过一个 for 循环将所有数据推送到数据库,其中包含不同的数据检查,这正在工作。我是 python 新手,每天仍然通过阅读和 youtube 视频学习,但如果有人能指出我如何实现上述目标的正确方向,那就太好了。

截至目前,数据已导入字典。我想知道是否创建一个以时间戳为关键的字典是要走的路,但我有点迷茫。

代码:

import os
import json
from pathlib import Path
from datetime import datetime, timedelta, date

def generator(data):
    for entry in data:
        yield entry

data = json.load(open("5_gps_2021-06-05T141524.1397180000.json"))["gps_data"]
gps_count = len(data)

start_time = None
new_gps = list()
tempdata = list()
seconds = 60
i = 0

for entry in generator(data):
    i = i+1
    if start_time == None:
        start_time = datetime.fromisoformat(entry['utc_date_and_time'])
    # TODO: Filter out values with too much deviation
    tempdata.append(entry)
    elapsed = (datetime.fromisoformat(entry['utc_date_and_time']) - start_time).total_seconds()
    if (elapsed >= seconds) or (i == gps_count):
        # TODO: Calculate average values etc. instead of using last
        new_gps.append(tempdata)
        tempdata = []
        start_time = None

print("GPS count before:" + str(gps_count))
print("GPS count after:" + str(len(new_gps)))

输出:

GPS count before:1186
GPS count after:20

标签: pythonjsonfiltergpscalculation

解决方案


推荐阅读