Skip to content

User Guide

Comprehensive guide to all PILS features and capabilities.

Overview

PILS provides a complete workflow for the POLOCALC data processing:

flowchart TB
    subgraph Loading
        A[PathLoader] --> C[Flight Container]
        B[StoutLoader] --> C
    end

    subgraph Data
        C --> D[Drone Data]
        C --> E[Sensor Data]
    end

    subgraph Processing
        D --> F[Synchronizer]
        E --> F
        F --> G[Synchronized Data]
    end

    subgraph Analysis
        subgraph PPK Analysis
            A --> H[PPK Analysis]
            B --> H[PPK Analysis]
        end
        G --> J[Custom Analysis]
    end

    subgraph Export
        H --> K[HDF5]
        H --> I[Markdown Report]
        J --> L[CSV/Parquet]
    end

Chapters

  • Directory Structure


    Explain the directory and file structure for PILS

  • Time Synchronization


    Mathematical description of the synchronization process between the different dataset

  • DJI Data


    Description for handling the data from the DJI Matrice 600

Quick Reference

Loading

from pils.loader.path import PathLoader
from pils.flight import Flight

loader = PathLoader(base_path="/campaigns")
flight_info = loader.load_single_flight("flight_20251208_1506")
flight = Flight(flight_info)

Accessing Data

# Drone data
flight.add_drone_data()
drone_df = flight.drone_data['data']

# Sensors
flight.add_sensor_data(['gps', 'imu'])
gps_df = flight['gps'].data
accel_df = flight['imu'].accelerometer

Analysis

from pils.synchronizer import Synchronizer

sync = Synchronizer()
sync.add_gps_reference(gps_df)
sync.add_drone_gps(drone_df)
result = sync.synchronize()

Export

# Complete flight to HDF5
flight.to_hdf5("flight.h5")

# Individual DataFrame
gps_df.write_parquet("gps.parquet")