Post-Processed Kinematic (PPK) Survey Data with Emlid Studio
Published:
This post provides a simple step-by-step guide on how to perform Post-Processed Kinematic (PPK) for survey purposes.
In many field situations, Real-Time Kinematic (RTK) positioning is not always available. RTK requires stable internet infrastructure, additional hardware, and sometimes paid correction services. This is not always practical for agricultural fields or remote areas.
Fortunately, PPK provides a reliable alternative. With PPK, you only need one GNSS receiver (as a rover) in the field. The correction data can later be downloaded from publicly available CORS (Continuously Operating Reference Stations).
This tutorial explains how to perform PPK using:
- Emlid Reach RS3
- Base station data from CORS Network (NYWL station in this tutorial)
- Emlid Flow (mobile app)
- Emlid Studio (desktop software)
The software versions used in this tutorial:
- Emlid Studio v1.9 (Windows 11 64-bit)
- Emlid Flow v14.8 (iPhone iOS 18.5)
Other versions may look slightly different but the workflow is the same.
Terminology
For people new to GNSS, here are several key terms:
- GPS: The satellite navigation system operated by the United States. It is only one of several global navigation systems.
- GNSS: Global Navigation Satellite System. This includes multiple satellite systems such as: GPS (USA), GLONASS (Russia), Galileo (EU) and BeiDou (China). Modern receivers like the Reach RS3 use all systems together for higher accuracy.
- RTK (Real-Time Kinematic): A positioning technique that receives correction data in real time from a nearby base station.
- PPK (Post-Processed Kinematic): A positioning technique where the correction data is applied after the survey, using recorded GNSS logs.
- Rover: The GNSS receiver that you carry in the field to collect survey points.
- Base station: A fixed GNSS receiver with known coordinates. For PPK we typically use publicly available CORS stations.
- UTC Time: A global time standard used by GNSS systems. All satellite data is recorded in UTC time, not local time.
Pre-requisite
- Hardware:
- Software:
- Emlid Studio (on PC)
- Emlid Flow (mobile)
- Data source:
- Base station data from the NOAA CORS Network
Getting Start
Step 0. Before starting the survey, find a nearby CORS station using the NGS Web Map. The distance between your rover and the base station strongly affects the accuracy.
| Distance | Quality |
|---|---|
| 0–10 km | Best |
| 10–20 km | Very good |
| 20–40 km | Acceptable |
| 40–60 km | Not recommended |
| >60 km | Usually unreliable |
In this tutorial, we use the 「NYWL」 station since it is closet to Cornell AgriTech campus. You need to select the one that is closet to you.
Step 1. Connect your phone to the GNSS receiver using Emlid Flow, make sure the GNSS receiver is logging raw RINEX data, and create survey project in 「Survey」. RTK correction is NOT required during the survey.
You might also find this helpful: How to log data for PPK

Step 2. Tap the ⚙️ gear icon to configure survey settings
FIX ONLY: OffCOLLECT MODE: Averaging, 5s
Then start the survey.
Why averaging is important:
CORS stations usually record GNSS data every 5 seconds. If you collect survey points shorter than the base station sampling interval, the PPK software may not have enough data to compute corrections.
General rule: Averaging duration ≥ base station sampling interval
Example: If the base station sample rate is **8 seconds**, set averaging to ≥8 seconds

Step 3. Export your survey project from Emlid Flow on your phone as a CSV file. This file contains the raw coordinates recorded in the field. Later, PPK will correct these coordinates.

Step 4. Download the raw GNSS log (RINEX files) from your receiver (rover) on your phone. Typical files include:
xxxx.yyO(observation file)xxxx.yyP(navigation file)xxxx.yyB(backup file)
The files we need are:
.yyO.yyP
| File | Purpose |
|---|---|
| .yyO | Rover observation data |
| .yyP | Satellite navigation data |
The number yy represents the year (e.g., .26O → 2026).

