meshrange/scripts/log2json.py

55 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python
import json
import sys
import csv
fieldnames = [
"status",
"send_time",
"recv_time",
"pos_time",
"lat",
"lon",
"snr_send",
"snr_recv",
]
geo = {
"type": "FeatureCollection",
"features": []
}
def main():
if len(sys.argv) < 2:
print(f"Usage:\n\t{sys.argv[0]} <traces.log>")
return
with open(sys.argv[1]) as f:
reader = csv.DictReader(f, fieldnames=fieldnames)
for num, row in enumerate(reader):
recv_delay = float(row["recv_time"]) - float(row["send_time"])
pos_delay = float(row["send_time"]) - float(row["pos_time"])
geo["features"] += [{
"type": "Feature",
"id": num,
"geometry": {
"type": "Point",
"coordinates": [
float(row["lon"]),
float(row["lat"]),
]
},
"properties": {
"recv_delay": recv_delay,
"pos_delay": pos_delay,
"snr_send": float(row["snr_send"]) if row["snr_send"] != '-' else None,
"snr_recv": float(row["snr_recv"]) if row["snr_recv"] != "-" else None,
}
}]
print(json.dumps(geo, indent=2))
if __name__ == '__main__':
main()