es_sfgtools.novatel_tools.novatel_to_rinex_operations module

es_sfgtools.novatel_tools.novatel_to_rinex_operations.novatel_2rinex(files: List[Path] | List[str] | str | Path, writedir: Path | str | None = None, site: str | None = None, metadata: dict | MetadataModel | Path | str | None = None, modulo_millis: int = 0, num_routines: int = 1, **kwargs) List[Path]

Convert NovAtel NOV000 / NOV770 binary files to daily RINEX.

This high-level helper accepts a single file or a list of files containing NOV000 (.bin) and/or NOV770 (.raw) data. If writedir is not provided, files are grouped by parent directory and converted in-place (RINEX written alongside the source data). If writedir is supplied, all outputs are written to that directory.

Parameters:
  • files (List[pathlib.Path] | List[str] | str | pathlib.Path) – Input NOV000/NOV770 files to convert. Can be a single file path or a list of file paths.

  • writedir (Optional[pathlib.Path | str], optional) – Directory where output RINEX files will be written. If not provided, files are grouped by their parent directory and RINEX files are written to those directories, by default None.

  • site (Optional[str], optional) – 4-character site code. Required if metadata is not provided. Ignored if metadata is provided, by default None.

  • metadata (Optional[dict | MetadataModel | pathlib.Path | str], optional) – Metadata for the site. Can be a dictionary, a MetadataModel instance, or a path to a JSON metadata file. If not provided, site must be given so that minimal metadata can be generated, by default None.

  • modulo_millis (int, optional) – Decimation modulo in milliseconds (e.g., 1000 for 1 Hz, 15000 for 15s intervals). If 0, no decimation is applied. Loss-of-lock indicators from skipped epochs are propagated to the next written epoch. Default is 0 (no decimation).

  • num_routines (int, optional) – Number of concurrent goroutines to use for processing files in the Go binary. Defaults to 1.

  • **kwargs – Currently ignored; reserved for future configuration options passed through to the underlying Go binaries.

Returns:

List of generated daily RINEX file paths.

Return type:

List[pathlib.Path]

Raises:
  • ValueError – If input files are invalid, or if both metadata and site are missing/invalid.

  • FileNotFoundError – If any of the input files cannot be found.

  • RuntimeError – If the underlying Go binaries return a non-zero status code.

  • Calls

  • -----

  • - _novatel_2rinex_wrapper

  • - get_nov0002rnx_binary_path

  • - get_novb2rnxo_binary_path

  • - check_metadata

  • - check_metadata_path

Notes

  • Either metadata or a 4-character site code must be supplied.

  • NOV000.bin files (.bin) typically have lower frequency GNSS observations. Because

of this we process these first before NOV770.raw files (.raw). This ensures that RINEX files with higher frequency observations are not inadvertently overwritten by lower frequency data when writedir is shared.