Step 5. Download the RINEX observation data covering your survey period from the selected CORS station.
⚠️ Make sure the downloaded data fully overlaps with your survey time (in UTC).
See Supplementary (S3. How to Choose the Correct CORS Data and S4. More details about NCN data and products) at the end of this tutorial for details about how to select correct data files.
- Option 1 (abandoned): Go to the detail page of your selected base station, and click 「Quick Data Download」.
This option typically provides only
*.yyd(Hatanaka-compressed) files, which are not directly supported by Emlid Studio. For Emlid Studio user, please refer to download Option 2.These files may still work with other PPK software that supports
.yydfiles (Hatanaka-compression RINEX) input.

- Option 2: Download from NCN Data and Product. You can select either server below.
- From NCN on AWS:
curl -O https://noaa-cors-pds.s3.amazonaws.com/rinex/YYYY/DDD/ssss/ssssDDD0.YYd.gz # e.g.: curl -O https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/075/nywl/nywl075p.26o.gz # hourly data (p -> hour 15-16) curl -O https://noaa-cors-pds.s3.amazonaws.com/rinex/2026/075/nywl/nywl0750.26o.gz # daily data # Check Supplementary (S4. More details about NCN data and products) for more information - From NGS servers:
curl -O https://geodesy.noaa.gov/corsdata/rinex/YYYY/DDD/ssss/ssssDDD0.YYd.gz # e.g.: curl -O https://geodesy.noaa.gov/corsdata/rinex/2026/075/nywl/nywl075p.26o.gz # hourly data (p -> hour 15-16) curl -O https://geodesy.noaa.gov/corsdata/rinex/2026/075/nywl/nywl0750.26o.gz # daily data # Check Supplementary (S4. More details about NCN data and products) for more information
- From NCN on AWS:
The 4-char station ID ssss must be in lowercase.
Step 6. Launch Emlid Studio, select 「Stop & Go with Emlid Flow」, and import your Rover logged RINEX data, Base RINEX observation data and Sattelite Navigation data to the corresponding places. Specifically,
- Rover:
.yyOfile from your GNSS rover logged RINEX data - Base:
.yyOfile from CORS RINEX observation data - Navigation:
.yyPfile from your GNSS rover logged RINEX data
Click 「Process」 to run PPK. Once it is done, you will see the trajectory of your GNSS receiver in centermiter level.

Step 7. Import your survey CSV file and generate corrected CSV using PPK. The generated files will be saved in the Rover logged RINEX data folder by default, or you can also find it by clikcing 「Show result files」

We survey four points at the four corners of a rectangle, the PPK shows precise results matched.

