Hello all! My question is about what app I need to use to import (and if possible stream) raw satellite timing data from a hand held single frequency gps, or if such an app even exists in gpstk. I have a Magellan Explorist and a Garmin 16x GPS receiver (Both have NMEA 2.1 output option). I am ultimately looking to edit the timing data and recalculate a more accurate position. Any help or advise would be greatly appreciated.

-- DominicFuller - 12 Dec 2008


ALERT! If you answer a question - or have a question you asked answered by someone - please remember to edit the page and set the status to answered. The status is in a drop-down list below the edit box.

Currently the GPSTk does not any parsing of NMEA data. However if you write the parsing code, the GPSTk has a number of methods to process that data through better GPS processing algorithms. The GPSTk has already implemented these into applications that understand RINEX. Maybe the first step would be for you to write an application that read the data from the GARmin and produces RINEX files. You can use the GPSTk to write the RINEX files. One you have these, you could used some of the standard apps to process the data.

One of your largest error sources in a single frequency receiver is ionospheric error. You will get the best solution if you combine you data with data from a known reference location to form a differential GPS solution. This can then remove (by differencing out) this (and other) errors.

Is there anything else you are looking for in terms of information?

-- RickMach - 02 Jan 2009

Open source software already exists to convert an NMEA data stream into RINEX but from what i understand RINEX is only used for post processing. Do you know of an application in GPSTK that handles real time data streaming of any kind? Or do you know of a way to use RINEX in a real time situation?

-- DominicFuller - 09 Jan 2009

There are multiple questions here, as I see it:

  1. Does the GPSTk handle NMEA (more specifically NMEA 0183)? The answer is no. A good explanation for this FAQ is directly addressed in our first article about the GPSTk.
  2. Are there open source apps that convert NMEA data to RINEX? I don't see how this is possible. The formats carry entirely different information. NMEA tells you the receiver's position and information to supplement that solution (like how many satellites were used). RINEX is the information used to calculate the position solution: range data, satellite orbits and satellite clocks models.
  3. Are there apps in the GPSTk that handle real time data streams? Well there are several that can understand binary data from a receiver. And there is one that acts like a receiver and procesess an epoch by epoch solution, the application rinexpvt . But as written it cannot be used real time. It needs a static list of ephemeris (orbit and clock ) information. You can do the same kind of solution with teqc. So, sorry for the long winded answer, the answer is no.

In terms of I/O, yes the GPSTk is optimized for post-processing. However, it is in fact used by many to do real-time processing. But because there are no standards for passing real-time ranges, and orbit and clock models, then each design is necessarily unique. That is, each project that does this probably realizes that no-one else can reuse their real-time code. For that reason I believe no real-time applications are in the GPSTk.

That said, if you program against the library, instead of using the apps, there are TONs of great classes that can be used, that would be blissfully unaware of being used in real-time. But this requires you to parse your proprietary data stream to get pseudoranges and ephemeris.

-- BenHarris - 20 Jan 2009

Hi all. I'm using the USRP ( and a GPS software receiver ( It works in real-time, and I can extract pseudoranges, carrier phases and ephemeris. I would like to use GPSTk for the positioning algorithms. Could you please point me in the right direction? What kind of structure, or class, I have to implement in order to use precise point positioning?

Any help will be highly appreciated.

-- CarlesFernandez - 22 Jan 2009

Hi Carles!

If you have pseudoranges, carrier phases and ephemeris, you are in an excellent position to use the tools provided by the GPSTk library.

You must, however, be aware that the GPSTk is very flexible and you can achieve your goal using different structures.

A lot of people is more comfortable when using vectors to hold information, as well as the basic GPSTk structure "RinexObsData". Please look at "example4.cpp" and "example5.cpp" for this way of working.

On the other hand, in "lib/procframe" you'll find another way of managing data, more focused on maps, lists and other STL data structures. In this GNSS data processing paradigm, data classes and processing classes are separated.

Class "gnssRinex" is the usual workhorse here, encapsulating all GNSS information, appropriately indexed, in a single object. Your work will focus on putting pseudoranges, phases and ephemeris (indeed, X,Y,Z satellite position) into "gnssRinex", and from there on you can use the provided processing classes.

Currently, you must download the devel version of the GPSTk in order to take full advantage of "lib/procframe". Follow the instructions in GPSTk website to connect to the Subversion (SVN) repository.

Examples "example6", "example7", "example8" and "example9" make use of "procframe" paradigm, and currently "example8" and "example9" implement the full "Precise Point Positioning" (PPP) algorithms.

More information may be find in the "Publications" link, specifically at:

Take into account, however, that "true" PPP can't be used in real time, because it uses precise orbits and clocks. IGS' predicted orbits may be used to (partly) avoid this restriction.

Best regards,


-- DagobertoSalazar - 25 Jan 2009 No such template def TMPL:DEF{PROMPT:supportquery}

Topic revision: r6 - 25 Jan 2009, DagobertoSalazar

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback