PPK point extractor software

Hi, guys!

I have something sweet for you. I started to work on a software, that will help us all to deal with PPK process. Everyone, who is doing PPK with Emlid knows, that it is pain to export points from POS files. When you have over 100 points, you feel like a zombie, while using Time Interval function in RTKLib. I have a more comfortable solution for you.

First of all, for those, who are not familiar with the problem. When you are surveying something with Survey tool and planning to do PPK afterwards, you will deal with the problem. After PPK in RTKlib, you will not get any points. You will get whole track of your movement. Inside the track, you will have also your measurements. In order to take them out, you need to filter POS file by time and extract all the records for the time interval of the point collection. Then, you have to get a centroid of all the measurements, which roughly will be the point you were measuring. One option is to do it manually with Time interval function in RTKPlot. but, when you have over 100 points it is really time consuming. Also, you will have to calculate time corrections between UTC and GPST times.

At first, I also was clicking Time Interval endlessly. Last time, when I had to do it again, I wrote a small script in R, which just filtered all the data by time interval and calculated centroid of the points. But, not everyone wants to deal with R. That’s why I started to write a small software in Electron.js in order to do the same operation, but with some GUI. You can see the software working here:


Now, I am looking for someone to test the software with me. I am not still ready to make it public. I am thinking more about beta testing it and then making it public. Certainly, no business here. Eventually, when it will be ready, I will make it as free tool for everyone.

If you are interested in beta testing, leave a reply here, or send me a message. Software can run on Windows, Mac and Linux. I have tested only on Mac and Windows for now.

Latest software version
Posprocessor v.0.2.1


I would be willing to try out your software. This looks to have great potential and is similar to what I had in mind when working through PPK but I very much lack the programming knowledge. Did you see this thread I started, particularly the later post in regards to QGIS?

Could a script like this become a tool/plugin for QGIS? Populate your map canvas/project in realtime…:sunglasses:

1 Like

Yes, this is exactly the same problem, that I am trying to solve. In your solution, you didn’t mention, that CSV/Shapefile has time in UTC, but PPK POS file has time in GPST. So, be careful with that.

Since you can import CSV into QGIS, I think it won’t be a problem to use my software, since it is quit simplified, than QGIS. I will think about implementing a plug-in for it. I am just not too strong with Python. :slight_smile:


Yes, this is exactly the same problem, that I am trying to solve. In your solution, you didn’t mention, that CSV/Shapefile has time in UTC, but PPK POS file has time in GPST. So, be careful with that.

Good catch, yes this is something I noticed but didn’t exactly think about until you mentioned it. EMLID, why not have the survey CSV/shapefile also in GPST?

Looking at your video it appears to still be individual point extraction. Are you considering a way to run this batch by extracting all the collection times as your aggregate groups from the CSV then grouping the POS file accordingly?

I didn’t quite understood, what do you mean by aggregate groups from the CSV. Like many CSV and POS files at one time? I plan to make automatic point extraction, but it will be just from one POS file and one CSV file (usually from a survey day I have 1 log file and 1 csv file from the project). For now I just made a proof of concept. I have a plan for next features, which will include automatic processing, as well as editing points on chart (moving centroid around).

1 Like

Yes for single files/survey, it was the automatic processing I was not clear on from video as it appeared very manual (did it for each point rather than batch). By aggregate I mean to automatically group your .POS points based on extracting time stamps from each survey point within its .CSV file, time being the aggregate/grouping parameter. This is where I left off in my attempt using only QGIS tools and sounds like what you are doing to automate the process. I was just slightly confused by the videos manual-“ness”. Nice work keep it coming.

Absolutely how do I get a link to download for windows. Once I’ve tested I’ll leave feedback on all the good points and crashes if any.

For now there will be a lot of crashes. :slight_smile: I will implement batch process today and then will send you a link to exe. The software is not large, but, since I am using Electron.js with it’s npm system, approx. size now is ~300 Mb. Hopefully, I will deal with that problem soon and software will be smaller.


All I can say, it’s a great idea and forward thinking. It’s an honor to become a beta tester.

Sounds good to have a more user-friendly tool. FYI, I implemented a Python solution last year:

It was buried in this thread: Rms?. It met our needs at the time, but there is definitely room for improvement.

With conda install of essentials (python, pandas and numpy), this potentially offers a cross-platform solution.

hi guys, excellent job Jurijs, could you try your software?
I installed a reach rm + to a phantom 3, and after doing the flight registration to perform ppk I wanted to collate the .pos file obtained in the trajectory correction with the UTC times extracted from the log file generated by the drone, and your program could be very useful for it.


I see, that you are not computing correction for GPST time. You have POS file also in UTC? Mine out of RTKlib is in GPST time (as it is said in pos file header).

Great effort guys! I am looking forward to this tool!

I never even thought about this problem as I am still new to PPK and have only used it on the drone and receive the events log. This is where I am happy I am fortunate enough to already have Carlson Survey. If I need to extract points from a full track I would bring the whole log in with each point as a symbol. Then there is a function to clean up the drawing and remove all but one of any duplicate symbols. And then select those and export to CSV.
As an alternative, shouldn’t there be a fairly easy way to create events in a survey like we are doing with the M+ and drone?

I saw on some thread, that probably Emlid is working on it. As an alternative, you can make a physical button, that will work like a hotshoe adapter and press it on every point. In such way you will get events record in the file. I don’t like this approach, because I am measuring every point for ~ a minute and I want all measurements for this period of time, but events will give me only a momentum.

That is along the lines of what I was thinking. How is it then that I get the specific points from the drone? It is much easier to extract the points from that POS. I don’t understand what you mean by only getting the momentum?

I mean, that events record is per picture on your drone. That means, that you can extract only one or a couple records from pos file, based on that record (depends on your update rate, though). In my example, I have update rate 5Hz. It means, that I have 5 records per second. If I am measuring a point for 20 seconds, I have 100 records in POS file and it is statistically more confident. Though, after PPK sometimes I don’t have any records in that 100 that will be fixed.

Ok. So with the drone rtklib is estimating the position by using the direction and velocity, then put a point at the event time stamp? Difference with survey is that it is somewhat averaging multiple shots?