Source code for arkimet.formatter.level
from arkimet.formatter import Formatter
from arkimet.formatter.eccodes import GribTable
import os
[docs]def format_level(v):
if v["style"] == "GRIB1":
type, l1, l2 = v["level_type"], v.get("l1"), v.get("l2")
levels = GribTable.load(1, "3")
if levels.has(type):
if l1 is None:
l1 = "-"
if l2 is None:
l2 = "-"
return "{} {} {} {}".format(
levels.abbr(type),
levels.desc(type),
l1, l2)
else:
return None
elif v["style"] in ("GRIB2S", "GRIB2D"):
# TODO: index centre, table_version, local_table_version
centre, table_version, local_table_version = None, None, None
if v["style"] == "GRIB2S":
type1, scale1, value1 = v["level_type"], v["scale"], v["value"]
type2, scale2, value2 = None, None, None
else:
type1, scale1, value1 = v["l1"], v["scale1"], v["value1"]
type2, scale2, value2 = v["l2"], v["scale2"], v["value2"]
levels = GribTable.load(
2, os.path.join(GribTable.get_grib2_table_prefix(centre, table_version, local_table_version), "4.5"))
def format_single_level(type, scale, value):
if levels.has(type):
if value is None:
value = "-"
if scale is None:
scale = "-"
return "{} {} {} {}".format(levels.abbr(type), levels.desc(type), scale, value)
else:
return None
if type2 is None:
return format_single_level(type1, scale1, value1)
else:
return format_single_level(type1, scale1, value1) + " " + format_single_level(type2, scale2, value2)
Formatter.register("level", format_level)