Skip to content

Usage

gfzrnx is a command line executable. It can be used in a terminal window or batch scripts. It has NO graphical interface!

Unix

For Unix (Linux, MacOS, SunOS) users it can be run in any terminal application or used in shell scripts...

unix_terminal

Windows

windows_cmd_powershell

For MS Windows you can use e.g. cmd.exe, powershell.exe, or create and execute batch scripts (whatever.bat).

Here, a small batch file example.bat is shown. The input data are sampled at 30s time interval.

gfzrnx.exe -finp C:\data\XXXX0010.15o -fout C:\data_30\XXXX0010.15o -smp 30
gfzrnx.exe -finp C:\data\XXXX0020.15o -fout C:\data_30\XXXX0020.15o -smp 30
...
gfzrnx.exe -finp C:\data\XXXX3650.15o -fout C:\data_30\XXXX3650.15o -smp 30

Fast Help

Simple usage information you can get via command line parameter -h or -help.

gfzrnx -h

***** USAGE: gfzrnx

     file only or common options
     -----------------------------------------------------------------------------------------
     [-h]                      - show this usage message
     [-help]

     [-finp <file list>]       - input  rinex file(s) (std. STDIN).
                                 STDIN is only valid for a single file input.

                                 the following file name types are supported to derive the
                                 nominal epoch/duration information.

                                 RINEX-2 file naming

                                 ssssDDD0.YYx       - daily      file
                                 ssssDDD[a-x].YYx   - hourly     file
                                 ssssDDD[a-x]mm.YYx - sub-hourly file

                                 RINEX-3/4 file naming

                                 SSSSMRCCC_S_YYYYDDDHHMM_NNN_FRQ_TT.FMT
                                 SSSSMRCCC_S_YYYYDDDHHMM_NNN_TT.FMT

                                 see Documentation for details

                                 splice mode:
                                 ------------
                                 * list of input files

     [-fout <file>]            - output rinex or statistics file (std. STDOUT)
                                 automatic output file name if filename given is "::RX2::", "::RX3::" or "::RX4::"

     [-4to9 <file>]            - renaming information for rinex-3 type (re)naming
                                 ( NNNN -> NNNNMRCCC / POTS -> POTS00DEU )

     [-f]                      - force overwrite of output file if it already exists
                                 (std. no overwrite)

     [-sifl]                   - perform an operation on a single file if a file list is
     [-single_file]              provided via "-finp"

     [-ant_rename]             - rename historical antenna names to be IGS conform

  [-nomren23 <[s,][mr,][iso]>] - fast nominal output file name for RINEX-2 to RINEX-3 file renaming.
                                 RINEX-3 output file name is written to STDOUT.

                                    s   - data source (S|R)        (default R)
                                    mr  - marker receiver number   (default 00)
                                    iso - 3 char. iso country code (default XXX)

                                 the input parameters can be given in any order.
                                 supported input file names nnnnddde.yyt[.cmp] or nnnndddedd.yyt[.cmp]

                                 if providing a compressed file all information which is usually taken
                                 from file header (sat. system(s), data frequency) has to be given via the
                                 command line parameter (see documion for details).

     [-vo <2|3|4>]             - output RINEX version (std. latest)
     [--version_out <2|3|4>]
     [-vosc <2|3|4>]           - output RINEX version (fully standard conform)

     [-vnum m.nn]              - change header VERSION number and set output RINEX version
                                 (only the version number is changed / output RINEX version is the highest supported one)

     [-pr3rx2 <list>]          - komma separated list of list of signal priorities used for rinex 3 -> 2 conversion
                                 to overwrite the standard settings, see documentation for details.

                                 S:n[n...]:STRING

                                 S      - satellite System [CEGJRSI]
                                 n      - frequency number(s)
                                 STRING - prority STRING

                                 G:12:PWCSLXYN,G:5:QXI,R:12:CP

     [-errlog <file>]          - store (append) error logs to a file (std. print to STDERR)

     [-smp <num>]              - sampling rate in sec. (std. no sampling / resolution 1 ms)

     [-smp_nom <num>]          - sampling rate (num) in sec to be used for automatic file naming

     [-smp_lli_shift]          - perform LLI shifts via data sampling to sampling epoch

     [-nav_mixed]              - create a mixed nav. filename

     [-no_nav_stk]             - no nav. splice header statistic tables

     [-stk_obs]                - output data statistics information (std. STDOUT)
     [-stk_only]

     [-crux <file>]            - rinex header manipulations definitions for input files

     [-cx_updins <string(s)>]  - rinex header manipulation(s) definition for input files
                                 given via command line

     [-cx_addinthd]            - if using using a crux-file (-crux) internal/data headers are created
                                 at crux-settings starting epochs.

     [-show_crux]              - show crux structure adopted and used by the program

     [-hded]                   - perform the header edit ONLY mode (with -crux)

     [-stk_epo <n[:list]>]     - ASCII timeplot of data availability (std. STDOUT)
                                 n    - time resolution in seconds
                                 list - comma separated list (prn,otp) (std. prn)

     [-ot <list>]              - obs. types list to be used (pattern matching). the list can be given
     [--obs_types <list>]        globaly or sat. system dependent. the sat. system dependent record
                                 replaces fully a global one.

                                 list can be: [S:]OT1,OT2,...[+S:OT3,OT4,...][+...]

                                 S  - satellite system [CEGJRSI]
                                 OT - observation type identifier

                                 L1,L2,C1,C2,P1,P2
                                 L1,L2,C1,C2,P1,P2+C:L1,L7,C1,C7+G:L1C,L2W,C1,C2

     [-ots <string>[:<attr>]]  - obs. types output sorting
