gnsskit 0.4.0__tar.gz → 0.4.2__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.
gnsskit-0.4.2/PKG-INFO ADDED
@@ -0,0 +1,160 @@
1
+ Metadata-Version: 2.4
2
+ Name: gnsskit
3
+ Version: 0.4.2
4
+ Summary: RTKLIB-based GNSS post-processing toolkit: RINEX tools, RTKLIB wrappers, static baselines and network adjustment, kinematic trajectories
5
+ Keywords: gnss,gps,rtklib,ppk,surveying,least-squares
6
+ Author: Francesco Ioli
7
+ Author-email: Francesco Ioli <francesco.ioli@polimi.it>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Topic :: Scientific/Engineering :: GIS
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Typing :: Typed
19
+ Requires-Dist: numpy
20
+ Requires-Dist: pandas>=2
21
+ Requires-Dist: scipy ; extra == 'all'
22
+ Requires-Dist: pyproj ; extra == 'all'
23
+ Requires-Dist: matplotlib ; extra == 'all'
24
+ Requires-Dist: scipy ; extra == 'network'
25
+ Requires-Dist: pyproj ; extra == 'network'
26
+ Requires-Dist: matplotlib ; extra == 'plot'
27
+ Requires-Python: >=3.10
28
+ Project-URL: Repository, https://github.com/franioli/gnsskit
29
+ Project-URL: Issues, https://github.com/franioli/gnsskit/issues
30
+ Provides-Extra: all
31
+ Provides-Extra: network
32
+ Provides-Extra: plot
33
+ Description-Content-Type: text/markdown
34
+
35
+ # gnsskit
36
+
37
+ Shared tools for post-processing GNSS data with [RTKLIB](https://www.rtklib.com/) `rnx2rtkp`, used by
38
+ [djippk](https://github.com/franioli/djippk) (drone PPK) and [stopgo](https://github.com/franioli/stopgo)
39
+ (stop-and-go surveys).
40
+
41
+ > [!IMPORTANT]
42
+ > **RTKLIB is not included and must be installed separately.** gnsskit runs the RTKLIB
43
+ > command-line program `rnx2rtkp` (the CLI of RTKPOST) for the GNSS processing; `pip`/`uv` do
44
+ > not install it. See [RTKLIB](#rtklib-required-separately) below.
45
+
46
+ - **RTKLIB wrappers** (`gnsskit.rtklib`): `RtkConfig`, a typed, immutable set of `rnx2rtkp` options
47
+ (`from_file`, `updated`, `with_options`, `with_base_llh`, `write`); `run_rnx2rtkp` and `find_rnx2rtkp`;
48
+ `read_pos` (llh, xyz and enu `.pos` files).
49
+ - **RINEX** (`gnsskit.rinex`): `rinex_span`, `header_llh`, `trim_rinex`; inspection with `obs_summary`
50
+ (span, sampling, gaps, satellites), `read_visibility` and `plot_visibility` (RTKPLOT-style satellite
51
+ visibility, needs the `plot` extra).
52
+ - **Static** (`gnsskit.static`): `solve_static` (one solution over a time window), `process_baseline`
53
+ (static baselines with covariance), baseline IO and `loop_closures` (misclosure of every triangle of baselines); least-squares adjustment of a redundant baseline
54
+ network in `gnsskit.static.network` (needs the `network` extra).
55
+ - **Kinematic** (`gnsskit.kinematic`): trajectory interpolation and averaging.
56
+ - **Reference systems** (`gnsskit.refsys`): GPST/UTC, ellipsoids, ECEF/geodetic conversions and
57
+ `ENUFrame`, a local east-north-up frame at a point (points, vectors and covariances, both ways).
58
+
59
+ ## Install
60
+
61
+ With [uv](https://docs.astral.sh/uv/) (recommended), in your project:
62
+
63
+ ```sh
64
+ uv add gnsskit # library
65
+ uv add "gnsskit[network]" # + network adjustment (scipy, pyproj)
66
+ uv add "gnsskit[network,plot]" # + satellite visibility plots (matplotlib)
67
+ uv add "gnsskit[all]" # every extra
68
+ uv add git+https://github.com/franioli/gnsskit # development version
69
+ ```
70
+
71
+ or in an existing environment, `uv pip install gnsskit` (same extras).
72
+
73
+ With pip:
74
+
75
+ ```sh
76
+ pip install gnsskit
77
+ pip install "gnsskit[all]" # with every extra
78
+ ```
79
+
80
+ ### RTKLIB (required separately)
81
+
82
+ The processing functions (`run_rnx2rtkp`, `process_baseline`, `solve_static`) call the RTKLIB
83
+ command-line program **`rnx2rtkp`**, which must be installed on your system and found on your
84
+ `PATH` (or passed with `exe=`); `trim_rinex(use_convbin=True)` also needs RTKLIB `convbin`.
85
+ The [demo5 fork](https://github.com/rtklibexplorer/RTKLIB) is
86
+ recommended; gnsskit is developed with `rnx2rtkp ver.EX 2.5.1`.
87
+
88
+ - **Windows**: download a [demo5 release](https://github.com/rtklibexplorer/RTKLIB/releases),
89
+ unzip it and add the folder with `rnx2rtkp.exe` to your `PATH`.
90
+ - **Linux / macOS**: build it from source:
91
+ ```sh
92
+ git clone https://github.com/rtklibexplorer/RTKLIB
93
+ cd RTKLIB/app/consapp/rnx2rtkp/gcc && make && sudo make install
94
+ ```
95
+
96
+ Check it with `rnx2rtkp -?`. If it is missing, `run_rnx2rtkp` raises an error with these
97
+ instructions. The rest of gnsskit (RINEX tools, `read_pos`, loop closures, network adjustment,
98
+ reference systems) is pure Python and works without RTKLIB, e.g. on baselines computed elsewhere.
99
+
100
+ ## Example
101
+
102
+ ```python
103
+ from gnsskit import RtkConfig, read_pos, run_rnx2rtkp
104
+
105
+ config = RtkConfig(posmode="static", navsys="GEC", solformat="llh").with_base_llh(46.2, 9.8, 2300.0)
106
+ pos_file = run_rnx2rtkp(rover_obs, base_obs, [nav], config, "out.pos")
107
+ pos = read_pos(pos_file)
108
+ ```
109
+
110
+ See [example/](https://github.com/franioli/gnsskit/tree/main/example) for complete static, kinematic and network adjustment examples.
111
+
112
+ ## Contributing
113
+
114
+ Issues are welcome on [GitHub](https://github.com/franioli/gnsskit/issues). To contribute code:
115
+
116
+ 1. Fork the repository on GitHub and clone your fork:
117
+ ```sh
118
+ git clone https://github.com/<your-username>/gnsskit && cd gnsskit
119
+ git checkout -b my-feature
120
+ ```
121
+ 2. Set up the environment, make your changes and check them:
122
+ ```sh
123
+ uv sync # environment with the dev dependencies (incl. ruff)
124
+ uv run pytest # tests
125
+ uv run ruff format . # format the code
126
+ uv run ruff check --fix . # lint, fixing what can be fixed automatically
127
+ ```
128
+
129
+ 3. Push the branch to your fork and open a pull request against `main` of
130
+ `franioli/gnsskit`.
131
+
132
+ ## Releasing a new version
133
+
134
+ For the current maintainers only (it needs write access to the repository and to the PyPI
135
+ project).
136
+
137
+ Publishing a GitHub release runs [`.github/workflows/publish.yml`](.github/workflows/publish.yml),
138
+ which checks that the tag matches the version, runs the tests, builds and uploads to PyPI:
139
+
140
+ ```sh
141
+ uv version --bump patch # or minor / major: updates pyproject.toml
142
+ uv run pytest
143
+ git commit -am "Release $(uv version --short)" && git push
144
+ gh release create "v$(uv version --short)" --generate-notes # tag + release -> PyPI
145
+ ```
146
+
147
+ `gh release create` creates the tag on the pushed commit; without the GitHub CLI, push a tag
148
+ (`git tag -a vX.Y.Z -m "gnsskit X.Y.Z" && git push origin vX.Y.Z`) and create the release from it
149
+ on GitHub. PyPI never accepts the same version twice.
150
+
151
+ One-time setup of the automatic upload (PyPI Trusted Publishing, no token): on pypi.org, project
152
+ gnsskit -> Settings -> Publishing -> add a GitHub publisher with owner `franioli`, repository
153
+ `gnsskit`, workflow `publish.yml` and environment `pypi`.
154
+
155
+ Manual upload, if needed, with a project-scoped token kept outside the repository:
156
+
157
+ ```sh
158
+ rm -rf dist && uv build
159
+ UV_PUBLISH_TOKEN=$(cat ~/.config/pypi/gnsskit.token) uv publish
160
+ ```
@@ -0,0 +1,126 @@
1
+ # gnsskit
2
+
3
+ Shared tools for post-processing GNSS data with [RTKLIB](https://www.rtklib.com/) `rnx2rtkp`, used by
4
+ [djippk](https://github.com/franioli/djippk) (drone PPK) and [stopgo](https://github.com/franioli/stopgo)
5
+ (stop-and-go surveys).
6
+
7
+ > [!IMPORTANT]
8
+ > **RTKLIB is not included and must be installed separately.** gnsskit runs the RTKLIB
9
+ > command-line program `rnx2rtkp` (the CLI of RTKPOST) for the GNSS processing; `pip`/`uv` do
10
+ > not install it. See [RTKLIB](#rtklib-required-separately) below.
11
+
12
+ - **RTKLIB wrappers** (`gnsskit.rtklib`): `RtkConfig`, a typed, immutable set of `rnx2rtkp` options
13
+ (`from_file`, `updated`, `with_options`, `with_base_llh`, `write`); `run_rnx2rtkp` and `find_rnx2rtkp`;
14
+ `read_pos` (llh, xyz and enu `.pos` files).
15
+ - **RINEX** (`gnsskit.rinex`): `rinex_span`, `header_llh`, `trim_rinex`; inspection with `obs_summary`
16
+ (span, sampling, gaps, satellites), `read_visibility` and `plot_visibility` (RTKPLOT-style satellite
17
+ visibility, needs the `plot` extra).
18
+ - **Static** (`gnsskit.static`): `solve_static` (one solution over a time window), `process_baseline`
19
+ (static baselines with covariance), baseline IO and `loop_closures` (misclosure of every triangle of baselines); least-squares adjustment of a redundant baseline
20
+ network in `gnsskit.static.network` (needs the `network` extra).
21
+ - **Kinematic** (`gnsskit.kinematic`): trajectory interpolation and averaging.
22
+ - **Reference systems** (`gnsskit.refsys`): GPST/UTC, ellipsoids, ECEF/geodetic conversions and
23
+ `ENUFrame`, a local east-north-up frame at a point (points, vectors and covariances, both ways).
24
+
25
+ ## Install
26
+
27
+ With [uv](https://docs.astral.sh/uv/) (recommended), in your project:
28
+
29
+ ```sh
30
+ uv add gnsskit # library
31
+ uv add "gnsskit[network]" # + network adjustment (scipy, pyproj)
32
+ uv add "gnsskit[network,plot]" # + satellite visibility plots (matplotlib)
33
+ uv add "gnsskit[all]" # every extra
34
+ uv add git+https://github.com/franioli/gnsskit # development version
35
+ ```
36
+
37
+ or in an existing environment, `uv pip install gnsskit` (same extras).
38
+
39
+ With pip:
40
+
41
+ ```sh
42
+ pip install gnsskit
43
+ pip install "gnsskit[all]" # with every extra
44
+ ```
45
+
46
+ ### RTKLIB (required separately)
47
+
48
+ The processing functions (`run_rnx2rtkp`, `process_baseline`, `solve_static`) call the RTKLIB
49
+ command-line program **`rnx2rtkp`**, which must be installed on your system and found on your
50
+ `PATH` (or passed with `exe=`); `trim_rinex(use_convbin=True)` also needs RTKLIB `convbin`.
51
+ The [demo5 fork](https://github.com/rtklibexplorer/RTKLIB) is
52
+ recommended; gnsskit is developed with `rnx2rtkp ver.EX 2.5.1`.
53
+
54
+ - **Windows**: download a [demo5 release](https://github.com/rtklibexplorer/RTKLIB/releases),
55
+ unzip it and add the folder with `rnx2rtkp.exe` to your `PATH`.
56
+ - **Linux / macOS**: build it from source:
57
+ ```sh
58
+ git clone https://github.com/rtklibexplorer/RTKLIB
59
+ cd RTKLIB/app/consapp/rnx2rtkp/gcc && make && sudo make install
60
+ ```
61
+
62
+ Check it with `rnx2rtkp -?`. If it is missing, `run_rnx2rtkp` raises an error with these
63
+ instructions. The rest of gnsskit (RINEX tools, `read_pos`, loop closures, network adjustment,
64
+ reference systems) is pure Python and works without RTKLIB, e.g. on baselines computed elsewhere.
65
+
66
+ ## Example
67
+
68
+ ```python
69
+ from gnsskit import RtkConfig, read_pos, run_rnx2rtkp
70
+
71
+ config = RtkConfig(posmode="static", navsys="GEC", solformat="llh").with_base_llh(46.2, 9.8, 2300.0)
72
+ pos_file = run_rnx2rtkp(rover_obs, base_obs, [nav], config, "out.pos")
73
+ pos = read_pos(pos_file)
74
+ ```
75
+
76
+ See [example/](https://github.com/franioli/gnsskit/tree/main/example) for complete static, kinematic and network adjustment examples.
77
+
78
+ ## Contributing
79
+
80
+ Issues are welcome on [GitHub](https://github.com/franioli/gnsskit/issues). To contribute code:
81
+
82
+ 1. Fork the repository on GitHub and clone your fork:
83
+ ```sh
84
+ git clone https://github.com/<your-username>/gnsskit && cd gnsskit
85
+ git checkout -b my-feature
86
+ ```
87
+ 2. Set up the environment, make your changes and check them:
88
+ ```sh
89
+ uv sync # environment with the dev dependencies (incl. ruff)
90
+ uv run pytest # tests
91
+ uv run ruff format . # format the code
92
+ uv run ruff check --fix . # lint, fixing what can be fixed automatically
93
+ ```
94
+
95
+ 3. Push the branch to your fork and open a pull request against `main` of
96
+ `franioli/gnsskit`.
97
+
98
+ ## Releasing a new version
99
+
100
+ For the current maintainers only (it needs write access to the repository and to the PyPI
101
+ project).
102
+
103
+ Publishing a GitHub release runs [`.github/workflows/publish.yml`](.github/workflows/publish.yml),
104
+ which checks that the tag matches the version, runs the tests, builds and uploads to PyPI:
105
+
106
+ ```sh
107
+ uv version --bump patch # or minor / major: updates pyproject.toml
108
+ uv run pytest
109
+ git commit -am "Release $(uv version --short)" && git push
110
+ gh release create "v$(uv version --short)" --generate-notes # tag + release -> PyPI
111
+ ```
112
+
113
+ `gh release create` creates the tag on the pushed commit; without the GitHub CLI, push a tag
114
+ (`git tag -a vX.Y.Z -m "gnsskit X.Y.Z" && git push origin vX.Y.Z`) and create the release from it
115
+ on GitHub. PyPI never accepts the same version twice.
116
+
117
+ One-time setup of the automatic upload (PyPI Trusted Publishing, no token): on pypi.org, project
118
+ gnsskit -> Settings -> Publishing -> add a GitHub publisher with owner `franioli`, repository
119
+ `gnsskit`, workflow `publish.yml` and environment `pypi`.
120
+
121
+ Manual upload, if needed, with a project-scoped token kept outside the repository:
122
+
123
+ ```sh
124
+ rm -rf dist && uv build
125
+ UV_PUBLISH_TOKEN=$(cat ~/.config/pypi/gnsskit.token) uv publish
126
+ ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gnsskit"
3
- version = "0.4.0"
3
+ version = "0.4.2"
4
4
  description = "RTKLIB-based GNSS post-processing toolkit: RINEX tools, RTKLIB wrappers, static baselines and network adjustment, kinematic trajectories"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -40,6 +40,11 @@ network = [
40
40
  "pyproj",
41
41
  ]
42
42
  plot = ["matplotlib"]
43
+ all = [
44
+ "scipy",
45
+ "pyproj",
46
+ "matplotlib",
47
+ ]
43
48
 
44
49
  [project.urls]
45
50
  Repository = "https://github.com/franioli/gnsskit"
@@ -48,6 +53,7 @@ Issues = "https://github.com/franioli/gnsskit/issues"
48
53
  [dependency-groups]
49
54
  dev = [
50
55
  "pytest",
56
+ "ruff",
51
57
  "scipy",
52
58
  "pyproj",
53
59
  "matplotlib",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gnsskit"
3
- version = "0.4.0"
3
+ version = "0.4.2"
4
4
  description = "RTKLIB-based GNSS post-processing toolkit: RINEX tools, RTKLIB wrappers, static baselines and network adjustment, kinematic trajectories"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -24,13 +24,14 @@ dependencies = ["numpy", "pandas>=2"]
24
24
  [project.optional-dependencies]
25
25
  network = ["scipy", "pyproj"]
26
26
  plot = ["matplotlib"]
27
+ all = ["scipy", "pyproj", "matplotlib"] # every extra above
27
28
 
28
29
  [project.urls]
29
30
  Repository = "https://github.com/franioli/gnsskit"
30
31
  Issues = "https://github.com/franioli/gnsskit/issues"
31
32
 
32
33
  [dependency-groups]
33
- dev = ["pytest", "scipy", "pyproj", "matplotlib"]
34
+ dev = ["pytest", "ruff", "scipy", "pyproj", "matplotlib"]
34
35
 
35
36
  [build-system]
36
37
  requires = ["uv_build>=0.12.23,<0.13.0"]
gnsskit-0.4.0/PKG-INFO DELETED
@@ -1,72 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: gnsskit
3
- Version: 0.4.0
4
- Summary: RTKLIB-based GNSS post-processing toolkit: RINEX tools, RTKLIB wrappers, static baselines and network adjustment, kinematic trajectories
5
- Keywords: gnss,gps,rtklib,ppk,surveying,least-squares
6
- Author: Francesco Ioli
7
- Author-email: Francesco Ioli <francesco.ioli@polimi.it>
8
- License-Expression: MIT
9
- License-File: LICENSE
10
- Classifier: Development Status :: 3 - Alpha
11
- Classifier: Intended Audience :: Science/Research
12
- Classifier: Topic :: Scientific/Engineering :: GIS
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.10
15
- Classifier: Programming Language :: Python :: 3.11
16
- Classifier: Programming Language :: Python :: 3.12
17
- Classifier: Programming Language :: Python :: 3.13
18
- Classifier: Typing :: Typed
19
- Requires-Dist: numpy
20
- Requires-Dist: pandas>=2
21
- Requires-Dist: scipy ; extra == 'network'
22
- Requires-Dist: pyproj ; extra == 'network'
23
- Requires-Dist: matplotlib ; extra == 'plot'
24
- Requires-Python: >=3.10
25
- Project-URL: Repository, https://github.com/franioli/gnsskit
26
- Project-URL: Issues, https://github.com/franioli/gnsskit/issues
27
- Provides-Extra: network
28
- Provides-Extra: plot
29
- Description-Content-Type: text/markdown
30
-
31
- # gnsskit
32
-
33
- Shared tools for post-processing GNSS data with [RTKLIB](https://www.rtklib.com/) `rnx2rtkp`, used by
34
- [djippk](https://github.com/franioli/djippk) (drone PPK) and [stopgo](https://github.com/franioli/stopgo)
35
- (stop-and-go surveys).
36
-
37
- - **RTKLIB wrappers** (`gnsskit.rtklib`): `RtkConfig`, a typed, immutable set of `rnx2rtkp` options
38
- (`from_file`, `updated`, `with_options`, `with_base_llh`, `write`); `run_rnx2rtkp` and `find_rnx2rtkp`;
39
- `read_pos` (llh, xyz and enu `.pos` files).
40
- - **RINEX** (`gnsskit.rinex`): `rinex_span`, `header_llh`, `trim_rinex`; inspection with `obs_summary`
41
- (span, sampling, gaps, satellites), `read_visibility` and `plot_visibility` (RTKPLOT-style satellite
42
- visibility, needs the `plot` extra).
43
- - **Static** (`gnsskit.static`): `solve_static` (one solution over a time window), `process_baseline`
44
- (static baselines with covariance), baseline IO and `loop_closures` (misclosure of every triangle of baselines); least-squares adjustment of a redundant baseline
45
- network in `gnsskit.static.network` (needs the `network` extra).
46
- - **Kinematic** (`gnsskit.kinematic`): trajectory interpolation and averaging.
47
- - **Reference systems** (`gnsskit.refsys`): GPST/UTC, ellipsoids, ECEF/geodetic conversions and
48
- `ENUFrame`, a local east-north-up frame at a point (points, vectors and covariances, both ways).
49
-
50
- ## Install
51
-
52
- ```sh
53
- pip install gnsskit # library
54
- pip install "gnsskit[network]" # + network adjustment (scipy, pyproj)
55
- pip install "gnsskit[network,plot]" # + satellite visibility plots (matplotlib)
56
- pip install git+https://github.com/franioli/gnsskit # development version
57
- ```
58
-
59
- `rnx2rtkp` is not installed by pip. Build the [demo5 fork](https://github.com/rtklibexplorer/RTKLIB) and put it on
60
- your `PATH`; if it is missing, `run_rnx2rtkp` raises an error with instructions. Developed with `rnx2rtkp ver.EX 2.5.1`.
61
-
62
- ## Example
63
-
64
- ```python
65
- from gnsskit import RtkConfig, read_pos, run_rnx2rtkp
66
-
67
- config = RtkConfig(posmode="static", navsys="GEC", solformat="llh").with_base_llh(46.2, 9.8, 2300.0)
68
- pos_file = run_rnx2rtkp(rover_obs, base_obs, [nav], config, "out.pos")
69
- pos = read_pos(pos_file)
70
- ```
71
-
72
- See [example/](https://github.com/franioli/gnsskit/tree/main/example) for complete static, kinematic and network adjustment examples.
gnsskit-0.4.0/README.md DELETED
@@ -1,42 +0,0 @@
1
- # gnsskit
2
-
3
- Shared tools for post-processing GNSS data with [RTKLIB](https://www.rtklib.com/) `rnx2rtkp`, used by
4
- [djippk](https://github.com/franioli/djippk) (drone PPK) and [stopgo](https://github.com/franioli/stopgo)
5
- (stop-and-go surveys).
6
-
7
- - **RTKLIB wrappers** (`gnsskit.rtklib`): `RtkConfig`, a typed, immutable set of `rnx2rtkp` options
8
- (`from_file`, `updated`, `with_options`, `with_base_llh`, `write`); `run_rnx2rtkp` and `find_rnx2rtkp`;
9
- `read_pos` (llh, xyz and enu `.pos` files).
10
- - **RINEX** (`gnsskit.rinex`): `rinex_span`, `header_llh`, `trim_rinex`; inspection with `obs_summary`
11
- (span, sampling, gaps, satellites), `read_visibility` and `plot_visibility` (RTKPLOT-style satellite
12
- visibility, needs the `plot` extra).
13
- - **Static** (`gnsskit.static`): `solve_static` (one solution over a time window), `process_baseline`
14
- (static baselines with covariance), baseline IO and `loop_closures` (misclosure of every triangle of baselines); least-squares adjustment of a redundant baseline
15
- network in `gnsskit.static.network` (needs the `network` extra).
16
- - **Kinematic** (`gnsskit.kinematic`): trajectory interpolation and averaging.
17
- - **Reference systems** (`gnsskit.refsys`): GPST/UTC, ellipsoids, ECEF/geodetic conversions and
18
- `ENUFrame`, a local east-north-up frame at a point (points, vectors and covariances, both ways).
19
-
20
- ## Install
21
-
22
- ```sh
23
- pip install gnsskit # library
24
- pip install "gnsskit[network]" # + network adjustment (scipy, pyproj)
25
- pip install "gnsskit[network,plot]" # + satellite visibility plots (matplotlib)
26
- pip install git+https://github.com/franioli/gnsskit # development version
27
- ```
28
-
29
- `rnx2rtkp` is not installed by pip. Build the [demo5 fork](https://github.com/rtklibexplorer/RTKLIB) and put it on
30
- your `PATH`; if it is missing, `run_rnx2rtkp` raises an error with instructions. Developed with `rnx2rtkp ver.EX 2.5.1`.
31
-
32
- ## Example
33
-
34
- ```python
35
- from gnsskit import RtkConfig, read_pos, run_rnx2rtkp
36
-
37
- config = RtkConfig(posmode="static", navsys="GEC", solformat="llh").with_base_llh(46.2, 9.8, 2300.0)
38
- pos_file = run_rnx2rtkp(rover_obs, base_obs, [nav], config, "out.pos")
39
- pos = read_pos(pos_file)
40
- ```
41
-
42
- See [example/](https://github.com/franioli/gnsskit/tree/main/example) for complete static, kinematic and network adjustment examples.
File without changes
File without changes
File without changes
File without changes
File without changes