Base station data for RTKLIB

RTKLIB has a number of different algorithms it can use to calculate position. The first two in the list are “Single” and “DGPS”. Both of these methods use only the pseudorange data and not the carrier phase information. Without the carrier phase information, the precision of these methods is quite low, and probably worse than what the GPS receiver would provide without RTKLIB. In general they are not very interesting other than possibly for some initial debug during setup. The rest of the algorithms can be divided into two groups, differential and PPP. The differential algorithms determine position relative to a known nearby location while the PPP (precise point positioning) algorithms determine absolute position. In general, the data quality of the low cost hardware we are using is only good enough to use with the differential methods and not the PPP methods, so we will focus on those. RTKLIB supports four differential modes: Static, Kinematic, Moving-Base, and Fixed. The kinematic mode is designed to calculate the relative position between a fixed base and a moving rover and that is what we will use. It can also be used with a moving base if we are concerned only with finding the distance between the two and not trying to translate that to a fixed position, and we will use it this way as well.

In my particular application, I am interested only in the distance between two receivers and not in any absolute locations. In this case I will collect data from two low-cost receivers and use one as the base and the other as the rover. In many cases, though, it is useful to use an existing ground station as the base and the low cost receiver as the rover. I use this method for testing and verification, even though I don’t plan to use it in my final solution.

In the US, base data is available online for free from many GPS stations in the CORS network.  Here’s a map of CORS station locations.


For the ground stations I have used, it is generally available online less than an hour after it is taken. It is fairy easy to pull it manually using a user-friendly form from the CORS webpage, or you can use the RTKGET utility in RTKLIB. Be aware that some stations have only GPS data, and some have both GPS and GLONASS data.


9 thoughts on “Base station data for RTKLIB”

  1. Hi! Thanks for the very helpful write-ups. I’ve learned a lot. I have one question: as far as my understanding goes, as dGPS needs both the base station and rover to track the same satellites, how does RTKLIB ensure that? Does the rover wait for the stream from base to arrive first? If so, is there always a small delay between the two (the latency of the stream)?


    1. Hi John. RTKLIB calculates a solution for each set of rover observations using the most recent available set of base observations. For real-time solutions there will generally be a delay between these two and this is referred to as the age of differential. The age of differential includes both the communication delay and the effect from lower base station sampling. Ideally I would suggest keeping this below a couple of seconds but in reality this can usually go to 30 seconds or more with only small errors added to the solution.


  2. Hi! I am new to RTKLIB and I would to thank you for all your posts. I have a question for you: is there a way to consider data from more than one permanent stations? In my dataset (ubx file) surveyed area is very big, so I can’t consider only a permanent station because of too bigger distance between it and some area portions. I generally use rnx2rtkp and I tried to list data from all involved reference stations, but it seems to consider only the first one.
    Thank you in advance!


    1. Hi Chizzi. I believe the answer to your question is no. RTKLIB does appear to have partial implementation for handling multiple base-rover solutions in post-processing and for switching bases in the real-time processing but as far as I can tell neither of these is fully implemented.


      1. Thank you very much for your reply, but… bad news! Maybe I need to explore in more details different software that permit to include data from multiple base stations. Actually, any suggestions will be very appreciated!


  3. Hello @rtklibexplorer, i have a question about rtklib, I want to calculate the coordinates of a base station with rtklib, I usually calculate this in BERNESE, and I also want to calculate it with rtklib, is that possible and how can I do it?

    Liked by 1 person

    1. Hi Saidgnss. RTKLIB does support single frequency PPP, so that is an option to determine semi-precise absolute coordinates of a base station. You will get better accuracy though if you can run an RTK solution between your base station and a known reference station.


  4. Hi! I’m pretty new to rtklib and have been finding your posts incredibly helpful. I was wondering if you transform the CORS data (nad83 -> wgs84) before using it for post processing in rtklib. If you do, what do you use? If you don’t, why not?


    1. Hi Rune. There are three parts to the CORS data: raw observations, ephemeris, and station location. The raw observations are in meters and cycles and independent of any datum. The ephemeris data specifies the satellite locations and uses the WGS84(G1150) datum regardless of whether you get it from your rover or from the CORS station data. The CORS station location is often specified in NAD83 coordinates but the RTK solution is relative, not absolute. Any errors introduced by mixing the two datums will be smaller than the actual position errors in the broadcast orbits and will be cancelled by the double differencing in the RTK solution. RTKLIB will then add the absolute base position to the relative distance between receivers. The relative distance will be in meters and effectively independent of the datum, so the solution position will be in the same datum as the base station position. If the base station position is in NAD83 and you want the solution in WGS84, you can either do the NAD83->WGS84 conversion to the base station position before running the solution, or to the RTKLIB solution position afterwards. For a more rigorous answer to your question, see this article on the NOAA website.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.