Пример #1
0
def parse_far(far):
    date = far.get("DA")
    time = far.get("TI")
    far_datetime_utc = make_datetime_json_serializable(date, time)

    value = {"farDatetimeUtc": far_datetime_utc}

    children = tagged_children(far)

    if "GEA" in children:
        assert len(children["GEA"]) == 1
        gear_el = children["GEA"][0]
        gear = parse_gea(gear_el)
        value = {**value, **gear}

    if "SPE" in children:
        catches = [parse_spe(spe) for spe in children["SPE"]]
        value["catches"] = catches

    if "POS" in children:
        assert len(children["POS"]) == 1
        pos = children["POS"][0]
        lat, lon = parse_pos(pos)
        value["latitude"] = try_float(lat)
        value["longitude"] = try_float(lon)

    data = {"log_type": "FAR", "value": value}

    return data
Пример #2
0
def parse_coe(coe):
    date = coe.get("DA")
    time = coe.get("TI")
    effort_zone_entry_datetime_utc = make_datetime_json_serializable(
        date, time)

    children = tagged_children(coe)

    value = {
        "effortZoneEntryDatetimeUtc": effort_zone_entry_datetime_utc,
        "targetSpeciesOnEntry": coe.get("TS"),
    }

    if "RAS" in children:
        assert len(children["RAS"]) == 1
        ras = children["RAS"][0]
        ras_data = parse_ras(ras)
        value["faoZoneEntered"] = ras_data["faoZone"]
        value["economicZoneEntered"] = ras_data["economicZone"]
        value["statisticalRectangleEntered"] = ras_data["statisticalRectangle"]
        value["effortZoneEntered"] = ras_data["effortZone"]

    if "POS" in children:
        assert len(children["POS"]) == 1
        pos = children["POS"][0]
        lat, lon = parse_pos(pos)
        value["latitudeEntered"] = try_float(lat)
        value["longitudeEntered"] = try_float(lon)

    data = {"log_type": "COE", "value": value}

    return data
Пример #3
0
def parse_gea(gea):

    data = {
        "gear": gea.get("GE"),
        "mesh": try_float(gea.get("ME")),
        "dimensions": try_float(gea.get("GC")),
    }

    return data
Пример #4
0
def parse_pro(pro):
    data = {
        "presentation": pro.get("PR"),
        "packaging": pro.get("TY"),
        "freshness": pro.get("FF"),
        "preservationState": pro.get("PS"),
        "conversionFactor": try_float(pro.get("CF")),
    }
    return data
Пример #5
0
def parse_spe(spe):
    data = {
        "species": spe.get("SN"),
        "weight": try_float(spe.get("WT")),
        "nbFish": try_float(spe.get("NF")),
    }

    children = tagged_children(spe)

    if "RAS" in children:
        assert len(children["RAS"]) == 1
        ras = children["RAS"][0]
        ras_data = parse_ras(ras)
        data = {**data, **ras_data}

    if "PRO" in children:
        assert len(children["PRO"]) == 1
        pro = children["PRO"][0]
        pro_data = parse_pro(pro)
        data = {**data, **pro_data}

    return data
Пример #6
0
def parse_pno(pno):
    date = pno.get("PD")
    time = pno.get("PT")
    predicted_arrival_datetime_utc = make_datetime_json_serializable(
        date, time)

    start_date = pno.get("DS")
    trip_start_date = make_datetime_json_serializable(start_date, None)

    children = tagged_children(pno)

    value = {
        "predictedArrivalDatetimeUtc": predicted_arrival_datetime_utc,
        "port": pno.get("PO"),
        "purpose": pno.get("PC"),
        "tripStartDate": trip_start_date,
    }

    if "RAS" in children:
        assert len(children["RAS"]) == 1
        ras = children["RAS"][0]
        ras_data = parse_ras(ras)
        value = {**value, **ras_data}

    if "SPE" in children:
        catches = [parse_spe(spe) for spe in children["SPE"]]
        value["catchOnboard"] = catches

    if "POS" in children:
        assert len(children["POS"]) == 1
        pos = children["POS"][0]
        lat, lon = parse_pos(pos)
        value["latitude"] = try_float(lat)
        value["longitude"] = try_float(lon)

    data = {"log_type": "PNO", "value": value}

    return data
Пример #7
0
def parse_pos(pos):
    return try_float(pos.get("LT")), try_float(pos.get("LG"))