Skip to content

preproc decimation

Guillaume W. Bres edited this page Feb 25, 2024 · 5 revisions

Decimation (subsampling)

The preprocessor (-P) supports different resampling algorithms.

Record decimation (subsampling) is specified with the decim: prefix.

Decimate to new sampling interval

Decimates a record set by increasing the epoch interval (ie., reducing the sample rate), so it matches a new sampling interval.

In this example, the original file contains one observation every 5' that we subsample so it now matches 15':

rinex-cli \
    --fp test_resources/MET/V3/POTS00DEU_R_20232540000_01D_05M_MM.rnx.gz \
    -P "decim:10 min" \
    # Plot all (remaining) observations (as an example)
    # another option could be --filegen to generate a new file.
    -G -o 

Notice that the whitespace requires inverted comma unfortunately, so the command line understands it is part of that argument.

A more complex example where we shrink the time frame and resample:

rinex-cli \
    --fp test_resources/MET/V3/POTS00DEU_R_20232540000_01D_05M_MM.rnx.gz \
    -P "decim:10 min"
    -P ">2020-06-25T08:00:00 UTC" \
    -P "<=2020-06-25T10:00:00 UTC" \
    # Plot all (remaining) observations (as an example)
    -G -o

Decimation applies to all kinds of RINEX, in this example, we resample a typical 24h long OBS RINEX sampled at 30s to 1minute, keeping one every other point (in time):

rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -P "decim:1 min" \
    # Plot all (remaining) observations (as an example)
    -G -o

Although it is rarely intended, decimation can apply to an entire context.
Rarely intended because we most of the time want to preserve all orbital information: refer to the Focused Preprocessor example for more realistic scenarios and learn how to focus any -P operation.

Form a PPP compliant context and decimate it in its enterity:

rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -f test_resources/NAV/V3/ESBC00DNK_R_20201770000_01D_MN.crx.gz \
    -P "decim:1 min" \
    # Run position solver, as an example
    -p --spp

Decimate by a ratio

-P allows decimation by a simple ratio. With this option, you can rapidly reduce the quantity of information by a ratio.

For example, decimating by 2 reduces the quantity of information by 50%.
In typical 30s state of the art OBS RINEX, you're left with a 1min sampling interval:

./target/release/rinex-cli \
    -f test_resources/CRNX/V3/ESBC00DNK_R_20201770000_01D_30S_MO.crx.gz \
    -P decim:2 \
    # Generate a RINEX, as an example
    --filgen

Once again, this applies to any kind of RINEX and any integral resampling ratio is supported. For example, rework these Meteo sensors observation to 2 samples per hour:

./target/release/rinex-cli \
    --fp test_resources/MET/V3/POTS00DEU_R_20232540000_01D_05M_MM.rnx.gz \
    -P decim:6 \
    # Generate a RINEX, as an example
    --filgen
Clone this wiki locally