Home / Tools / Drone mission planner

Drone mission planner (split + GCPs)

Drop your corridor or site KML/KMZ. Split it into equal DJI Pilot 2 flights if you need to. Then plan yellow GCP pins, purple check shot pins and green base pins across the whole job. Get it all in one zip.

Screen check

The GCP planner needs a bigger screen.

Open this page on a tablet or computer. Placing and dragging pins on a phone is too fiddly to do well, so the planner only runs on screens at least 600 pixels across on the short side (small tablets like the iPad mini and up).

Choose a KML or KMZ fileor drag it here. It never leaves your device.

Why edge GCPs go outside your boundary. Your map is only as good as the area your GCPs surround. Propeller calls it the "boundary of accuracy": anything outside it should be treated as inaccurate. Falkner and Morgan say points outside the control pattern get worse the farther out they are, so control should sit outside the mapping area. Nevada DOT's test (on the Pix4D blog) saw errors grow with distance outside the GCPs. Putting edge GCPs 25 ft out keeps your whole boundary inside that ring. The 25 ft figure is FixFinder's default, not a published number.

Fly your original boundary. Your camera or LiDAR swath reaches past the edge lines, so points 25 ft outside are still captured. Check the outer pins fall inside your swath, ideally well in from the edge of the photos. Why: DroneDeploy wants GCPs at least 50 ft (up to 100 ft) in from the edge of the map, OpenDroneMap says 10 to 30 m (about 33 to 100 ft) in from the perimeter so each target shows up in at least 5 photos, and FHWA warns that points too close to the site edges can warp, so keep them off the far edges of the flight where overlap is thin. Check shots are different: ASPRS Edition 2 wants checkpoints evenly spread through the project area, and the USGS Lidar Base Specification says all checkpoints go inside the project area, so we keep them inside.
Where the spacing rules come from

There is no single law for GCP spacing. These defaults come from published guidance by the companies that make the software and gear. Change any number to match your contract or your own testing.

Photogrammetry area (Typical)An even grid of GCPs. The ones on the edge go 25 ft outside your boundary; the rest stay on the grid inside. A rectangle or square gets a GCP at each corner, plus one in the middle when a side is longer than the max gap (750 ft default). Bigger ones get more, so no GCP is more than the max gap from its nearest neighbor. Spacing at most 660 ft if the drone has no RTK/PPK (Aerotas: 600 to 700 ft at 200 ft flight height; North Dakota DOT: no more than 600 ft), or 1,000 ft with RTK/PPK (Datumate; FHWA says 500 to 1,000 ft; Utah DOT practice: no more than 1,000 ft). A 40-acre square comes out to 9 GCPs (3 × 3).
Photogrammetry corridorGCPs on alternating sides every 1,000 ft with an RTK/PPK drone (North Dakota DOT, Datumate), or every 500 ft without (Propeller; Aerotas 500 to 1,000 ft), plus a pair at each end, all 25 ft outside the edge lines. Neighbor GCPs stay within 750 ft of each other (FixFinder default; you can change it), so long sections and bends get extra GCPs. Check shots go near the middle of a triangle of GCPs. A 2.1 km road study found this zigzag-plus-end-pairs layout gave the best accuracy for the work (Ferrer-González et al. 2020).
LiDAR areaOne GCP near each corner plus one in the center (GeoCue; Wyoming DOT adds the center point over 40 acres). Past 50 acres we add 1 more per 25 acres, close to Phoenix LiDAR's "about 10 for every 250 acres" and GeoCue's 500 m (1,640 ft) circle rule.
LiDAR corridorAlternating sides every 1,500 ft (Aerotas) plus a pair at each end. Also put points at the start and end of every flight block and in each overlap (GeoCue: every 500 m, about 1,640 ft). Set your flight blocks above and we add them.
Check shotsAreas: 1 per 10 acres (North Dakota DOT), at least 5 (our default), with at least one in each quarter of the site. Corridors: both ends plus every ½ mile, on alternating sides (North Dakota DOT). Always inside your boundary, never on a GCP, and never used to build the map. For LiDAR, put them on flat, hard ground like pavement (DJI L2 guide).
ASPRS 30A full ASPRS Edition 2 accuracy test wants at least 30 check shots. Pick "Set a number" and enter 30 if your contract asks for it. Fewer than 30 is OK if your report states the count.
Other optionsLight: corners plus center, no more than 1,312 ft (400 m) apart (DJI Enterprise; Pix4D: 5 to 10 is usually enough). Dense: spacing = 2 × flight height (Propeller), for hills or tight specs. Answer "No" to the RTK/PPK question for the tighter non-RTK spacing.
Base distanceSingle-base RTK within about 12 mi (20 km).

How tight is good enough? In TopoMatters' 25-acre test, a DJI P1 camera and an L2 lidar both landed under 0.2 ft error with ground control. Wyoming DOT is stricter than most: it wants 10 check shots per 10 acres. Follow your contract when it says more.

The 25 ft outside distance is FixFinder's default, not a published number. Change it to suit the site. Check shots stay at least about 25 ft inside your boundary.

These are planning spots, not final spots

We place pins by math, not by looking at the ground. Before the job, open the KMZ in Google Earth or your controller and move any pin that lands on:

  • trees, buildings, power lines or anything that blocks the sky or the drone's view,
  • water, steep slopes, traffic lanes, or private land you can't get to,
  • spots right next to tall objects or sudden drops (ASPRS suggests keeping vertical check points about 10 ft or more from them).

Keep the pattern even when you move them. Measure every GCP and check shot with your rover, and use the measured coordinates, not these.

How splitting works

