[teqc] helpful tip of week 1936

Lou Estey lou at unavco.org
Wed Feb 15 11:40:44 MST 2017

This week's tip: what you can (and shouldn't) do in a RINEX obs file

Sorry for not getting some tips out in the last three weeks -- other responsibilities here
overwhelmed me.

Anyway, this week's tip is really background on RINEX philosophy, gleaned from about
14 years of conversations and communications with Dr. Werner Gurtner, who as you should
know, started the RINEX specification (in the late 1980s), heavily borrowing from the
ARGO format that had been started a bit earlier by Dr. Gerry Mader and others at the NGS.

Werner's fundamental view was that as little as possible should change in a single
RINEX observation file, although he wanted RINEX to apply for kinematic surveying.
To that end, the equipment used (receiver type, serial number, and firmware; antenna
type and serial number; radome -- even cabling, which is not specified in the RINEX
file) should remain constant during the observation period of any one single RINEX
observation file.  However, the antenna position, marker name and number can change
in order to support tasks like kinematic surveying.

But this leaves some vague areas.  What about the sampling interval?  Well, a variable
sampling interval is certainly not preferred (especially for a modern reference station),
but sometimes it's unavoidable -- like in some difficult field situations.   This is why
the 'INTERVAL' header line is optional.  The sampling interval can vary in the file.

Another vague point is varying the number or types of observables, specified by the
non-optional '# / TYPES OF OBSERV' header line.  This particular point has reared its
head multiple times since I've been with UNAVCO.  The fact is that early on I wrote
teqc to be adaptive to change the observables as needed (where, in the mid-90s, the
observables needed did change with the type of signals that could be tracked by some
receivers depending on which GPS block SVs were visible).  As soon as this type of RINEX
got into the main stream it became obvious that hardly any RINEX reader could deal
with changes of the observables after the header.  So, obviously, teqc was modified
very quickly to not do this any more and to detect RINEX that teqc was reading where
observable changes were occurring.

Later on, this same point came up again in 2004.  I had a pretty good sense of what
Werner wanted in RINEX by then, but I asked him anyway.  The following is an excerpt
from a Sept 2004 email communication from Werner himself when this came up again with
RINEX obs produced by another RINEX translator:

"Although the documentation does not state explicitely [sic] that the # / TYPES OF OBSERV
record should only appear in the main header (we have to do this for the next version!)
it is certainly a good practice not to change the obs types in any way within the file.
I doubt that there are many processing softwares around that manage such files.

"The good practice of a RINEX generator is to do without quirky options. RINEX files
should make live [sic] of the user easier and not more difficult."

... which is 100% compatible with the notions I had about RINEX by then and still have.
(I've reviewed the RINEX 2.11 specification and I don't see any mention of his desire to
clarify "no chances to '# / TYPES OF OBSERV' after the header" finally getting included.)

In short, any RINEX 2.xx converter that changes the number and/or observable types after
the header is technically correct (near as I can determine), but it's just creating
RINEX that hardly any RINEX reader will be able to use.

It's sort of like 'COMMENT' lines.  These could be used in the header or after the
header (using "event flag" 4) to include almost anything -- your favorite recipes,
jokes, political statements, ... you name it!  There's nothing in the RINEX specification
that says that comments have to be pertinent to the RINEX obs file.  But it's just
common sense not to include irrelevant stuff.  (Do jokes about RINEX count?
"Why did the RINEX file cross the road?  ..."  "A RINEX file walks into a bar ..."
"A RINEX obs, RINEX nav, and RINEX met file are discussing the afterlife ..."
Fill in a completion, get back to me, and I'll send the best jokes in a future tip
of the week.)

Here's another little detail, sometimes missed: A RINEX file has to be in ASCII.
No Unicode, UTF-16, UTF-8, etc. allowed for text fields.  In fact, just saying
"ASCII" is too broad.  Only printable ASCII characters (0x20 - 0x7e) plus linefeed
(0x0a) and carriage-return (0x0d) for line termination should be used.  Include
anything else and you'll have pseudo-RINEX that is unreadable by many RINEX readers.

Just keep Werner's basic philosophy in mind: "RINEX files should make the life of
_any_ user easier ... and not more difficult."

Happy teqc-ing!


p.s. I'll be out of the office next week, so the next tip of the week will not
be until at least the week of Feb 26th.

Louis H. Estey, Ph.D.              office:  [+001] 303-381-7456
UNAVCO, 6350 Nautilus Drive           FAX:  [+001] 303-381-7451
Boulder, CO  80301-5554            e-mail:  lou  unavco.org
         WWW:http://www.unavco.org      http://jules.unavco.org

