Guides · 12 October 2026

How to plan photogrammetry flights with the DJI Mini 5 Pro

The DJI Fly app has no mapping mode and no way to import missions. Even so, the Mini 5 Pro can fly a photogrammetry grid planned on your computer. Here is how we do it and what to watch out for.

The problem

The Mini 5 Pro has a 1" sensor and 50 MP photos, so a compact drone can deliver centimetre-level resolution. But DJI Fly, the consumer app it runs on, only lets you draw waypoint routes by hand on the map:

  • it does not generate parallel flight lines with overlap (the photogrammetry “grid”),
  • it has no button to import a KMZ planned outside the app,
  • it does not follow the terrain: each waypoint’s height is relative to the take-off point.

The workaround is to plan the mission elsewhere, write it in DJI’s waypoint format (WPML) and put it on the controller in place of a route created in the app. It works, but it is not an official method.

Before you start. DJI neither offers nor supports this procedure, and a DJI Fly update could break it. Back up the routes already saved on your controller and try a short mission in an open area first. An automated flight does not change your obligations: keep the drone in sight, check airspace restrictions for the area (in Spain, on ENAIRE Drones) and fly within your operational category. If the mission goes wrong, the pilot is responsible.

1. Define the area

Draw the plot outline in QGIS (or any other GIS) and export it as GeoJSON in geographic coordinates (EPSG:4326). To compute the grid, reproject to UTM (in mainland Spain usually zone 30: EPSG:25830 or 32630) and work in metres. We shrink the outline slightly so as not to fly over the neighbouring plot; if you need sharp edges in the orthophoto, do the opposite and extend it by a few metres.

2. Work out height, overlap and speed

Using the real camera data (measured from the EXIF of our photos and from the processing calibration), the Mini 5 Pro’s geometry at 50 MP is:

  • Image: 8192 × 6144 px. Physical focal length: 8.67 mm (23 mm equivalent).
  • GSD (cm/px) ≈ 0.0185 × height (m).
  • Ground footprint ≈ 1.51·H × 1.14·H, with the long side perpendicular to the flight direction.
  • Minimum interval between photos at 50 MP: about 2 s. So speed should not exceed half the distance between photos: v ≤ spacing / 2.

With 85 % front overlap and 80 % side overlap, which is what we use in vineyards:

HeightGSDFootprintLine spacingPhoto spacingMax. speed
30 m0.55 cm45 × 34 m9.1 m5.1 m2.5 m/s
60 m1.11 cm91 × 68 m18.2 m10.2 m5.1 m/s
90 m1.66 cm136 × 102 m27.3 m15.3 m7.6 m/s

Check the photo size in DJI Fly before take-off. If the app is set to 12 MP (4096 × 3072), the real GSD will be double what you planned. It happened to us: the mission flew perfectly, but at half the resolution.

If you can, size the mission to fit on one battery. If not, split it into several missions and fly them all from the same take-off point (see the next step).

3. Compensate for relief: the drone does not follow the terrain

In DJI Fly each waypoint’s height is relative to the take-off point, not to the ground beneath it. On a sloping plot, a “60 m” mission flies higher over the low ground and lower over the high ground, so GSD and overlap change, and so does the clearance over obstacles.

The fix is to calculate each waypoint’s height from a digital terrain model:

waypoint height = desired AGL + (ground elevation at the point − take-off elevation)

  • In Spain we use the IGN 5 m digital terrain model. You can download it from the CNIG download centre or request it by WCS from servicios.idee.es/wcs-inspire/mdt (coverage Elevacion4258_5, format ArcGrid). It matches the models from our own flights very closely. Elsewhere, use your national mapping agency’s terrain model.
  • If possible, take off from the lowest point of the area. That way no waypoint ends up below the nominal height.
  • If you take off from high ground, some heights may come out negative or close to zero. DJI Fly will not accept less than 2 m: either raise the whole profile or accept a somewhat higher AGL over the low ground.
  • Use the same take-off point for all of the day’s missions. They will share the same height reference and process together without surprises.
  • If there are trees, power lines or buildings, check obstacles against a surface model (for example, national or regional LiDAR) and leave a margin.

4. Write the mission in the format DJI Fly understands

A DJI mission is a KMZ (a ZIP file) containing a template.kml and a waylines.wpml. DJI publishes the WPML specification, but DJI Fly does not follow it to the letter. When the app imports a mission it rewrites it, and that rewritten file shows what it really understands. This is what we have confirmed with the Mini 5 Pro:

