Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion src/openradardata_validator/odim2ordmsg.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import numpy
import pandas as pd

from openradardata_validator.radar_cf import radar_cf
from openradardata_validator.radar_cf import radar_cf, odim_acdd_attrs, country_naming_auth

current_filedir = Path(__file__).parent.resolve()

Expand Down Expand Up @@ -123,11 +123,24 @@ def parse_odim_source(odim: h5py.File, def_msg: dict[str, Any]) -> None:
def_msg["properties"]["platform"] = "0-20010-0-" + "OPERA"
def_msg["properties"]["platform_name"] = "OPERA"

if "how" in odim:
for attr in odim_acdd_attrs:
od_attr = get_attr_str(odim["how"], attr)
if od_attr:
def_msg["properties"][attr] = od_attr

if nod:
if station:
def_msg["properties"]["platform_name"] = "[" + nod + "]" + " " + station
else:
def_msg["properties"]["platform_name"] = "[" + nod + "]"

cc = str(nod)[:2].lower()
if def_msg["properties"]["naming_authority"] == "eu.eumetnet":
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the idea that if the naming authority is already given in the message template, we don't change it? Or why is this if clause here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it is a national product and the naming_authority is the default("eu.eumentnet"), the ingester updates naming_authority by country_naming_auth . Ingester skips this block when naming_authority was filled by NMS.

if cc.lower() in country_naming_auth:
def_msg["properties"]["naming_authority"] = country_naming_auth[cc]
else:
def_msg["properties"]["naming_authority"] = cc
else:
if org == "247":
def_msg["properties"]["period_int"] = 300
Expand Down Expand Up @@ -305,6 +318,7 @@ def parse_odim_dataset_data(
.decode("utf-8") # pylint: disable=no-member
)


