Plan the flight before it leaves the ground.

Draw a survey polygon on the map and FlyPath turns it into an optimized flight grid — the right flight direction, a boustrophedon waypoint pattern, and live readouts for ground-sample-distance, photo count, flight distance, and estimated batteries. Export a DJI WPML .kmz and walk it to the controller. Before you launch, the same map tells you the airspace you're entering — Class B/C/D, Special Use Airspace, active TFRs, and the UAS Facility Map grid max altitude for your site.

Boustrophedon gridOptimal flight directionGSD + photo count Multi-battery splitDJI WPML .kmzFAA airspaceUASFM grids
FlyPath mission planner

From a hand-drawn polygon to a flyable mission

A survey starts as a polygon sketched on the 3D scene. Set altitude, speed, gimbal pitch, front/side overlap, and flight direction — or let FlyPath pick the direction that minimizes turns. It lays down a boustrophedon (lawn-mower) grid of waypoints and recomputes the mission stats as you tune the parameters.

  • Auto-optimal flight direction — the planner picks the heading that minimizes grid legs and turn time across the polygon.
  • Live mission stats — survey area, total flight distance, photo count, estimated batteries, and a ground-sample-distance (GSD) readout update as you change altitude and overlap.
  • Camera & sensor table — built-in drone specs drive the GSD math; pick the airframe and the numbers follow.
  • Multi-battery mission split — long surveys split at battery boundaries with seam waypoints, so each segment is a complete, flyable leg.
  • DJI WPML .kmz export — clean-room WPML writer produces a payload-readable mission file for DJI aircraft.
POST /api/flypath/plan
// draw polygon → tune params → flyable mission
{
  "surveyPolygon": { "rings": [[[-118.25,34.05],…]] },
  "altitudeMeters": 90,
  "frontOverlap": 0.8,
  "sideOverlap":  0.7,
  "gimbalPitch":   -90
}
→ optimized flight grid + mission stats

● Mini 3 Pro · 12 waypoints · 1708 m
  90 photos · GSD 2.87 cm/px · 1 battery
Know the airspace before you fly

FAA airspace awareness, on the same map

The survey polygon draws against a live FAA airspace layer — controlled airspace, special-use areas, active TFRs, and the UAS Facility Map grid that tells you the max altitude authorized at that cell. When a planned mission overlaps controlled airspace or exceeds the grid max, FlyPath surfaces a warning banner so it's seen before launch, not after.

🛫

Controlled airspace

Class B, C, D, and E5 surface areas from the FAA UAS spatial data — the same shapefiles that define where authorization matters.

🚧

Special Use Airspace

MOAs, restricted, and prohibited areas rendered with the survey so a mission plan never quietly crosses a SUA boundary.

⚠️

Active TFRs

Temporary Flight Restrictions refreshed on a short TTL — the layer that changes day to day, not every chart cycle.

🔢

UASFM grid altitudes

The UAS Facility Map grid max-altitude for the cell under your survey — the number that tells you whether your planned altitude fits.

🗺️

Sectional chart toggle

Overlay the familiar sectional chart for context alongside the digital airspace polygons.

🛰️

Local FAA data mirror

FAA GeoJSON mirrored to a local GPKG with per-dataset TTL (grid/Class/SUA refresh on the 56-day cycle; TFRs every 12 hours) — works air-gapped once cached.

Airspace awareness reflects the implemented FAA-data layer (Class B/C/D/E5, SUA, TFRs, UASFM grids, sectionals) with point-in-polygon lookup at /api/airspace/at. LAANC authorization submission is roadmap (Phase 2, gated on a USS partner agreement) and is not yet functional; FAA flight-plan filing via 1800WxBrief is an explicit non-goal (no open API, not required for Part 107 / recreational ops).

REST surface

Plan, export, and check airspace — over HTTP

Every capability is a localhost route. Build mission-planning UIs, automate survey generation, or pipe the .kmz into another tool — all against the in-process server.

CapabilityEndpointNotes
Planner capabilitiesGET /api/flypath/capabilitiesSidecar availability + supported export formats
Drone specs catalogGET /api/flypath/dronesCamera/sensor table that drives the GSD math
Plan missionPOST /api/flypath/planPolygon + params → waypoints, stats, battery split
Export WPMLPOST /api/flypath/exportMission → DJI WPML .kmz
Airspace at pointGET /api/airspace/at?lat=&lon=Class/SUA lookup for a coordinate
UASFM grid maxGET /api/airspace/grid?lat=&lon=Max authorized altitude for the cell
Airspace statusGET /api/airspace/statusData freshness + last-refresh per dataset
Airspace featuresGET /api/airspace/featuresPolygons for map rendering (Class, SUA, TFR)

Routes reflect the implemented FlyPathRoutes.cs and AirspaceRoutes.cs. Verified end-to-end: Mini 3 Pro survey, 12 waypoints, 1708 m, 90 photos, GSD 2.87 cm/px, WPML .kmz export.

The end-to-end UAS loop

Plan it, fly it, process it, exploit it — on one platform

Drone work is a pipeline, and 3D Map Explorer covers every stage in the same desktop. Plan the flight here, fly it with live telemetry on the same map, then carry the products through the rest of the workflow without switching tools.

From sketch on the map to .kmz in the controller.

Draw the survey, tune the grid, read the GSD, check the airspace, and export the flight — then carry the imagery all the way through processing and analysis on the same desktop.