[--obs_types_sort <string>[:<attr>]]
                                 the "string" consists of the 1st obs. type id. characters ( e.g. CPLDS ),
                                 the "attr" can be [frqasc|frqdsc|frqi,j,...] (frequ. numbers (i,j,...) = 1,...,n),
                                 which means a preferred sorting by frequency (ascending,descending or
                                 a list of distinct frequency numbers)

     [-prn <prn-list>]         - komma separated list of PRNs to be used
                                 range notations are possible G1-32,C01-5,R01-10,E14,E18

     [-no_prn <prn-list>]      - komma separated list of PRNs to be skipped
                                 range notations are possible G1-32,C01-5,R01-10,E14,E18

     [-kaot]                   - keep all obs. types (including fully empty ones)

     [-rsot <n>]               - remove sparse obs. types.
[--remove_sparse_obs_types <n>]  n - defines the % limit of the median number of observations
                                     per observation type used to delete an observation type fully.

     [-satsys <letters>]       - satellite system(s) to be used (CEGIJRS) (std. CEGIJRS)
                                 C - Beidou
                                 E - Galileo
                                 G - GPS
                                 I - IRNSS
                                 J - QZSS
                                 R - Glonass
                                 S - SBAS

     [-ns        <type>]       - output order of navigation records.   type = [time|prn] (std. prn)
     [--nav_sort <type>]         time - sort by time,prn
                                 prn  - sort by prn,time

     [-nt       <type-list>]   - '+' separated list of nav. selection records (version >= 4).
     [-nav_type <type-list>]     record = [<sat.system(s)>::]<nav.type(s)>:[<message.type(s)]
                                 type(s) are separated via '.'

     [-split n]                - split input file in <n seconds> pieces
                                 - valid only with -fout ::RX2:: or ::RX3::
                                 - valid if n is a multiple of 60 seconds.
                                 - only supported for single input file

     [-chk]                    - extended formal checks on input file (slower)

     [-meta <type[:format]>]   - extract file meta data. the type can be (basic|full).
                                 supported formats are json|xml|txt|dump

     [-fdiff]                  - compare two rinex files of the same format (major version id.)
                                 the two input files have to be given via -finp

     [-met_nwm]                - edit a rinex meteo file(1) by the means of a reference NWM file(2).
                                 the two input files have to be given via -finp.
                                 the second file contains reference NWM data and check limits
                                 (can be used in conjunction with -obs_types, -ot)

     [-site <sitename>]        - use the 4- or 9-char sitename for output filename via automatic file naming
                                 or for header editing settings extractions (crux)
                                 or for "MARKER NAME" in case it is missing.

     [-kv]                     - keep major output version number same as in input

     [-q]                      - quiet mode

     [-d <sec>]                - file duration (seconds) (std. ignored on input
     [--duration <sec>]                                   std. 86400   on output )

     [-epo_beg <EPOCH>]        - first output epoch (<EPOCH> see below)

     [-sei <in|out>]
