def get_lat_lon_time_from_nmea()

in mapillary_tools/geotag/geotag_from_nmea_file.py [0:0]


def get_lat_lon_time_from_nmea(nmea_file: str) -> T.List[types.GPXPoint]:
    with open(nmea_file, "r") as f:
        lines = f.readlines()
        lines = [l.rstrip("\n\r") for l in lines]

    # Get initial date
    for l in lines:
        if "GPRMC" in l:
            data = pynmea2.parse(l)
            date = data.datetime.date()
            break

    # Parse GPS trace
    points = []
    for l in lines:
        if "GPRMC" in l:
            data = pynmea2.parse(l)
            date = data.datetime.date()

        if "$GPGGA" in l:
            data = pynmea2.parse(l)
            timestamp = datetime.datetime.combine(date, data.timestamp)
            lat, lon, alt = data.latitude, data.longitude, data.altitude
            points.append(types.GPXPoint(time=timestamp, lat=lat, lon=lon, alt=alt))

    points.sort()
    return points