ItemWhat works
Namespacehttp://www.uav.com/wpmz/1.0.2 (not the www.dji.com one shown in the documentation)
Drone modelThe app writes droneEnumValue 68 with the Mini 5 Pro connected
Photo triggerOne waypoint per photo, with an actionGroup in parallel mode and a reachPoint trigger. We have not been able to verify distance-based triggering (multipleDistance).
Number of waypointsWe have loaded missions with several hundred waypoints without problems
Camera angleIt must be set in three places: a gimbalRotate action (absolute angle) on the first waypoint, a gimbalEvenlyRotate running to the last one, and the waypointGimbalPitchAngle of every point
TurnstoPointAndPassWithContinuityCurvature on intermediate points and toPointAndStopWithContinuityCurvature on the last one
Signal lossexitOnRCLost = executeLostAction with executeRCLostAction = goBack

Our advice: create a short route in the app itself, copy it to your computer and use it as a template. That way you start from the exact dialect of your DJI Fly version.

5. Load the mission onto the controller (DJI RC 2)

DJI Fly keeps its list of routes in an internal database that cannot be reached from a computer. That is why copying a KMZ into a new folder is not enough: the app will not list it. What does work is replacing the file of a route the app created itself:

  1. In DJI Fly, create any waypoint route (2 or 3 points), save it and give it a recognisable name. If you are loading several missions, create one route per mission, in a known order.
  2. Connect the RC 2 to your computer by USB in file transfer mode (MTP).
  3. Go to Internal shared storage/Android/data/dji.go.v5/files/waypoint/. Each route has a folder named with an identifier (UUID) containing a <UUID>.kmz file. The most recent one is the route you just created.
  4. Keep a copy of the original KMZ, delete it from the controller and copy your mission in its place, renamed exactly as <UUID>.kmz.
  5. Wait for the copy to finish and check that the size matches your file. Over MTP, an interrupted copy can be left at 0 bytes.
  6. Close DJI Fly completely and reopen it. The route will appear with the name you gave it and your flight path.

6. In the field

  • Before take-off, check the photo size, format and camera angle.
  • Set the RC 2 to automatic time. If the controller’s clock is off, photos get wrong dates, which makes sorting and processing them harder.
  • Fly the day’s missions from the same point and keep the drone in sight for the whole route.

7. Check before processing

  • Compare the number of photos with the number of planned points. If they match, the mission ran to completion.
  • Check the real camera angle in the EXIF. On nadir flights (−90°) we have found it stable. On oblique flights the gimbal did not always hold the programmed angle, so review those photo by photo.
  • If missions overlap on the ground, separate them by time blocks rather than by position.

Do it with Claude or another AI

You do not need to know how to code to follow this guide. An AI assistant such as Claude, ChatGPT or Gemini can write the script that generates the mission for you. We work with Claude, and with Claude Code, which runs on your computer, the AI can also read your files, run the script and check the result. This is how we approach it:

  1. Give it context. Pass it the plot’s GeoJSON, the drone model and the parameters you want (GSD or height, overlap, camera angle). Pass it this guide too, or the camera data from step 2.
  2. Give it a real template. Create a short route in DJI Fly, copy it from the controller and give it that KMZ. It is the best way for the AI to write exactly the dialect your version of the app understands, instead of relying on the documentation.
  3. Ask for the script, not just the file. A Python script (using shapely and pyproj) that reads the polygon, generates the flight lines, downloads the terrain model, calculates each waypoint’s height and writes the KMZ. You can then reuse it for every plot by changing a couple of parameters.
  4. Ask it to check the result. Have it count waypoints and photos, estimate the flight time and show you the route and heights on a map (in QGIS or Google Earth) before you take it to the controller.
  5. With Claude Code, it can load it too. With the RC 2 connected by USB, it can copy the KMZ into the folder of the route you created and verify that the file arrived intact.

An example request to get started:

“I have a DJI Mini 5 Pro with the RC 2 controller and DJI Fly. Here is my plot’s polygon as GeoJSON and a sample route exported from the app. Write me a Python script that generates a photogrammetry mission in that same KMZ format: 60 m above ground, 85 % front and 80 % side overlap, camera at −90°, one waypoint per photo, and each point’s height corrected with the IGN 5 m terrain model relative to this take-off point. Before writing the file, tell me how many photos it will take and how long the flight will last.”

AI speeds up the work, but it does not replace your review. It can get a unit, a sign or a format tag wrong. Always check the route and heights on a map and do a short test flight before flying the full mission.

Is it worth it?

For surveys of farm plots, vineyards or small construction sites, yes. A compact drone with a good camera and a well-planned mission delivers centimetre-resolution orthophotos and 3D models with very little logistics. For large areas, when survey-grade accuracy with ground control points or RTK is required, or when specific sensors are needed, professional equipment is still the right choice.