[--strict_epoch_interval <in|out>] - output epoch interval according to in/output file name
                                     (only valid in case of RINEX conform file names)

     [-enb <n>]                - extend the nav. epoch interval by +- n seconds
                                 (when using strict epoch interval)

     [-nav_epo_filter]         - only standard epochs are passed to the output
     [-nav_epo_strict]         - only nominal  epochs are passed to the output
     [-nav_latest]             - only latest nav. record per PRN are passed to the output

     [-splice_direct]          - use no RAM to store observations via splice operations
                                 (no header data statistics)

     [-try_append <sec>]       - try append mode to fasten the splice process with
                                 smallest nominal file duration (seconds) of part files

     [-direct]                 - direct input/output of single rinex OBS. files (!!! no header statistics !!!)

     [-use_obs_map <file>]     - use modified obs. types mapping
     [-out_obs_map]            - output std.  obs. types mapping

     [-tab]                    - create a tabular data representation output

     [-tab_date]               - use other date (pattern) for tabular observation output
                                 (yyyy-mm-dd|yy-mm-dd|yyyy-ddd|wwww-d|yyyymmdd|yymmdd|yyyyddd|wwwwd|mjd|ddd)

     [-tab_time]               - use other time pattern for tabular observation output
                                 (hh:mm:ss|hhmmss|sod|fod)

     [-tab_sep <string>]       - column separator string (default: BLANK)

     epoch <EPOCH> parameter
     -----------------------------------------------------------------------------------------
     mjd             56753   or        56753_123000
     wwwwd           17870   or        17870_12:30:00
     yyyyddd       2014096   or      2014096_123000
     yyyymmdd     20140406   or     20140406_12:30:00
     yyyy-mm-dd 2014-04-06   or   2014-04-06_123000

     all these date types can be combined via '_' with a time string of type:
     hhmmss
     hh:mm:ss


----------------------------------------------------------------------------------------------
© Helmholtz-Centre Potsdam - GFZ German Research Centre for Geosciences
  Section 1.1 Space Geodetic Techniques

  see https://gnss.gfz-potsdam.de/services/gfzrnx

  for license details and manual

  Thomas Nischan, nisn@gfz-potsdam.de
----------------------------------------------------------------------------------------------

  VERSION: gfzrnx-2.1.8

Data Input/Output

Supported Format Versions

gfzrnx supports all versions 2.x, 3.x, 4.x formats as input. The output format will be only the latest standard format of the major formats 2, 3 or 4.

Standard out put version for major RINEX version:

Major Standard Output
2 2.11
3 3.05
4 4.01

Input

The input of a single file can be done via the -finp command line parameter or via STDIN.

Output

The standard output channel is STDOUT. The output to a dedicated file can also be done via the -fout command line parameter.

Examples Input/Output

Input via -finp

gfzrnx -finp pots007a.15o ...

Input via STDIN

cat     pots007a.15o   | gfzrnx ...
crx2rnx pots007a.15d - | gfzrnx ...

Output via -fout

gfzrnx -finp pots007a.15o -fout pots007a.15o_rx3

Output via STDOUT

gfzrnx -finp pots007a.15o > pots007a.15o_rx3
gfzrnx -finp pots007a.15o | rnx2crx > pots007a.15d
gfzrnx -finp pots007a.15o | rnx2crx | gzip > pots007a.15d.gz

The program rnx2crx is here the Hatanaka RINEX compression and gzip a common file compression program.

Log Messages

By default, log messages (Notices, Errors, Warnings) are sent to STDERR. One can store the log messages into a file using the -errlog command line parameter.

> gfzrnx -finp leid2000.13o -fout leid2000.13o_rx3

