canvod-readers 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- canvod_readers-0.2.0/PKG-INFO +113 -0
- canvod_readers-0.2.0/README.md +82 -0
- canvod_readers-0.2.0/pyproject.toml +58 -0
- canvod_readers-0.2.0/src/canvod/readers/.DS_Store +0 -0
- canvod_readers-0.2.0/src/canvod/readers/__init__.py +84 -0
- canvod_readers-0.2.0/src/canvod/readers/base.py +501 -0
- canvod_readers-0.2.0/src/canvod/readers/builder.py +234 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/.DS_Store +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/GLONASS_channels.txt +9 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/__init__.py +16 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/bands.py +424 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/constants.py +80 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/constellations.py +664 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/data/igs_satellite_metadata.snx +3689 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/exceptions.py +162 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/.DS_Store +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/BDS_B1I.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/BDS_B2b.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/GPS_L1_L2.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/GPS_L5.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/Galileo_OS_SIS_ICD_v2.1.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/ICD-GLONASS-CDMA-General.-Edition-1.0-2016-1.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/interface_control_documents/__init__.py +1 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/metadata.py +326 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/models.py +1052 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/satellite_catalog.py +950 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/signals.py +146 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/utils.py +103 -0
- canvod_readers-0.2.0/src/canvod/readers/gnss_specs/validation_constants.py +465 -0
- canvod_readers-0.2.0/src/canvod/readers/matching/.DS_Store +0 -0
- canvod_readers-0.2.0/src/canvod/readers/matching/__init__.py +14 -0
- canvod_readers-0.2.0/src/canvod/readers/matching/dir_matcher.py +420 -0
- canvod_readers-0.2.0/src/canvod/readers/matching/models.py +90 -0
- canvod_readers-0.2.0/src/canvod/readers/rinex/.DS_Store +0 -0
- canvod_readers-0.2.0/src/canvod/readers/rinex/__init__.py +13 -0
- canvod_readers-0.2.0/src/canvod/readers/rinex/rinex304.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/rinex/v3_04.py +2079 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/.DS_Store +0 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/AsteRx SB3 ProBase Firmware v4.14.0 Reference Guide.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/AsteRx SB3 ProBase Firmware v4.15.1 Reference Guide.pdf +0 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/__init__.py +40 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/_registry.py +301 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/_scaling.py +418 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/models.py +175 -0
- canvod_readers-0.2.0/src/canvod/readers/sbf/reader.py +2483 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: canvod-readers
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: GNSS data format readers for canVODpy
|
|
5
|
+
Keywords: GNSS,RINEX,GPS,geodesy,remote sensing
|
|
6
|
+
Author: Nicolas François Bader
|
|
7
|
+
Author-email: Nicolas François Bader <nicolas.bader@geo.tuwien.ac.at>
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Science/Research
|
|
10
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
14
|
+
Requires-Dist: georinex>=1.16.0
|
|
15
|
+
Requires-Dist: matplotlib>=3.7.0
|
|
16
|
+
Requires-Dist: natsort>=8.4.0
|
|
17
|
+
Requires-Dist: numpy>=1.24.0
|
|
18
|
+
Requires-Dist: pint>=0.23
|
|
19
|
+
Requires-Dist: pydantic>=2.5.0
|
|
20
|
+
Requires-Dist: pytz>=2023.3
|
|
21
|
+
Requires-Dist: xarray>=2023.12.0
|
|
22
|
+
Requires-Dist: tomli>=2.0.0 ; python_full_version < '3.11'
|
|
23
|
+
Requires-Dist: ipykernel>=7.1.0
|
|
24
|
+
Requires-Dist: plotly>=6.5.1
|
|
25
|
+
Requires-Dist: marimo>=0.19.7
|
|
26
|
+
Requires-Dist: sbf-parser>=1.0.3
|
|
27
|
+
Maintainer: Climate and Environmental Remote Sensing (CLIMERS)
|
|
28
|
+
Maintainer-email: Climate and Environmental Remote Sensing (CLIMERS) <nicolas.bader@geo.tuwien.ac.at>
|
|
29
|
+
Requires-Python: >=3.14
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
|
|
32
|
+
# canvod-readers
|
|
33
|
+
|
|
34
|
+
GNSS data format readers for canVODpy.
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- **RINEX v3.04 Support**: Complete reader for RINEX v3 observation files
|
|
39
|
+
- **Signal IDs**: Unique identifiers for each GNSS signal (SV|BAND|CODE format)
|
|
40
|
+
- **xarray Integration**: Convert observations to xarray Datasets
|
|
41
|
+
- **Automatic Validation**: Header parsing and epoch completeness checking
|
|
42
|
+
- **Memory Efficient**: Lazy iteration through large files
|
|
43
|
+
- **Flexible Filtering**: Filter by GNSS system, frequency band, or code type
|
|
44
|
+
|
|
45
|
+
## Installation
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
uv pip install canvod-readers
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
from pathlib import Path
|
|
55
|
+
from canvod.readers import Rnxv3Obs
|
|
56
|
+
|
|
57
|
+
# Load RINEX file
|
|
58
|
+
filepath = Path("path/to/rinex.25o")
|
|
59
|
+
reader = Rnxv3Obs(fpath=filepath)
|
|
60
|
+
|
|
61
|
+
# Convert to xarray Dataset
|
|
62
|
+
dataset = reader.to_ds(keep_rnx_data_vars=["SNR"])
|
|
63
|
+
|
|
64
|
+
# Filter GPS L1 signals
|
|
65
|
+
gps_l1 = dataset.where(
|
|
66
|
+
(dataset.system == 'G') & (dataset.band == 'L1'),
|
|
67
|
+
drop=True
|
|
68
|
+
)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Interactive Examples
|
|
72
|
+
|
|
73
|
+
View interactive examples using marimo notebooks:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Edit mode (interactive development)
|
|
77
|
+
just marimo
|
|
78
|
+
|
|
79
|
+
# Presentation mode (read-only)
|
|
80
|
+
just marimo-present
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Or directly:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
uv run marimo edit docs/examples.py
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Development
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Clone repository
|
|
93
|
+
git clone https://github.com/nfb2021/canvodpy.git
|
|
94
|
+
cd canvodpy/packages/canvod-readers
|
|
95
|
+
|
|
96
|
+
# Install dependencies
|
|
97
|
+
uv sync
|
|
98
|
+
|
|
99
|
+
# Run tests
|
|
100
|
+
just test
|
|
101
|
+
|
|
102
|
+
# Check code quality
|
|
103
|
+
just check
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Documentation
|
|
107
|
+
|
|
108
|
+
- Interactive examples: `docs/examples.py` (marimo notebook)
|
|
109
|
+
- [Centralized documentation](../../docs/packages/readers/overview.md)
|
|
110
|
+
|
|
111
|
+
## License
|
|
112
|
+
|
|
113
|
+
Apache License 2.0
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# canvod-readers
|
|
2
|
+
|
|
3
|
+
GNSS data format readers for canVODpy.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **RINEX v3.04 Support**: Complete reader for RINEX v3 observation files
|
|
8
|
+
- **Signal IDs**: Unique identifiers for each GNSS signal (SV|BAND|CODE format)
|
|
9
|
+
- **xarray Integration**: Convert observations to xarray Datasets
|
|
10
|
+
- **Automatic Validation**: Header parsing and epoch completeness checking
|
|
11
|
+
- **Memory Efficient**: Lazy iteration through large files
|
|
12
|
+
- **Flexible Filtering**: Filter by GNSS system, frequency band, or code type
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
uv pip install canvod-readers
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
from pathlib import Path
|
|
24
|
+
from canvod.readers import Rnxv3Obs
|
|
25
|
+
|
|
26
|
+
# Load RINEX file
|
|
27
|
+
filepath = Path("path/to/rinex.25o")
|
|
28
|
+
reader = Rnxv3Obs(fpath=filepath)
|
|
29
|
+
|
|
30
|
+
# Convert to xarray Dataset
|
|
31
|
+
dataset = reader.to_ds(keep_rnx_data_vars=["SNR"])
|
|
32
|
+
|
|
33
|
+
# Filter GPS L1 signals
|
|
34
|
+
gps_l1 = dataset.where(
|
|
35
|
+
(dataset.system == 'G') & (dataset.band == 'L1'),
|
|
36
|
+
drop=True
|
|
37
|
+
)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Interactive Examples
|
|
41
|
+
|
|
42
|
+
View interactive examples using marimo notebooks:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Edit mode (interactive development)
|
|
46
|
+
just marimo
|
|
47
|
+
|
|
48
|
+
# Presentation mode (read-only)
|
|
49
|
+
just marimo-present
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Or directly:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
uv run marimo edit docs/examples.py
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Development
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Clone repository
|
|
62
|
+
git clone https://github.com/nfb2021/canvodpy.git
|
|
63
|
+
cd canvodpy/packages/canvod-readers
|
|
64
|
+
|
|
65
|
+
# Install dependencies
|
|
66
|
+
uv sync
|
|
67
|
+
|
|
68
|
+
# Run tests
|
|
69
|
+
just test
|
|
70
|
+
|
|
71
|
+
# Check code quality
|
|
72
|
+
just check
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Documentation
|
|
76
|
+
|
|
77
|
+
- Interactive examples: `docs/examples.py` (marimo notebook)
|
|
78
|
+
- [Centralized documentation](../../docs/packages/readers/overview.md)
|
|
79
|
+
|
|
80
|
+
## License
|
|
81
|
+
|
|
82
|
+
Apache License 2.0
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "canvod-readers"
|
|
3
|
+
version = "0.2.0"
|
|
4
|
+
description = "GNSS data format readers for canVODpy"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.14"
|
|
7
|
+
authors = [
|
|
8
|
+
{name = "Nicolas François Bader", email = "nicolas.bader@geo.tuwien.ac.at"},
|
|
9
|
+
]
|
|
10
|
+
maintainers = [
|
|
11
|
+
{name = "Climate and Environmental Remote Sensing (CLIMERS)", email = "nicolas.bader@geo.tuwien.ac.at"},
|
|
12
|
+
]
|
|
13
|
+
keywords = ["GNSS", "RINEX", "GPS", "geodesy", "remote sensing"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Science/Research",
|
|
17
|
+
"License :: OSI Approved :: Apache Software License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.14",
|
|
20
|
+
"Topic :: Scientific/Engineering :: GIS",
|
|
21
|
+
]
|
|
22
|
+
dependencies = [
|
|
23
|
+
"georinex>=1.16.0",
|
|
24
|
+
"matplotlib>=3.7.0",
|
|
25
|
+
"natsort>=8.4.0",
|
|
26
|
+
"numpy>=1.24.0",
|
|
27
|
+
"pint>=0.23",
|
|
28
|
+
"pydantic>=2.5.0",
|
|
29
|
+
"pytz>=2023.3",
|
|
30
|
+
"xarray>=2023.12.0",
|
|
31
|
+
"tomli>=2.0.0; python_version < '3.11'",
|
|
32
|
+
"ipykernel>=7.1.0",
|
|
33
|
+
"plotly>=6.5.1",
|
|
34
|
+
"marimo>=0.19.7",
|
|
35
|
+
"sbf-parser>=1.0.3",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[dependency-groups]
|
|
39
|
+
dev = [
|
|
40
|
+
"pytest>=8.0",
|
|
41
|
+
"pytest-cov>=5.0",
|
|
42
|
+
"ruff>=0.14",
|
|
43
|
+
"ty>=0.0.9",
|
|
44
|
+
"marimo>=0.9.0",
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
[build-system]
|
|
48
|
+
requires = ["uv_build>=0.9.17,<0.10.0"]
|
|
49
|
+
build-backend = "uv_build"
|
|
50
|
+
|
|
51
|
+
[tool.ty]
|
|
52
|
+
extend-exclude = [
|
|
53
|
+
"**/docs/*.ipynb",
|
|
54
|
+
"**/docs/examples.py",
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
[tool.uv.build-backend]
|
|
58
|
+
module-name = "canvod.readers"
|
|
Binary file
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""GNSS data format readers.
|
|
2
|
+
|
|
3
|
+
This package provides readers for various GNSS data formats, all implementing
|
|
4
|
+
a common interface for seamless integration with processing pipelines.
|
|
5
|
+
|
|
6
|
+
Supported formats:
|
|
7
|
+
- RINEX v3.04 (GNSS observations)
|
|
8
|
+
- More formats coming soon...
|
|
9
|
+
|
|
10
|
+
Quick Start
|
|
11
|
+
-----------
|
|
12
|
+
```python
|
|
13
|
+
from canvod.readers import Rnxv3Obs
|
|
14
|
+
|
|
15
|
+
# Read RINEX v3 file
|
|
16
|
+
reader = Rnxv3Obs(fpath="station.24o")
|
|
17
|
+
dataset = reader.to_ds()
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Or use the canvodpy factory for automatic format detection:
|
|
21
|
+
```python
|
|
22
|
+
from canvodpy import ReaderFactory
|
|
23
|
+
|
|
24
|
+
# Auto-detects format from file header
|
|
25
|
+
reader = ReaderFactory.create_from_file("station.24o")
|
|
26
|
+
dataset = reader.to_ds()
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Directory Matching:
|
|
30
|
+
```python
|
|
31
|
+
from canvod.readers import DataDirMatcher
|
|
32
|
+
|
|
33
|
+
# Find dates with RINEX files in both receivers
|
|
34
|
+
matcher = DataDirMatcher(root=Path("/data/01_Rosalia"))
|
|
35
|
+
for matched_dirs in matcher:
|
|
36
|
+
print(matched_dirs.yyyydoy)
|
|
37
|
+
# Load RINEX files from matched_dirs.canopy_data_dir
|
|
38
|
+
```
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
from canvod.readers.base import (
|
|
42
|
+
DEFAULT_REQUIRED_VARS,
|
|
43
|
+
REQUIRED_ATTRS,
|
|
44
|
+
REQUIRED_COORDS,
|
|
45
|
+
REQUIRED_DIMS,
|
|
46
|
+
DatasetStructureValidator,
|
|
47
|
+
GNSSDataReader,
|
|
48
|
+
SignalID,
|
|
49
|
+
validate_dataset,
|
|
50
|
+
)
|
|
51
|
+
from canvod.readers.builder import DatasetBuilder
|
|
52
|
+
from canvod.readers.matching import (
|
|
53
|
+
DataDirMatcher,
|
|
54
|
+
MatchedDirs,
|
|
55
|
+
PairDataDirMatcher,
|
|
56
|
+
PairMatchedDirs,
|
|
57
|
+
)
|
|
58
|
+
from canvod.readers.rinex.v3_04 import Rnxv3Obs
|
|
59
|
+
from canvod.readers.sbf import SbfEpoch, SbfHeader, SbfReader, SbfSignalObs
|
|
60
|
+
from canvod.utils.tools import YYYYDOY
|
|
61
|
+
|
|
62
|
+
__version__ = "0.1.0"
|
|
63
|
+
|
|
64
|
+
__all__ = [
|
|
65
|
+
"DEFAULT_REQUIRED_VARS",
|
|
66
|
+
"REQUIRED_ATTRS",
|
|
67
|
+
"REQUIRED_COORDS",
|
|
68
|
+
"REQUIRED_DIMS",
|
|
69
|
+
"YYYYDOY",
|
|
70
|
+
"DataDirMatcher",
|
|
71
|
+
"DatasetBuilder",
|
|
72
|
+
"DatasetStructureValidator",
|
|
73
|
+
"GNSSDataReader",
|
|
74
|
+
"MatchedDirs",
|
|
75
|
+
"PairDataDirMatcher",
|
|
76
|
+
"PairMatchedDirs",
|
|
77
|
+
"Rnxv3Obs",
|
|
78
|
+
"SbfEpoch",
|
|
79
|
+
"SbfHeader",
|
|
80
|
+
"SbfReader",
|
|
81
|
+
"SbfSignalObs",
|
|
82
|
+
"SignalID",
|
|
83
|
+
"validate_dataset",
|
|
84
|
+
]
|