es_sfgtools.novatel_tools.utils module
- class es_sfgtools.novatel_tools.utils.MetadataModel(*, marker_name: str, rinex_version: str | None = '2.11', rinex_type: str | None = 'O', rinex_system: str | None = 'G', marker_number: str | None = '0001', marker_type: str | None = 'GEODETIC', observer: str | None = 'EarthScope', agency: str | None = 'EarthScope', program: str | None = 'gnsstools', run_by: str | None = '', date: str | None = None, receiver_model: str | None = 'NOV', receiver_serial: str | None = 'XXXXXXXXXX', antenna_position: List[float] | None = [0.0, 0.0, 0.0], antenna_offsetHEN: List[float] | None = [0.0, 0.0, 0.0], antenna_model: str | None = 'TRM59800.00 SCIT', antenna_serial: str | None = '987654321')
Bases:
BaseModel- agency: str | None
- antenna_model: str | None
- antenna_offsetHEN: List[float] | None
- antenna_position: List[float] | None
- antenna_serial: str | None
- date: str | None
- marker_name: str
- marker_number: str | None
- marker_type: str | None
- model_computed_fields = {}
A dictionary of computed field names and their corresponding ComputedFieldInfo objects.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- model_fields = {'agency': FieldInfo(annotation=Union[str, NoneType], required=False, default='EarthScope', description='Agency name'), 'antenna_model': FieldInfo(annotation=Union[str, NoneType], required=False, default='TRM59800.00 SCIT', description='Antenna model'), 'antenna_offsetHEN': FieldInfo(annotation=Union[List[float], NoneType], required=False, default=[0.0, 0.0, 0.0], description='Antenna offset [H, E, N]'), 'antenna_position': FieldInfo(annotation=Union[List[float], NoneType], required=False, default=[0.0, 0.0, 0.0], description='Antenna position [X, Y, Z]'), 'antenna_serial': FieldInfo(annotation=Union[str, NoneType], required=False, default='987654321', description='Antenna serial number'), 'date': FieldInfo(annotation=Union[str, NoneType], required=False, default_factory=<lambda>, description='Date'), 'marker_name': FieldInfo(annotation=str, required=True, description='Site name'), 'marker_number': FieldInfo(annotation=Union[str, NoneType], required=False, default='0001', description='Marker number'), 'marker_type': FieldInfo(annotation=Union[str, NoneType], required=False, default='GEODETIC', description='Marker type'), 'observer': FieldInfo(annotation=Union[str, NoneType], required=False, default='EarthScope', description='Observer name'), 'program': FieldInfo(annotation=Union[str, NoneType], required=False, default='gnsstools', description='Program name'), 'receiver_model': FieldInfo(annotation=Union[str, NoneType], required=False, default='NOV', description='Receiver model'), 'receiver_serial': FieldInfo(annotation=Union[str, NoneType], required=False, default='XXXXXXXXXX', description='Receiver serial number'), 'rinex_system': FieldInfo(annotation=Union[str, NoneType], required=False, default='G', description='RINEX system'), 'rinex_type': FieldInfo(annotation=Union[str, NoneType], required=False, default='O', description='RINEX type'), 'rinex_version': FieldInfo(annotation=Union[str, NoneType], required=False, default='2.11', description='RINEX version'), 'run_by': FieldInfo(annotation=Union[str, NoneType], required=False, default='', description='Run by')}
Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].
This replaces Model.__fields__ from Pydantic V1.
- observer: str | None
- program: str | None
- receiver_model: str | None
- receiver_serial: str | None
- rinex_system: str | None
- rinex_type: str | None
- rinex_version: str | None
- run_by: str | None
- es_sfgtools.novatel_tools.utils.check_metadata(meta: dict | MetadataModel) dict
Validate and normalize metadata input into a dictionary.
This function accepts either a raw metadata dictionary or a MetadataModel instance, validates it against the MetadataModel schema, and returns a dictionary representation.
If a dictionary is provided, it is used to instantiate MetadataModel; any validation error will raise a ValueError. If a MetadataModel instance is provided, it is converted to a dictionary via model_dump().
- Parameters:
meta (dict or MetadataModel) – Metadata to validate and normalize.
- Returns:
A dictionary representation of the validated metadata.
- Return type:
dict
- Raises:
ValueError – If meta is not a dict or MetadataModel, or if validation of the provided metadata fails.
- es_sfgtools.novatel_tools.utils.check_metadata_path(metadata_path: Path | str) str
Validate and normalize a metadata file path.
This function ensures that the given path points to an existing JSON metadata file and that its contents conform to the
MetadataModelschema.- Parameters:
str) (metadata_path (Path |) – The path to the metadata JSON file.
- Returns:
The validated metadata file path as a string.
- Return type:
str
- Raises:
AssertionError – If the metadata file does not exist.
ValueError – If the metadata file cannot be parsed into
MetadataModel.
- es_sfgtools.novatel_tools.utils.get_metadata(site: str, serialNumber: str = 'XXXXXXXXXX') dict
- es_sfgtools.novatel_tools.utils.get_metadatav2(site: str, serialNumber: str = 'XXXXXXXXXX', antennaPosition: list = [0, 0, 0], antennaeOffsetHEN: list = [0, 0, 0]) dict
- es_sfgtools.novatel_tools.utils.get_nov0002rnx_binary_path() Path
Get the path to the nov0002rnx binary based on the current platform.
- es_sfgtools.novatel_tools.utils.get_nov_000_tile_binary_path() Path
Get the path to the nov0002tile golang binary based on the current platform.
- es_sfgtools.novatel_tools.utils.get_nov_770_tile_binary_path() Path
Get the path to the novb2tile golang binary based on the current platform.
- es_sfgtools.novatel_tools.utils.get_nova2rnx_binary_path() Path
Get the path to the nova2rnxo golang binary based on the current platform.
- es_sfgtools.novatel_tools.utils.get_nova2tile_binary_path() Path
Get the path to the nova2tile golang binary based on the current platform.
- es_sfgtools.novatel_tools.utils.get_novb2rnxo_binary_path() Path
Get the path to the novb2rnxo binary based on the current platform.