DATE/TIME     | C | EPOCH/FILE  | SITE | T | MESSAGE
--------------+---+-------------+------+---+------------------------------------------------
2015-01-09 .. | N | .. 00:00:00 | LEID | O | file duration set to 86400 s
2015-01-09 .. | W | .. 00:00:00 | LEID | O | no MARKER NAME in header / taken from file name
2015-01-09 .. | W | .. 00:00:00 | LEID | O | HEADER -> missing receiver type ><
2015-01-09 .. | W | .. 23:59:30 | LEID | O | BEIDOU obs. types update: D2_ -> D1_ !
2015-01-09 .. | W | .. 23:59:30 | LEID | O | BEIDOU obs. types update: L2_ -> L1_ !
2015-01-09 .. | W | .. 23:59:30 | LEID | O | BEIDOU obs. types update: P2_ -> P1_ !
2015-01-09 .. | W | .. 23:59:30 | LEID | O | BEIDOU obs. types update: S2_ -> S1_ !
2015-01-09 .. | N | .. 23:59:30 | LEID | O | mandatory HEADER label >GLONASS COD/PHS/BIS< added
2015-01-09 .. | N | .. 23:59:30 | LEID | O | mandatory HEADER label >SYS / PHASE SHIFT< added
2015-01-09 .. | N | .. 23:59:30 | LEID | O | label ># / TYPES OF OBSERV< skipped via output
The log table information consists of:

Label Description
DATE/TIME processing epoch
C(ode) N(otice), W(arning), E(rror)
EPOCH / FILE affected epoch in input file
SITE 4-char. station identifier
T(ype) Data Type
MESSAGE log message

Output of log information to a file via -errlog command line parameter.

gfzrnx -finp leid2000.13o -fout xxxx -errlog leid2000.13o_log

Direct Mode (-direct)

For a single OBS. rinex file it is possible to use a direct input/output mode. The I/O is done epoch by epoch and you miss information stored in the header like statistics and the automatic removal of empty obs. types. The advantage is the economic utilisation of RAM.

> gfzrnx -finp leid2000.13o -fout leid2000.13o_rx3 -direct

Supported File Names

The following input file names are supported and used to initialize the nominal data epoch interval.

RINEX-2 naming convention

File Name Description Example
SSSSDDD0.YYT daily file pots0070.15o
SSSSDDD[a-x].YYT hourly file pots007a.15o
SSSSDDD[a-x]MM.YYT sub-hourly file pots007r45.15o
Var. Description Example
SSSS 4-char. station identifier pots
DDD day of year 007
YY 2-digit year 15
MM minute of data begin 45
T data type (o,d,m,n,...) o

Examples

  • daily file

    pots0070.15o
    

  • hourly files

    pots007a.15o pots007b.15o pots007c.15o ... pots007v.15o pots007w.15o pots007x.15o
    

  • sub-hourly files (15 min)

    pots007a00.15o pots007a15.15o pots007a30.15o pots007a45.15o
    

RINEX-3 naming convention

File Name Example
SSSSMRCCC_S_YYYYDDDHHMM_NNN_FRQ_TT.FMT[.CMP] POTS00DEU_R_20150070000_01H_30S MO.rnx.bz2
SSSSMRCCC_S_YYYYDDDHHMM_NNN_TT.FMT[.CMP] POTS00DEU_R_20150070000_01H_MN.rnx.gz
Var. Description Example
SSSSMRCCC station identifier POTS00DEU
SSSS 4-char. identifier POTS
M Monument number 0
R Receiver number 0
CCC ISO country code DEU
S data source R
YYYYDDDHHMM start epoch 20150070000
YYYY year 2015
DDD day of year 007
HH hour 00
MM minute 00
NNN nominal file period (nominal) 01H
FRQ data frequency 30S
TT data type MO
FMT format extension rnx
CMP compression method gz, bz2, ...

For more details, see RINEX-3 file format definitions.

Automatic Output File Naming

For an automatic output file naming, one can use the ::RX2::, ::RX3:: or RX4:: parameter for the -fout command line switch.

RINEX-2 Site Name

The 4 character site name is taken from the "MARKER NAME" header record. If the site name is not given in the file header, it is taken from the input file name (if standard file name). In all other cases, it has to be provided via the -site command line parameter.

RINEX-3 Site Name

gfzrnx -finp pots0070.15o -fout      ::RX3::
gfzrnx -finp pots0070.15o -fout /tmp/::RX3::

