The Grid Generator builds DJI Waypoint missions in WPML format (.kmz) for SAR-grade area coverage on supported DJI drones (currently M30T, M3T, and M4T). Three patterns: GRID and SPIRAL draw a polygon → produce systematic strip coverage; HASTY drops pins → produces a visit-each route with hover at each. Pick the pattern that fits the phase of search you're at. The tool calculates strip spacing from camera FOV + altitude + overlap (for GRID/SPIRAL) and routes pins nearest-neighbour with 2-opt refinement (for HASTY) — so coverage is uniform rather than guesswork.
Typical use cases: SAR (search-and-rescue), suspect containment, asset overflight, perimeter inspection.
SAR…m20260527.kmz and the same content as .zip. On Android FlightHub 2 use the .zip — the picker greys out .kmz.At the top of the settings panel, pick the aircraft you'll fly the mission on. The choice persists per-browser in localStorage so you only set it once per device.
droneEnumValue) — DJI Pilot 2 reads this and refuses to fly a mission built for a different airframe. Always confirm the Drone selector matches the aircraft you're flying before generating the grid.Changing the drone after a grid is generated turns the GENERATE button yellow ("stale") because the new drone's FOV changes the strip spacing. Tap GENERATE again to rebuild.
Camera choice drives the calculated swathe (ground width per pass), which drives strip spacing, which drives total flight time. Pick deliberately.
Best for general daytime area search. Wider swathe → fewer strips → faster coverage. The default.
Detects body heat through light vegetation and at night. Narrower FOV means more strips for the same area — accept the time hit for the detection capability. Best for night SAR, dense bush, recently-deceased searches.
Grid is calculated on the IR FOV so thermal gets full coverage; the wide camera then gets generous over-coverage (this is fine). Set Pilot 2 to split-screen view before takeoff so both feeds are visible simultaneously. Best for SAR where the target may be mobile — one pass gives you both signal types.
SAR doctrine typically progresses hasty → POI → systematic. This tool supports all three phases through three patterns. Pick the one that matches the phase you're at.
Parallel strips, alternating direction. The standard SAR pattern — systematic, predictable coverage. Best for large open areas where you don't know where the target is. Draw a polygon, generate, fly.
Concentric rings around the centre. Two directions:
Drop pins on the obvious places — last known position, trail junctions, parking, water features, the vehicle — and the drone visits each in nearest-neighbour order, hovering at each with the gimbal down. The fast first-pass before you commit to a full systematic sweep. Also useful as Drone A in a two-drone parallel operation while a second drone runs a GRID over the same area at a different altitude.
Two ways to drop pins:
-29.118, 26.214) or DMS (33°50'15"S 18°23'45"E) and press + ADD. Useful when LKP is radioed in.Tap any pin to set per-POI overrides (hover time and altitude) or remove it. ⚡ GENERATE routes through the pins (nearest-neighbour, then 2-opt refinement when you have more than ~10 POIs). Each waypoint gets a 15-second hover by default with gimbal nadir.
By default DJI waypoint missions use altitudes relative to the takeoff point. If you take off in a valley and the next pin is up a mountain, the drone arrives at the same height above the valley — which can be 200 m underground at the pin. This is the classic CFIT (controlled flight into terrain) failure mode for hand-flown SAR.
In the HASTY settings panel, tick Terrain-aware altitudes. When on:
EGM96 height mode — every waypoint is an absolute MSL altitude rather than metres-above-takeoff. Pilot 2 / FlightHub 2 both honour this.Higher altitude = wider swathe = fewer strips = faster, but targets appear smaller in the frame. 40–80 m is typical for SAR. Default cap 120 m — see regulations below.
Percentage overlap between adjacent strips. Higher = more thorough but longer flight. 60% is the SAR default — gives confident coverage without absurd flight times. Reduce to 40–50% for fast first-sweep, increase to 75–85% for confirmation passes or thermal-only work.
The compass heading the strips run along. Set the bearing to match the longest axis of your search area — this gives fewer, longer strips and fewer turns, saving battery. Pick a preset (N/S, NE, E/W, SE) or enter a custom value 0–179°.
Default global speed (m/s). Slow (3 m/s) is right for thermal — the sensor needs dwell time per pixel. Medium (5 m/s) for daytime wide. Fast (8–15 m/s) for first-pass sweeps or when battery is short. Per-strip overrides available — see Per-strip speed.
The drone climbs straight up to this height before flying horizontally to the first waypoint. Must clear all obstacles at the launch point — power lines, trees, structures. Defaults to 60 m; raise this if launching from a tight clearing under tree canopy or near power lines. Can exceed your operation altitude — useful purely for obstacle clearance.
How fast the drone yaws at each waypoint when changing direction. Slow = smooth (~30°/s); Normal ≈ 60°/s (default); Fast ≈ 100°/s. Slow is gentler on gimbal stabilisation and reduces motion blur on imagery; Fast saves seconds per turn × dozens of turns.
RTH (default) — drone returns to takeoff point and lands automatically. HOVER — drone holds position at the last waypoint (you fly it home manually). LAND — auto-land in place at the last waypoint (only safe if you know what's underneath).
RTH (default) — drone immediately abandons the mission and returns to home. HOVER — drone holds at the lost-signal point waiting for reconnection (consumes battery; risky if signal doesn't return).
After GENERATE, tap 🏎️ SPEED to enter Speed Mode. A yellow banner appears, and you can tap any strip on the map to set its individual speed (1–15 m/s) without affecting the others. Yellow-coloured strips have custom speeds. Use this when:
The picker also has RESET this strip, APPLY all strips (use the current strip's speed for everything), and RESET all strips (back to the global speed). Tap SPEED again to exit Speed Mode.
After drawing, tap ⋯ MORE → ✏️ EDIT. Each vertex becomes draggable — adjust as needed. When you're done, tap ⋯ MORE → ✏️ EDIT again to exit, then ⚡ GENERATE to rebuild the grid. The GENERATE button turns yellow ("stale") when settings change after a grid is built — that's the cue to regenerate before exporting.
The RC Plus has Firefox pre-installed. With internet connectivity:
Internal Storage/Download/).This is the cleanest workflow for SAR / field use — no laptop, no USB transfer, no file shuffling. Recommended whenever the RC has signal.
.kmz or .zip — see note below) anywhere on the controller's storage. Internal Storage/Download/ works fine.SARWIDE60m20260527). Tap to open, review the waypoints visually, then Start..kmz files. The .zip is the same archive with a different extension specifically so the picker accepts it. Both files contain identical mission data — use whichever one your version of Pilot 2 / FH2 picker will open.WIDE camera · 60–80 m altitude · 60% overlap · GRID pattern · Normal speed (5 m/s) · Nadir gimbal · RTH on completion. Good first-pass coverage for ~10–30 ha in a single battery.
THERMAL camera · 40–60 m altitude · 60–70% overlap · GRID pattern · Slow speed (3 m/s) for dwell time · Nadir gimbal · RTH. Bring spare batteries — narrower swathe + slower speed eats endurance.
THERMAL or SPLIT · 50–70 m · 70%+ overlap · SPIRAL Outside-In · Slow–Medium speed · Manual gimbal if you may need to peek mid-mission. The perimeter sweep happens first, so any movement outward gets seen before the centre.
WIDE · 100–120 m altitude · 40–50% overlap · GRID · Fast speed (8–12 m/s) · Nadir. Accept reduced detection probability per pixel in exchange for covering more ground per battery; do confirmation passes on hits.
SPLIT SCREEN · 60–80 m · 60% overlap · GRID · Medium speed · Nadir. Set Pilot 2 to split-screen view before takeoff so the second pilot can watch both feeds simultaneously.
The altitude slider defaults to a 120 m AGL ceiling, which is the standard maximum for VLOS recreational/commercial operations in most jurisdictions without additional clearance. Above 120 m is restricted airspace in most countries and typically requires an Air Traffic Control / aviation-authority clearance and an appropriate operator certificate.
If you have the required certification and clearance for a specific mission, tick "I have ATC clearance / authorisation to exceed 120 m" in Settings → Flight Parameters. The slider unlocks to 365 m (1,200 ft), the cap aligned to the SA CAA RPL ROC standard. The label turns orange as a reminder.
The browser has blocked geolocation for this site (or location services are off at the OS level). Click the padlock 🔒 in the address bar → Site settings → Location → Allow, then reload. Manual coordinate entry still works as a fallback from the LOCATE button.
The server is unreachable or the Mapbox token couldn't be fetched. The tool falls back to OSM so you can still draw and generate; satellite returns on the next page load. If it persists, check status bar — orange text means a server error was logged.
The KMZ generation runs server-side. Check your internet connection and retry. There is no client-side fallback (by design) — if the server is genuinely down, retry in a minute.
.kmzUse the .zip instead — same content, different extension that the FH2 Android picker accepts.
Chrome sometimes blocks rapid multi-file downloads. Click Allow downloads in the address-bar notification, or in chrome://settings/content/automaticDownloads add flightassist.co.za to the allow list.
If you see this in DJI Pilot 2, the import has too many waypoints for that version of Pilot 2's importer (modern WPML 1.0.5 supports several hundred — older Pilot 2 builds cap lower). FlightHub 2 typically accepts much larger missions (we've seen 360+ WP imports without complaint). Workarounds: (a) reduce the search area or raise altitude for wider strips → fewer waypoints, (b) split the mission into two and fly them sequentially, or (c) upload via SEND FH2 and sync to Pilot 2 from there.
You changed a setting after generating the grid. Tap GENERATE again to rebuild before exporting.
The ⬆ SEND FH2 button (under ⋯ MORE, alongside PREVIEW) uploads the generated mission straight into your FlightHub 2 organisation's Route Library, skipping the file download and USB transfer entirely. After upload, open DJI Pilot 2 → Mission Library → pull down to sync, and the mission appears.
The first time you tap SEND FH2, a modal asks for two things, both stored only in this browser's localStorage:
https://es-flight-api-us.djigate.com); EU is in the dropdown. For other regions: open FH2 in a browser → DevTools → Network → look for a request to *.djigate.com and use that host.SAR{cam}{alt}m{YYYYMMDD}).GENERATING KMZ → AUTHENTICATING → UPLOADING → READY IN FH2.Your Organization Key and API host are stored only in this browser's localStorage on this device. They are sent to our server only at the moment of upload, used to make the DJI API calls, and are never logged, persisted, or written to any database. The KMZ itself is also not stored on our infrastructure. Anyone with access to this browser profile can read the stored key — on shared devices, tap disconnect in the modal's connected view to clear it. See the privacy notice for full detail.
| Term | Meaning |
|---|---|
| WPML | DJI's Waypoint Mission Language — the XML format inside a .kmz that Pilot 2 reads. |
| Swathe | The ground width covered by a single camera pass at the configured altitude and FOV. |
| Overlap | Percentage of swathe shared between adjacent parallel strips. |
| Strip | One straight pass of the lawnmower pattern; two waypoints per strip (start + end). |
| Nadir | Gimbal angle of -90° — pointing straight down at the ground. |
| AGL | Above Ground Level — altitude relative to ground beneath the drone (not sea level). |
| RTH | Return To Home — drone autonomously flies back to its recorded takeoff point and lands. |
| ROC | RPAS Operator Certificate (South Africa, SA CAA Part 101) — required for commercial drone operations. |
| VLOS | Visual Line Of Sight — pilot can see the drone unaided. |
| FH2 | DJI FlightHub 2 — the mission-management web app and supporting Pilot 2 component. |