time_start = (
dataset_msg["properties"]["datetime"]
if "datetime" in dataset_msg["properties"]
Expand Down
224 changes: 125 additions & 99 deletions src/openradardata_validator/radar_cf.py
Original file line number Diff line number Diff line change
@@ -1,99 +1,125 @@
radar_cf = {}
radar_cf["TH"] = "radar_linear_equivalent_reflectivity_factor_h"
radar_cf["TV"] = "radar_linear_equivalent_reflectivity_factor_v"
radar_cf["DBZH"] = "radar_equivalent_reflectivity_factor_h"
radar_cf["DBZV"] = "radar_equivalent_reflectivity_factor_v"
# ODIM deprecated
radar_cf["DBZ"] = "radar_equivalent_reflectivity_factor_h"

radar_cf["ZDR"] = "radar_differential_reflectivity_hv"
radar_cf["UZDR"] = "UZDR"
# ODIM deprecated
radar_cf["LZDR"] = "radar_differential_reflectivity_hv"

radar_cf["RHOHV"] = "radar_correlation_coefficient_hv"

radar_cf["URHOHV"] = ""

radar_cf["LDR"] = "radar_linear_depolarization_ratio"
radar_cf["ULDR"] = "ULDR"

radar_cf["PHIDP"] = "radar_differential_phase_hv"
radar_cf["UPHIDP"] = "UPHIDP"

radar_cf["PIA"] = "PIA"
radar_cf["KDP"] = "radar_specific_differential_phase_hv"
radar_cf["UKDP"] = "UKDP"

radar_cf["SQIH"] = "SQIH"
radar_cf["USQIH"] = "USQIH"
radar_cf["SQIV"] = "SQIV"
radar_cf["USQIV"] = "USQIV"
# ODIM deprecated
radar_cf["SQI"] = "SQI"

radar_cf["SNR"] = "radar_signal_to_noise_ratio"
radar_cf["SNRHC"] = "radar_signal_to_noise_ratio_copolar_h"
radar_cf["SNRHX"] = "radar_signal_to_noise_ratio_crosspolar_h"
radar_cf["SNRVC"] = "radar_signal_to_noise_ratio_copolar_v"
radar_cf["SNRVX"] = "radar_signal_to_noise_ratio_crosspolar_v"
radar_cf["USNRHC"] = "USNRHC"
radar_cf["USNRVC"] = "USNRVC"

radar_cf["CCORH"] = "CCOR_h"
radar_cf["CCORV"] = "CCOR_v"

radar_cf["CPA"] = "CPA"

radar_cf["RATE"] = "radar_estimated_precipitation_rate"
radar_cf["URATE"] = "URATE"

radar_cf["POR"] = "POR"
radar_cf["HI"] = "HI"
radar_cf["POH"] = "POH"
radar_cf["POSH"] = "POSH"

radar_cf["MESH"] = "MESH"

radar_cf["ACRR"] = "ACRR"
radar_cf["HGHT"] = "HGHT"
radar_cf["VIL"] = "VIL"

radar_cf["VRADH"] = "radial_velocity_of_scatterers_away_from_instrument_h"
radar_cf["UVRADH"] = "UVRADH"
radar_cf["VRADV"] = "radial_velocity_of_scatterers_away_from_instrument_v"
radar_cf["UVRADV"] = "UVRADV"
# ODIM deprecated
radar_cf["VRAD"] = "radial_velocity_of_scatterers_away_from_instrument_h"

radar_cf["VRADDH"] = "VRADDH"
radar_cf["VRADDV"] = "VRADDV"

radar_cf["WRADH"] = "radar_doppler_spectrum_width_h"
radar_cf["UWRADH"] = "UWRADH"
radar_cf["WRADV"] = "radar_doppler_spectrum_width_v"
radar_cf["UWRADV"] = "UWRADV"
# ODIM deprecated
radar_cf["WRAD"] = "radar_doppler_spectrum_width_h"

radar_cf["UWND"] = "UWND"
radar_cf["VWND"] = "VWND"

radar_cf["RSHR"] = "RSHR"
radar_cf["ASHR"] = "ASHR"
radar_cf["CSHR"] = "CSHR"
radar_cf["ESHR"] = "ESHR"
radar_cf["OSHR"] = "OSHR"
radar_cf["HSHR"] = "HSHR"
radar_cf["VSHR"] = "VSHR"
radar_cf["TSHR"] = "TSHR"
radar_cf["PSH"] = "PSH"
radar_cf["PSV"] = "PSV"

radar_cf["UPSPH"] = "UPSPH"
radar_cf["UPSPV"] = "UPSPV"

radar_cf["BRDR"] = "BRDR"
radar_cf["QIND"] = "QIND"

radar_cf["CLASS"] = "CLASS"
radar_cf = {
"ACRR": "ACRR",
"ASHR": "ASHR",
"BRDR": "BRDR",
"CCORH": "CCOR_h",
"CCORV": "CCOR_v",
"CLASS": "CLASS",
"CPA": "CPA",
"CSHR": "CSHR",
"DBZ": "radar_equivalent_reflectivity_factor_h",
"DBZH": "radar_equivalent_reflectivity_factor_h",
"DBZV": "radar_equivalent_reflectivity_factor_v",
"ESHR": "ESHR",
"HGHT": "HGHT",
"HI": "HI",
"HSHR": "HSHR",
"KDP": "radar_specific_differential_phase_hv",
"LDR": "radar_linear_depolarization_ratio",
"LZDR": "radar_differential_reflectivity_hv",
"MESH": "MESH",
"OSHR": "OSHR",
"PHIDP": "radar_differential_phase_hv",
"PIA": "PIA",
"POH": "POH",
"POR": "POR",
"POSH": "POSH",
"PSH": "PSH",
"PSV": "PSV",
"QIND": "QIND",
"RATE": "radar_estimated_precipitation_rate",
"RHOHV": "radar_correlation_coefficient_hv",
"RSHR": "RSHR",
"SNR": "radar_signal_to_noise_ratio",
"SNRHC": "radar_signal_to_noise_ratio_copolar_h",
"SNRHX": "radar_signal_to_noise_ratio_crosspolar_h",
"SNRVC": "radar_signal_to_noise_ratio_copolar_v",
"SNRVX": "radar_signal_to_noise_ratio_crosspolar_v",
"SQI": "SQI",
"SQIH": "SQIH",
"SQIV": "SQIV",
"TH": "radar_linear_equivalent_reflectivity_factor_h",
"TSHR": "TSHR",
"TV": "radar_linear_equivalent_reflectivity_factor_v",
"UKDP": "UKDP",
"ULDR": "ULDR",
"UPHIDP": "UPHIDP",
"UPSPH": "UPSPH",
"UPSPV": "UPSPV",
"URATE": "URATE",
"URHOHV": "URHOHV",
"USNRHC": "USNRHC",
"USNRVC": "USNRVC",
"USQIH": "USQIH",
"USQIV": "USQIV",
"UVRADH": "UVRADH",
"UVRADV": "UVRADV",
"UWND": "UWND",
"UWRADH": "UWRADH",
"UWRADV": "UWRADV",
"UZDR": "UZDR",
"VIL": "VIL",
"VRAD": "radial_velocity_of_scatterers_away_from_instrument_h",
"VRADDH": "VRADDH",
"VRADDV": "VRADDV",
"VRADH": "radial_velocity_of_scatterers_away_from_instrument_h",
"VRADV": "radial_velocity_of_scatterers_away_from_instrument_v",
"VSHR": "VSHR",
"VWND": "VWND",
"WRAD": "radar_doppler_spectrum_width_h",
"WRADH": "radar_doppler_spectrum_width_h",
"WRADV": "radar_doppler_spectrum_width_v",
"ZDR": "radar_differential_reflectivity_hv"
}

odim_acdd_attrs = [
"license",
"naming_authority",
"institution",
"creator_name",
"creator_email",
"creator_url",
"publisher_name",
"publisher_email",
"publisher_url",
"creator_type",
"creator_institution",
"publisher_type",
"publisher_institution"
]

country_naming_auth = {
"at": "at.austrocontrol",
"be": "be.meteo",
"ch": "ch.meteoswiss",
"mt": "com.maltairport",
"cy": "cy.gov.moa.dom",
"cz": "cz.chmi",
"de": "de.dwd",
"dk": "dk.dmi",
"ee": "ee.envir",
"es": "es.aemet",
"fi": "fi.fmi",
"fr": "fr.meteo",
"gr": "gr.hnms",
"hr": "hr.dhz.cirus",
"hu": "hu.met",
"ie": "ie.met",
"il": "il.gov.ims",
"is": "is.vedur",
"je": "je.gov.jerseymet",
"lt": "lt.meteo",
"lu": "lu.etat.airport",
"lv": "lv.lvgmc",
"md": "md.gov.meteo",
"nl": "nl.knmi",
"no": "no.met",
"pl": "pl.imgw",
"pt": "pt.ipma",
"ro": "ro.meteoromania",
"rs": "rs.gov.hidmet",
"se": "se.smhi",
"si": "si.gov",
"sk": "sk.shmu",
"uk": "uk.gov.metoffice"
}
Loading