Skip to content

Commit a5c10e6

Browse files
authored
Update library information (#327)
Signed-off-by: Guillaume W. Bres <[email protected]>
1 parent ba7b34a commit a5c10e6

File tree

3 files changed

+46
-86
lines changed

3 files changed

+46
-86
lines changed

.github/ISSUE_TEMPLATE.md

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
## RINEX library Issue
1+
## Issue reporting
22

33
Thank you for using our library and trying to make it better 🛰️ 🌍
44

5-
## Core Library error reporting
5+
## Error reporting
66

7-
- [ ] Make sure you are using the [latest library version](https://github.com/rtk-rs/rinex/releases)
8-
- [ ] Ideally, provide a minimal reproducible example, so we can reproduce the error, that might include
9-
custom input data.
7+
When reporting an issue related to one of our libraries, an error log will suffice.
8+
9+
If your post-processing pipeline is complex and involves very specific data, it may be required
10+
that you provide your input data so we can replicate the problem. To do so, contact us
11+
through one of our portals and we have means to arrange that. If you are willing to do so,
12+
you can directly submit your test data into our [dedicated repo](https://github.com/rtk-rs/data)
13+
and we can start replicating the issue right away.

CONTRIBUTING.md

+31-77
Original file line numberDiff line numberDiff line change
@@ -8,97 +8,51 @@ Don't forget to run a quick `cargo fmt` prior any submissions, so the CI/CD does
88
on coding style "issues".
99

1010
This crate and ecosystem is part of the [RTK-rs framework and community](https://github.com/rtk-rs).
11-
Contact us on [Discord](https://discord.gg/duETmeGc).
11+
You can contact us on [Discord](https://discord.com/invite/VwuKPcw6)
1212

1313
Crate architecture
1414
==================
1515

16-
For each supported RINEX types, we have one folder named after that format.
17-
`src/navigation` is one of those.
16+
The RINEX library is architectured per RINEX formats. We support
1817

19-
The module contains the record type definition. RINEX file contents vary a lot
20-
depending on which type of RINEX we're talking about.
21-
For complex RINEX formats like Navigation Data, that module will contain all possible inner types.
18+
- Observation RINEX
19+
- Navigation RINEX
20+
- IONEX
21+
- Clock RINEX
22+
- ANTEX
23+
- DORIS
24+
- and Meteo RINEX
2225

23-
Other important structures :
24-
- SV and Constellation support is provided by the GNSS lib (gnss-rs)
25-
- `src/epoch/mod.rs`: the Epoch module basically provides
26-
hifitime::Epoch parsing methods, because RINEX describes date in non standard formats.
27-
Also, the `Flag` structure is used to mark Observations (valid or invalid).
28-
- `src/observable.rs`: defines possible observations like raw phase
29-
- `src/carrier.rs`: defines carrier signals in terms of frequency and bandwidth.
30-
It also contains utilities to identify which GNSS signals we're dealing with,
31-
from an `Observable`.
32-
- `src/hatanaka/mod.rs`: the Hatanaka module contains the RINEX Compressor and Decompressor
33-
- `src/antex/antenna.rs`: defines the index structure of ANTEX format
26+
For each supported RINEX types, you will find the related to section in a dedicated folder,
27+
for example `src/navigation` for Navigation RINEX.
3428

35-
Navigation Data
36-
===============
29+
For each record type, we define two custom types, `K` and `V` to describe the file content and be
30+
indexed in a Map (either Hash or BTree). This principle has proved sufficient and very powerful.
31+
The crate is undergoing a simplification phase where the record types are being simplified.
32+
In otherwords, a simple `Map<K, V>` is then enough to represent the file content: that was not the case
33+
in previous versions. This is true for most types but not all of them as of today!
3734

38-
Orbit broadcasted parameters are presented in different form depending on the RINEX revisions
39-
and also may differ in their nature depending on which constellation we're talking about.
35+
For that reason, this parser requires the `std` lib and we don't have plans to remove that dependency.
4036

41-
To solve that problem, we use a dictionary, in the form of `src/db/NAV/orbits.json`,
42-
which describes all fields per RINEX revision and GNSS constellation.
37+
## Key external structures
4338

44-
This file is processed at build time, by the build script and ends up as a static
45-
pool we rely on when parsing a file.
39+
`SV` and `Constellation` support is provided by our general purposes GNSS library.
40+
`Epoch`, `Duration` and `Timescales` are defined within `Hifitime`.
4641

47-
The dictionary is powerful enough to describe all revision, the default Navigation Message
48-
is `LNAV`: Legacy NAV message, which can be omitted. Therefore, it is only declared
49-
for modern Navigation messages.
42+
## Key internal structures and elements
5043

51-
Introducing a new RINEX type
52-
============================
44+
- `src/observable` desfines RINEX Observable, as used in many RINEX formats.
45+
- `src/carrier` defines carrier signals
5346

54-
`src/meteo/mod.rs` is the easiest format and can serve as a guideline to follow.
47+
## Notes on CRINEX (RINEX compression)
5548

56-
When introducing a new Navigation Data, the dictionary will most likely have to be updated (see previous paragraph).
49+
Support for the CRINEX algorithm and compression technique
50+
is provided in the `src/hatanaka` module, named after Y. Hatanaka who invented this compression algorithm, dedicated to Observation RINEX.
5751

58-
GNSS Constellations
59-
===================
52+
We have a very complete & powerful infrastructure that support the algorithm both ways and have demonstrated
53+
bit by bit reciprocity. The algorithm is tested in many ways in our CI and benchmarked on github.com.
54+
This makes our library the most complete when it comes to supporting this compression technique as of today.
6055

61-
Supported constellations are defined in the Constellation Module.
62-
This structure defines both Orbiting and Stationary vehicles.
56+
## Build Script
6357

64-
Adding new SBAS vehicles
65-
========================
66-
67-
To add a newly launched SBAS vehicles, simply add it to the
68-
gnss-rs/data/sbas.json database.
69-
70-
This database is auto integrated to this library to provide
71-
detailed SBAS supports. The only mandatory fields (in the databse) are:
72-
- the "constellation" field
73-
- the SBAS "prn" field (which is 100 + prn number)
74-
- "id": the name of that vehicle, for example "ASTRA-5B"
75-
- "launched\_year": the year this vehicle was launched
76-
77-
Other optional fields are:
78-
- "launched\_month": month ths vehicle was launched
79-
- "launched\_day": day of month this vehicle was launched
80-
81-
We don't support undeployed vehicles (in advance).
82-
83-
Modify or add Navigation Frames
84-
===============================
85-
86-
Navigation frames are desc
87-
88-
The build script is rinex/build.rs.
89-
90-
It is responsible for building several important but hidden structures.
91-
92-
1. Navigation RINEX specs, described by rinex/db/NAV
93-
2. Geostationary vehicles identification in rinex/db/sbas/sbas.json,
94-
that follows the L1-CA-PRN Code assignment specifications (see online specs).
95-
3. rinex/db/SBAS/*.wkt contains geographic definitions for most
96-
standard SBAS systems. We parse them as Geo::LineStrings to
97-
define a contour area for a given SBAS system. This gives one method
98-
to select a SBAS from given location on Earth
99-
100-
External key dependencies
101-
=========================
102-
103-
- `Hifitime` for timing and timescales
104-
- `ANISE` for navigation
58+
The crate comes with a build script that defines the Navigation messages to be supported (written as dictionary).

README.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ RINEX
88

99
[![License](https://img.shields.io/badge/license-MPL_2.0-orange?style=for-the-badge&logo=mozilla)](https://github.com/rtk-rs/rinex/blob/main/LICENSE)
1010

11-
[RINEX (Receiver Independent EXchange)](https://en.wikipedia.org/wiki/RINEX) parser and writer.
12-
The RINEX format is fully open source and is specified to answer the requirements of navigation and precise navigation.
11+
[RINEX (Receiver Independent EXchange)](https://en.wikipedia.org/wiki/RINEX) parser and formatter.
12+
The RINEX format is fully open source and is specified to answer the requirements of navigation and much more.
1313

14-
Use [Github Issues](https://github.com/rtk-rs/rinex/issues) to report issues while using this library.
15-
can also open a [Discussion](https://github.com/rtk-rs/rinex/discussions) or leave us a message [on Discord](https://discord.gg/duETmeGc).
14+
To contribute to either of our project or join our community, you way
15+
- open an [Issue on Github.com](https://github.com/rtk-rs/rinex/issues)
16+
- follow our [Discussions on Github.com](https://github.com/rtk-rs/discussions)
17+
- join our [Discord channel](https://discord.com/invite/VwuKPcw6)
1618

1719
## Advantages :rocket:
1820

0 commit comments

Comments
 (0)