Supplementary
S1. Understanding UTC Time (Very Important)
GNSS systems use UTC time, not local time.
However, field notes are usually recorded in local time, which can lead to confusion when downloading CORS data.
For example, in New York (Eastern Time, daylight saving):
| Local Time | UTC Time |
|---|---|
| 08:00 | 12:00 |
| 09:00 | 13:00 |
| 10:00 | 14:00 |
| 11:00 | 15:00 |
Conversion: Local time + 4 hours = UTC (during daylight saving time)
Always convert your survey time to UTC before downloading CORS data. Remember to check your own time zone!
S2. Understanding CORS File Time Codes
CORS hourly files use letters to represent hours:
| Letter | Hour (UTC) |
|---|---|
| a | 00 |
| b | 01 |
| c | 02 |
| d | 03 |
| e | 04 |
| f | 05 |
| g | 06 |
| h | 07 |
| i | 08 |
| j | 09 |
| k | 10 |
| l | 11 |
| m | 12 |
| n | 13 |
| o | 14 |
| p | 15 |
| q | 16 |
| r | 17 |
| s | 18 |
| t | 19 |
| u | 20 |
| v | 21 |
| w | 22 |
| x | 23 |
Example: nywl075p.26o
| Part | Meaning |
|---|---|
| nywl | station ID |
| 075 | day of year |
| p | 15:00–16:00 UTC |
| 26 | year 2026 |
| o | observation file |
S3. How to Choose the Correct CORS Data
The base station data must overlap with your survey time.
Example:
Survey:
- Local: 11:05–11:20
- UTC: 15:05–15:20
Required:
- 15:00–16:00 UTC →
p
Recommended practice: download two adjacent hours to avoid edge issues.
S4. More details about NCN data and products
The GNSS data collected at NCN stations are made available to the public by NGS in Receiver INdependent EXchange (RINEX) format. Most data are available within 1 hour (60 minutes) from when they were recorded at the remote site, and a few sites have a delay of 24 hours (1440 minutes).
Hourly files are only kept for 2 days.
- Daily files are kept permanently, available in 2 formats:
- GNU gzip-compressed of data in the Hatanaka-compression RINEX format (*.yyd.gz)
- GNU gzip-compressed of data in RINEX format (*.yyo.gz)
However,
- After 30 days, daily files are decimated to 30s sampling rate.
- After 6 months, only gzip-compressed files of daily data in the Hatanaka-compression RINEX format (*.yyd.gz) are provided.
For RINEX v2 data, NGS utilizes UNAVCO’s TEQC software on incoming data for quality checking purposes. Daily data quality information generated by TEQC -qc are stored with daily data files.
Navigation data files are available only for sites that NGS submits to the IGS network.
- Meteorological data files are available only for sites with independent meteorological sensors.
Access Methods:
- Daily RINEX observation data can be found at:
- NCN on AWS: https://noaa-cors-pds.s3.amazonaws.com/rinex/YYYY/DDD/ssss/File-Name For more information about this service, visit NOAA Open Data Dissemination (NODD) program.
- NGS server: https://geodesy.noaa.gov/corsdata/rinex/YYYY/DDD/ssss/File-Name
- NCEI’s CLASS: https://www.avl.class.noaa.gov/saa/products/search?datatype_family=CORS The National Centers for Environmental Information (NCEI) via NOAA’s Comprehensive Large Array-data Stewardship System (CLASS) provides original at-sampling rate RINEX data from 2004 to present (30-day delay). While large data orders may take a few days to fulfill, small data requests are nominally fulfilled within the day.
- Partial-day/Joining-day/Decimating RINEX data can be requested from NGS’s User Friendly CORS (UFCORS): https://geodesy.noaa.gov/UFCORS/
| File Name | Description | Frequency |
|---|---|---|
ssssDDD0.YYd.gz | Daily Hatanaka-compressed RINEX v2 | Daily |
ssssDDD0.YYo.gz | Daily RINEX v2 | Daily |
ssssDDDh.YYd.gz | Hourly Hatanaka-compressed RINEX v2 | Hourly |
ssssDDDh.YYo.gz | Hourly RINEX v2 | Hourly |
ssssDDD0.YYS | TEQC summary file | Daily |
In which
| Code | Description |
|---|---|
YYYY | 4-digit year |
YY | Last 2 digits of year |
DDD | Day of year (001–366) |
ssss | 4-character station ID (lowercase) |
h | Hour code (a=00, b=01, …, x=23) |
S5. Common Reasons Why PPK Fails
Base station too far away
Atmospheric errors increase significantly with distance.- Incorrect survey time
- Using local time instead of UTC
- Downloading the wrong hourly file
- No overlap between rover and base data
- Incorrect file types
- Rover:
.yyO - Base:
.yyO - Navigation:
.yyP
- Rover:
- Invalid or corrupted CORS data This may happen if:
- The download failed (e.g., 404 error)
- The file is incomplete or empty
- The format does not match the rover RINEX version
- Insufficient observation duration Short averaging time leads to poor satellite geometry and insufficient data for correction.
S6. Final Advice
When performing PPK surveys:
- Choose the closest CORS station
- Always convert to UTC time
- Download correct hourly files
- Ensure averaging ≥ base sampling interval
- Verify correct RINEX file types
Following these practices will ensure reliable centimeter-level positioning.