Pick Yes at step 1 to split. It is the same splitter FixFinder used before, with the same files.

  1. We find the two ends of the corridor and draw a smooth centerline down the middle.
  2. Cuts go straight across, at right angles to that centerline, from one edge of the corridor to the other, so cuts never cross.
  3. We slide each cut until every section has the same area (or the same length along the centerline, if you pick that).
  4. Neighbors share the exact same cut points, so there are no gaps and no overlaps. We check that the sections add up to the original area.
  5. GCPs are planned once across the whole boundary, not per section. Each seam gets a pair of GCPs where the cut meets the outer edge, pushed out past the outer boundary only. Nothing is pushed out at the seams inside the job.
  6. A pin counts for every section within your shared pin distance (100 ft by default, FixFinder's own number). That way, seam pins show up in both flights.

Areas are computed on an equal-area map projection of the WGS 84 globe, then checked with Turf.js geodesic area.

DJI Pilot 2 and FlightHub 2 tips

DJI Pilot 2: copy one section file (KML or KMZ) to the controller's SD card or storage, then go to Flight Route › Import Route (KMZ/KML) and choose Area Route (mapping). Pilot 2 draws the flight lines for you.

DJI FlightHub 2: in a project, open Map Annotations › Import and pick a KML/KMZ. Right-click the area and choose "Convert to mapping area". FlightHub 2's flight route import only takes DJI WPML route files, which these are not.

Each section file holds one Placemark with one Polygon: WGS 84 longitude/latitude, a 0 height on every corner, clamped to the ground, no holes, no extra styling. DJI does not publish a full KML spec for Area Route import, so we use this plain, widely used layout. The pin KMZ files are for Google Earth and your data collector, not for flight routes.

Sources: DJI FlightHub 2 FAQ (imports KML points, lines and areas), DJI FlightHub 2 User Guide v2.4 (Annotation Management: import KML; flight-route KMZ files need wpmz/template.kml and wpmz/waylines.wpml), Propeller: Importing missions with DJI Pilot 2 (Flight Route › Import Route (KMZ/KML)).

What you get

Split (Yes at step 1): one zip with <Project>/KML and <Project>/KMZ (one boundary file per section, <Project>_01, _02…), an optional overview KML, the combined pin files below (each pin says which section or sections it belongs to), and an optional Section pins folder with one pin KMZ per section.

  • <Project>.kmz: pins with built-in icons (works offline). Yellow = GCPs (G01, G02…), purple = check shots (CS01, CS02…), green = bases (B01…, only if you picked your own base), plus your area outline.
  • <Project>.kml: the same pins. Icons load from Google's standard pushpins.
  • <Project>_points.csv: name, type, latitude, longitude (WGS 84 decimal degrees). Most data collectors (Emlid Flow, Trimble Access, Carlson SurvPC) can import a CSV like this for stakeout.

Files are checked against the OGC KML 2.2 schema. Everything is made in your browser. Your file is never uploaded.

Limits
  • Corridor mode works best for long strips (roads, pipelines, power lines). Use Area mode for fields and sites.
  • Heights are not planned. Put some points on high and low ground yourself (Propeller and DJI both suggest this).
  • Holes inside a polygon are ignored.
  • Base spots sit on the centerline (corridor) or in the middle of each part of the area. Move them to a safe, open, secure place.
  • Splitting works best for long, mostly straight corridors. Wide blobs or Y-shaped corridors with branches won't split well; split branches into separate polygons first. Tight bends can make wedge-shaped sections.
  • Boundaries drawn as many separate lines (Trimble Business Center and many CAD exports) are joined when the line ends meet within about 0.03 ft. We close gaps up to 0.5 ft and tell you.
Map, privacy and software

Your KML is read in your browser and never uploaded. The zip is made on your device. The map loads picture tiles from USGS or OpenStreetMap for the spot you are looking at. Those servers see which area you view, but never your file.

The map uses Leaflet (BSD-2). Satellite view: USGS The National Map imagery (USDA NAIP, public domain). Street view: © OpenStreetMap contributors. No map account or key is used.

Hillshade, Contours and 3D are optional and off until you tap them. Hillshade and contour lines come from USGS 3DEP bare-earth elevation (public domain). Detail is up to about 3 ft (1 m) per pixel where USGS has lidar, and about 33 ft (10 m) where it doesn't. When Hillshade is on, the Shade button sets how dark it is (35, 60 or 85%). Contours are drawn in your browser in feet (NAVD 88): every 2 ft when zoomed all the way in, then 5, 10, 20 or 40 ft as you zoom out, with every fifth line bold and labeled. Steep or hilly views may use a wider step so the lines stay readable. The 3D view uses MapLibre GL JS (BSD-3) and the free Terrain Tiles on AWS Open Data (Mapzen; US heights from USGS 3DEP at about 33 ft (10 m) per pixel, 10 ft (3 m) in some areas, so small bumps and ditches won't show). In 3D, the Height button stretches hills 1, 1.5, 2 or 3 times so they are easier to see. You can edit pins in 3D too: tap a pin to select it and drag it, or pick + GCP, + Check shot or + Base and tap the ground. Pins land where you tap on the 3D ground, so they match the 2D map. With a mouse in 3D, drag to turn and tilt the view, and right-drag (or hold Ctrl or Cmd and drag) to move around. On a touch screen, one finger moves the map and two fingers turn and tilt it. Tap 2D map to go back to the flat map. Contours only show in 2D. 3D needs a browser with WebGL. Planning spots and files never depend on these layers.

Zips are made with JSZip (MIT). Files are read with togeojson (BSD-2), and split sections are checked with Turf.js (MIT). They load only when you pick a file. Licenses.

This tool is open for a sponsor, $49/mo. See how

Price changes and new stations, every two weeks.

New state networks, price changes and plain-language RTK tips. One short email every two weeks, no spam.

Free. We email you a link to confirm. Unsubscribe anytime. Past issues