55 lines
1.1 KiB
Python
Executable File
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() |