This works if the header MARKER NAME fully matches the RINEX-3 "SSSSMRCCC" naming style. For a 4-character MARKER NAME one has to provide at least the marker-, receiver numbers, and the ISO country code in the command line. If no station information is found, the full information has to be given on the command line.

gfzrnx -finp pots0070.15o -fout      ::RX3::pots,00,DEU
gfzrnx -finp pots0070.15o -fout /tmp/::RX3::pots,00,DEU

The following examples will give the same result for a 4-char header. MARKER NAME is set. The parameters order is not relevant.

gfzrnx -finp pots0070.15o -fout ::RX3::00,DEU
gfzrnx -finp pots0070.15o -fout ::RX3::DEU,00

The output file name will be: POTS00DEU_R_20150070000_01H_30S_MO.rnx.

The default data source identifier is R (Receiver). If one needs the S (Streaming), simply add it to the ::RX3:: sub-information.

gfzrnx -finp pots0070.15o -fout      ::RX3::00,DEU,S
gfzrnx -finp pots0070.15o -fout /tmp/::RX3::00,DEU,S

The output file name will be: POTS00DEU_S_20150070000_01H_30S_MO.rnx.

RINEX-3 Site Name (-4to9)

Besides the naming definitions on the command line (-fout ::RX3::00,DEU) multiple site identifier definitions can be provided via the -4to9 command line parameter providing a simple file with the naming information.

gfzrnx -finp pots0070.15o -fout ::RX3:: -4to9 four2nine.conf

The -4to9 input file (e.g.) must have the following structure:

#    name mr iso
0001 pots 00 DEU
0002 brux 00 BEL
0003 tash 00 UZB
...

A correct numbering can be ignored if it is out of interest to you. In this case, you can use the same number for all stations.

#    name mr iso
1    pots 00 DEU
1    brux 00 BEL
1    tash 00 UZB
...

An up-to-date 4to9 configuration file for diverse networks like IGS, MGEX, EUREF, TIGA and others can be derived from GFZ's

SEnsor Meta Information SYStem (SEMISYS) via a simple command line:

curl -G http://semisys.gfz-potsdam.de/semisys/api/ -d 'symname=1005' -d 'network=EPN'               -o EPN_4to9.txt
curl -G http://semisys.gfz-potsdam.de/semisys/api/ -d 'symname=1005' -d 'network=IGS,MGEX'          -o IGS_MGEX_4to9.txt
curl -G http://semisys.gfz-potsdam.de/semisys/api/ -d 'symname=1005' -d 'network=EPN,IGS,MGEX,TIGA' -o ALL_4to9.txt
wget 'http://semisys.gfz-potsdam.de/semisys/api/?symname=1005&network=EPN' -O EPN_4to9.txt

For more details see the SEMISYS api and download page http://semisys.gfz-potsdam.de/semisys/download.

RINEX-2 Start Epoch/Duration

By default, the start epoch and file duration are used to create the epoch parts of the output name. To force the automatic file naming to a distinct type ::RX2:: can be extended by the letters L, S or D (Long, Short, Day) to ::RX2L::, ::RX2S:: or ::RX2D::.

The following examples illustrate the standard behavior for a station ABCD with start epoch 2015-123 03:05 and different durations.

Duration < 1 hour 1 hour > 1 hour
::RX2:: abcd122d05.15o abcd122d.15o abcd1220.15o
::RX2L:: abcd122d05.15o abcd122d05.15o abcd122d05.15o
::RX2S:: abcd122d.15o abcd122d.15o abcd122d.15o
::RX2D:: abcd1220.15o abcd1220.15o abcd1220.15o

The cases ::RX2L::, ::RX2S:: allow storing not only hourly or sub-hourly files. For durations larger than 1 hour, one can use it to store sub-daily files too. In this case, the file epoch indicates the start time (hour, minute) only. In the case of sub-hourly, file names with nominal begin epochs (-epo_beg / -sei in) and the nominal duration -d 900 are used by default. For other time intervals, the duration (-d) has to be given.

If the data start minute is 17 and the duration e.g. 300 s the following commands give different output file names:

