FlyPath is an open-source QGIS plugin for planning autonomous drone mapping missions and exporting them as native DJI WPML KMZ files, with no conversion tools or third-party apps required.
Define your survey area directly on the map, configure flight parameters, preview the path, and export a ready-to-fly mission file loadable in the DJI Fly app.
Developed and maintained by Dronnix, a drone mapping and geospatial AI company.
- Draw the survey area directly on the QGIS map canvas using a native polygon drawing tool
- Import a survey area from any polygon layer or active QGIS selection
- Configurable flight altitude, speed, gimbal angle, photo interval, side overlap, and flight direction
- Photo Interval parameter for planning along-track overlap, used as a reference to set the drone's auto interval capture mode manually before flying
- Calculated front overlap display, showing effective along-track overlap from speed x interval with low-overlap warnings
- Auto-optimised flight direction based on survey area geometry
- Live GSD and effective photo spacing, synced to drone model, altitude, speed, and interval
- Flight statistics: area, path distance, waypoint count, photo count, estimated batteries, and flight time
- Configurable safety actions: finish action and RC lost action
- Exports native DJI WPML KMZ, compatible with DJI Fly on DJI RC2
- Direct RC export: auto-detects the connected DJI RC (over USB, or as a removable drive), lists the missions DJI Fly tracks, and replaces the one you pick, transferred silently over USB with no prompts or pop-up windows
- Mission preview in the RC picker: every mission on the RC is drawn as a live flight-path thumbnail rendered from its own waypoints and labelled with its waypoint count, so you can see exactly which mission to replace before sending the new one; click a preview to open a zoomable viewer, and the list and preview refresh instantly after each replace
- Local folder export: pick a folder and FlyPath saves a dated
.kmzfile there, then offers to open the folder - Contextual info bar, hover over any parameter to see what it does
- Dark-themed dock panel, designed to complement the QGIS interface
| Requirement | Details |
|---|---|
| Operating System | Windows 10 / 11 |
| QGIS | 3.16 or later (4.x supported) |
| Python | 3.9+ (bundled with QGIS) |
| Drone | DJI Mini 3 Pro, Mini 4 Pro, or Mini 5 Pro |
| Controller | DJI RC2 (for direct USB export) |
Linux and macOS support is planned for a future release.
- In QGIS go to Plugins > Manage and Install Plugins
- Search for FlyPath and click Install Plugin
- Download the latest
FlyPath.zipfrom the Releases page - In QGIS go to Plugins > Manage and Install Plugins > Install from ZIP
- Select the downloaded ZIP and click Install Plugin
git clone https://github.com/dronnix-io/FlyPath.gitCopy the FlyPath folder into your QGIS plugins directory:
Windows: C:\Users\<you>\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\
Then enable it in QGIS via Plugins > Manage and Install Plugins > Installed > FlyPath.
After installation, open FlyPath via:
Plugins > FlyPath > FlyPath
Or click the FlyPath icon in the QGIS toolbar. The plugin opens as a dock panel on the right side of the QGIS window.
Three ways to define your survey polygon:
- Draw on Map: click the button to activate the drawing tool, left-click to place vertices, right-click to finish. Backspace removes the last vertex, Escape cancels.
- Layer / Feature: select any polygon layer and feature already loaded in QGIS.
- Use QGIS Selection: select a polygon feature on the map canvas using QGIS's native selection tools, then click Use QGIS Selection.
Only one polygon can be active at a time. Switching methods automatically removes the previous survey area.
| Parameter | Description |
|---|---|
| Drone Model | Sets camera specs used for GSD and spacing calculations |
| Altitude | Flight altitude above ground level (AGL) in metres |
| GSD | Calculated ground sampling distance, updates live with altitude |
| Side Overlap | Cross-track strip spacing overlap, controls distance between flight lines |
| Speed | Waypoint flight speed in m/s (max varies by drone model) |
| Direction | Angle of flight lines, or click Auto to optimise for the survey shape |
| Margin | Buffer added around the survey polygon boundary in metres |
| Parameter | Description |
|---|---|
| Gimbal Angle | Camera tilt: -90 degrees points straight down (nadir) for 2D mapping |
| Photo Interval | Time between photos in seconds (minimum 2 s at 12 MP JPEG) |
| Shot Spacing | Calculated: speed x interval in metres, updates live |
| Front Overlap | Calculated: effective along-track overlap percentage, turns red if too low |
Note: Front overlap is a derived value, not a manual input. Adjust speed or interval to control it.
Important - Photo triggering on DJI Mini 3 Pro, Mini 4 Pro, and Mini 5 Pro: DJI consumer drones do not support WPML-based camera auto-triggering. Before starting the mission, manually enable auto interval capture mode on the drone and set it to match the Photo Interval value shown in FlyPath. The Photo Interval parameter is a planning reference that lets you estimate front overlap and tune your speed and altitude accordingly.
| Parameter | Description |
|---|---|
| Finish Action | What the drone does after the last waypoint (Return to Home / Hover / Land) |
| RC Lost Action | What the drone does if RC signal is lost (Return to Home / Hover / Land / Continue) |
GSD, shot spacing, and front overlap update live as you adjust parameters.
Click Preview on Map to generate the flight grid and display it on the canvas:
- Deep pink polygon: survey area boundary
- Electric yellow lines: flight path connecting all waypoints
- Electric yellow circles: mid-waypoints
- Red filled circle: start waypoint
- Blue filled circle: end waypoint
Flight statistics (area, distance, photos, batteries, flight time) update below the parameters.
The action bar has a Destination selector with two modes: Save to computer and Send to DJI RC. The Export button changes its label to match what it will do.
Use this to save the mission as a .kmz file on your PC or an external drive.
- Set Destination to Save to computer.
- Click Browse… and choose a folder (the folder is remembered for next time).
- Click Export KMZ. A save dialog opens with a dated default filename.
- After saving, FlyPath offers to open the folder.
This replaces an existing mission directly on the DJI RC over USB, with no manual copying or renaming.
Important: FlyPath can only replace a mission that already exists on the RC. It cannot create a brand-new one that appears in the DJI Fly app. To add a mission, create it in DJI Fly first (even a 3-point dummy), then click Auto Detect RC.
Prerequisites:
- Create at least one waypoint mission in DJI Fly on the RC. This is the "slot" FlyPath fills.
- Connect the RC to your PC via USB and enable file transfer on it.
Steps:
- Set Destination to Send to DJI RC.
- Click Auto Detect RC. FlyPath finds the controller whether it is connected over USB (MTP) or shows up as a removable/lettered drive (any drive letter), and lists its missions by date and waypoint count (only missions DJI Fly actually tracks are listed). It identifies the RC by its internal folder structure, not by a drive letter or device name, so it works the same on any computer. The detected waypoint folder is shown in a read-only field so you can confirm the target.
- If it still is not found, click Locate folder manually. This opens a browser of This PC that can reach the RC and any drive (unlike the standard folder dialog, which cannot show MTP devices); navigate to the
waypointfolder and click Select. - If the folder is found but has no missions, FlyPath tells you to create one in DJI Fly first (see the Important note above).
- Pick the mission you want to replace. Each mission shows a preview of its flight path and its waypoint count, rendered from that mission's own waypoints, so you can confirm the right one at a glance; click the preview to open a zoomable viewer. Use the date to match what you see in DJI Fly.
- Click Replace "…" on RC. FlyPath writes the new mission into the selected UUID folder.
- Disconnect the RC, then close and reopen DJI Fly to see the updated mission.
The replaced mission as it appears in the DJI Fly app on the RC:
| Drone | Waypoint Support | droneEnumValue | Verification |
|---|---|---|---|
| DJI Mini 3 Pro | Yes | 97 | Community-verified |
| DJI Mini 4 Pro | Yes | 68 | Verified from native RC2 mission dump |
| DJI Mini 5 Pro | Yes | 68 | Community-verified |
Note: DJI Mini 3 (standard) does not support waypoint missions and is not supported by FlyPath.
FlyPath/
├── flypath.py # QGIS plugin entry point
├── flypath_dialog.py # Main UI panel and export logic
├── map_tools.py # Interactive polygon drawing tool
├── grid_planner.py # Flight grid and waypoint generation
├── wpml_writer.py # DJI WPML KMZ file writer
├── metadata.txt # QGIS plugin metadata
├── icon.png # Plugin icon
├── icon.svg # Plugin icon source
└── docs/
└── images/ # README screenshots
- Tested and verified on Windows 10 / 11 only, Linux and macOS support is planned for a future release
- Direct RC export requires a DJI RC2 connected via USB with at least one existing mission
- DJI Mini 3 Pro droneEnumValue (
97) is community-verified, not confirmed from a native mission file - 2D grid missions only, no terrain following, 3D facade, or orbit missions
- No automatic multi-battery mission splitting
Contributions are welcome. To get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes
- Open a pull request against
main
For bug reports and feature requests, please use the issue tracker.
This project is licensed under the GNU General Public License v3.0, see the LICENSE file for details.
Dronnix is a drone mapping and geospatial AI company specialising in data collection and analysis for solar panel inspection, agriculture, urban growth monitoring, construction progress tracking, and large-scale mapping missions.
FlyPath is part of Dronnix's open tooling layer, free and open-source to support the drone mapping community.
Contact: salar@dronnix.com