"If the universe is the answer, what is the question?"
                                                -- Leon Lederman

Past helpful tips:

week 1894: using teqc config files - http://postal.unavco.org/pipermail/teqc/2016/002067.html
week 1895: qc of high-rate data - http://postal.unavco.org/pipermail/teqc/2016/002071.html
week 1896: UNIX/Linux shells for Windows - http://postal.unavco.org/pipermail/teqc/2016/002072.html
week 1897: '-' vs. '+' teqc options - http://postal.unavco.org/pipermail/teqc/2016/002076.html
week 1898: auto-identification of formats - http://postal.unavco.org/pipermail/teqc/2016/002092.html
week 1899: auto-identification vs. format flags - http://postal.unavco.org/pipermail/teqc/2016/002096.html
week 1900: square brackets in options - http://postal.unavco.org/pipermail/teqc/2016/002105.html
week 1901: using option '+mds' - http://postal.unavco.org/pipermail/teqc/2016/002108.html
week 1902: qc results w/ problematic nav messages - http://postal.unavco.org/pipermail/teqc/2016/002113.html
week 1903: '-no_orb[it]' and '-no_pos[ition]' options - http://postal.unavco.org/pipermail/teqc/2016/002115.html
week 1904: '-week' option - http://postal.unavco.org/pipermail/teqc/2016/002117.html
week 1905: using '+bcf' for XYZ/geodetic conversion - http://postal.unavco.org/pipermail/teqc/2016/002126.html
week 1906: the '+v[erify]' option - http://postal.unavco.org/pipermail/teqc/2016/002128.html
week 1907: '+C2', '+L5', "+L6', '+L7', '+L8', '+all' options - http://postal.unavco.org/pipermail/teqc/2016/002130.html
week 1908: getting RINEX doppler and L2 - http://postal.unavco.org/pipermail/teqc/2016/002131.html
week 1909: using paths w/ file names - http://postal.unavco.org/pipermail/teqc/2016/002132.html
week 1910: the (un)importance of file names - http://postal.unavco.org/pipermail/teqc/2016/002133.html
week 1911: notices, warnings, and errors - http://postal.unavco.org/pipermail/teqc/2016/002134.html
week 1912: the '-max_rx_SVs' option - http://postal.unavco.org/pipermail/teqc/2016/002137.html
week 1913: the end of '++igs' and '+igs' - http://postal.unavco.org/pipermail/teqc/2016/002140.html
week 1914: splicing together RINEX files - http://postal.unavco.org/pipermail/teqc/2016/002144.html
week 1915: using '-O.int' and '-O.dec' - http://postal.unavco.org/pipermail/teqc/2016/002145.html
week 1916: '+doy' option - http://postal.unavco.org/pipermail/teqc/2016/002146.html
week 1917: '-tbin' and '-ast' options - http://postal.unavco.org/pipermail/teqc/2016/002152.html
week 1918: mp12 RMS before/after Oct 2013 - http://postal.unavco.org/pipermail/teqc/2016/002158.html
week 1919: the global windowing options - http://postal.unavco.org/pipermail/teqc/2016/002159.html
week 1920: '-M.dec' and '-N.dec' options - http://postal.unavco.org/pipermail/teqc/2016/002163.html
week 1921: combining time filtering options - http://postal.unavco.org/pipermail/teqc/2016/002176.html
week 1922: helping me (or someone else on the list) help you - http://postal.unavco.org/pipermail/teqc/2016/002187.html
week 1923: the "build" line - http://postal.unavco.org/pipermail/teqc/2016/002190.html
week 1924: the qc '-w[idth]' option - http://postal.unavco.org/pipermail/teqc/2016/002193.html
week 1925: qc with explicit time windowing - http://postal.unavco.org/pipermail/teqc/2016/002194.html
week 1926: the '+rx_state' option - http://postal.unavco.org/pipermail/teqc/2016/002200.html
week 1927: the '-O.sum' option - http://postal.unavco.org/pipermail/teqc/2016/002204.html
week 1928: the '+meta' and '+mds' options - http://postal.unavco.org/pipermail/teqc/2016/002206.html
week 1930: more on '-O.sum' - http://postal.unavco.org/pipermail/teqc/2017/002207.html
week 1931: the '-O.s[ystem]' option - http://postal.unavco.org/pipermail/teqc/2017/002208.html
week 1932: leap seconds - http://postal.unavco.org/pipermail/teqc/2017/002215.html

More information about the teqc mailing list