gfzrnx -kv -finp pots125x15.13o -fout TMP/::RX2::
TMP/pots125x15.13o

gfzrnx -kv -finp pots125x15.13o -fout TMP/::RX2L::
TMP/pots125x15.13o

gfzrnx -kv -finp pots125x15.13o -fout TMP/::RX2L:: -d 120
TMP/pots125x16.13o

gfzrnx -kv -finp pots125x15.13o -fout TMP/::RX2L:: -sei in
TMP/pots125x15.13o

gfzrnx -kv -finp pots125x15.13o -fout TMP/::RX2L:: -epo_beg 2015125_230000 -d 1800
TMP/pots125x00.13o

gfzrnx -kv -finp pots125x15.13o -fout TMP/::RX2S::
TMP/pots125x.13o

RINEX-3 Start Epoch/Duration (real)

For the RINEX-3 file renaming, the following rules are valid for all observation types (O/N/M). The example observation files in the table below with the following characteristics are used to illustrate the (re)naming process.

Characteristics pots0070.15o pots007c.15o pots007c30.15o
Time Begin 01:12:30 02:13:30 02:33:13
Time End 23:59:30 02:55:30 02:44:50
Duration (implicit) 1 day 1 hour unknown
Duration (nominal) 1 day 1 hour 15 min
Duration (real hh: mm: ss) 22:47:00 00:42:00 00:11:37
Sampling Rate 30s 30s 1s

Using the following basic command, you will get file names containing the real values derived from the file content.

gfzrnx -finp <RINEX-2 Name> -fout ::RX3::01,DEU

By default, the real beginning epoch and duration information based on the file content are used:

RINEX-2 RINEX-3
pots0070.15o POTS00DEU_R_20150070112_23H_30S_MO.rnx
pots007c.15o POTS00DEU_R_20150070213_42M_30S_MO.rnx
pots007c30.15o POTS00DEU_R_20150070233_12M_01S_MO.rnx

RINEX-3 Start Epoch/Duration (nominal)

Similar to the RINEX-2 file naming, to get nominal beginning and duration information in the RINEX-3 file name, additional command line parameters are needed.

The general method is to give the beginning epoch and the duration information via the -epo_beg and -d command line parameters.

gfzrnx -finp file.rnx     -fout ::RX3::ABCD,05,DEU -epo_beg 20150812_020000 -d 3600
gfzrnx -finp pots0070.15o -fout ::RX3::00,DEU      -epo_beg 20150107_000000 -d 86400

Assuming 30 s sampling rate and GPS-only data, the output file names will be:

ABCD05DEU_R_20152240200_01H_30S_GO.rnx, POTS00DEU_R_20150070000_01D_30S_GO.rnx.

In the case of nominal standard RINEX input file names you can get nominal RINEX-3 output file names, providing the -sei in command line parameter (strict epoch interval), which uses the epoch and implicit duration information from the input file name. If no implicit duration information is given (RINEX-2 11.3 file names) it has to be provided in addition via the -d (duration) command line parameter (otherwise the real duration is used). This can be useful in renaming scenarios.

RINEX-2 command line parameters RINEX-3
pots0070.15o -sei in POTS00DEU_R_20150070000_01D_30S_MO.rnx
pots007c.15o -sei in POTS00DEU_R_20150070200_01H_30S_MO.rnx
pots007c30.15o -sei in -d 900 POTS00DEU_R_20150070230_15M_01S_MO.rnx

RINEX-3 Mixed Broadcast Splice File Naming -nav_mixed

If generating a mixed broadcast navigation file with automatic file naming (::RX3::) in an ongoing accumulation mode one should use the -nav_mixed command line parameter to ensure that a _MN file name is generated, nevertheless a single satellite system is found in the given file(s).

Remark

In the file split mode, the duration information will be nominal (split interval).

The nominal mode has to be used with caution, especially in renaming operations.

Warning

Using the NOMINAL mode gfzrnx does not only (re)name the given output files. It ensures that the file content fits to the file name. This way, extra observations are removed!

For navigation files, this nominal interval can be extended via the -enb command line parameter (extend navigation boundaries). See the Operation/Tasks - Rinex File Epoch Interval section.