Quick Answer
To map drone data in QGIS, process your photos into an orthomosaic and DSM first (WebODM, Pix4D or DroneDeploy), then in QGIS use Layer → Add Layer → Add Raster Layer to load the GeoTIFFs, set the project CRS to the matching UTM zone, and style the DSM with a hillshade. For vegetation analysis open Raster → Raster Calculator and enter the NDVI formula ("ortho@NIR" - "ortho@Red") / ("ortho@NIR" + "ortho@Red") using the band numbers of your multispectral image (RGB-only cameras use VARI instead). Contours come from Raster → Extraction → Contour, and the finished map is exported through a Print Layout.
Key Takeaways
- QGIS does not stitch photos; it analyses the orthomosaic, DSM and DTM that photogrammetry software produces.
- Match the project CRS to your rasters (usually WGS 84 / UTM for the zone) before measuring anything.
- Hillshade, contours, slope and volume all come from the DSM or DTM, not the orthomosaic.
- NDVI needs a near-infrared band; with a normal RGB drone camera use VARI or ExG as a stand-in.
- Raster Calculator, Zonal Statistics and the Print Layout cover 90% of drone-mapping deliverables.
QGIS is the free, open-source GIS that turns drone photogrammetry outputs into measurements, maps and reports. It does not build the orthomosaic itself, but once you have one it can measure areas and distances, generate contours and slope maps, calculate vegetation indices, compare surveys over time and lay out a printable map. This tutorial follows a complete project from import to export using QGIS 3.x, with the exact menu paths and formulas.
Step 0: What You Need Before Opening QGIS
Process your drone photos into standard outputs first. WebODM (free), Pix4Dmapper, Agisoft Metashape and DroneDeploy all export the same three core files: an orthomosaic (GeoTIFF, usually odm_orthophoto.tif), a digital surface model (DSM, elevation including buildings and trees) and a digital terrain model (DTM, bare ground). Multispectral cameras add extra bands or separate per-band GeoTIFFs. If you still need to produce these, see our guide to creating an orthomosaic from drone images. Install the latest QGIS LTR from qgis.org; everything below uses built-in tools plus two free plugins.
Step 1: Import the Orthomosaic and DSM
- Open QGIS and create a new project (Project → New).
- Go to Layer → Add Layer → Add Raster Layer, browse to
odm_orthophoto.tifand click Add. Repeat fordsm.tifanddtm.tif. - QGIS reads the embedded CRS from each GeoTIFF. Check it by right-clicking the layer → Properties → Information; WebODM outputs are typically in WGS 84 / UTM for your zone (for example EPSG:32617 for Florida).
- Drag the orthomosaic to the top of the Layers panel so it draws over the elevation models.
Step 2: Set the Project Coordinate System
Measurements are only accurate when the project CRS is a projected system in metres or feet, not geographic degrees. Click the CRS button in the bottom-right corner (or Project → Properties → CRS) and choose the same UTM zone as your rasters. If a layer arrives in EPSG:4326 (latitude/longitude), reproject it with Raster → Projections → Warp (Reproject) and pick the UTM zone as the target. Our article on coordinate systems for drone mapping explains how to pick the right zone and when to use a state plane system instead.
Step 3: Add a Basemap and Check Alignment
Install the QuickMapServices plugin (Plugins → Manage and Install Plugins), then add Google Satellite or OpenStreetMap from Web → QuickMapServices. Toggle your orthomosaic on and off over the basemap: roads and building corners should line up within a few metres for GPS-only flights, or within centimetres if you used ground control points. A consistent offset means the wrong CRS or datum; a rotation or stretch means the photogrammetry step needs GCPs.
Step 4: Style the DSM with a Hillshade
A raw DSM is a flat grey image. To make terrain readable, run Raster → Analysis → Hillshade on the DSM (azimuth 315°, altitude 45° are good defaults) and place the result under a semi-transparent elevation layer. For the elevation layer itself, open Properties → Symbology, set Render type to Singleband pseudocolor, choose a terrain colour ramp and click Classify. Set the blending mode to Multiply so the hillshade shows through.
Step 5: Generate Contours, Slope and Aspect
- Contours: Raster → Extraction → Contour, choose the DTM, set the interval (0.5 m for small sites, 1–2 m for large ones) and the attribute name ELEV. Style the lines and label them with the ELEV field.
- Slope: Raster → Analysis → Slope on the DTM, in degrees or percent, then apply a pseudocolor ramp to highlight slopes above a threshold.
- Aspect: Raster → Analysis → Aspect shows the compass direction each slope faces, useful for solar and drainage studies.
A detailed walkthrough is in our guide to generating contour lines from drone data.
Step 6: Calculate NDVI or a Vegetation Index
Open Raster → Raster Calculator. The band list on the left shows each layer as layername@1, @2 and so on. For a multispectral orthomosaic where band 3 is red and band 5 is near-infrared, enter:
("ortho@5" - "ortho@3") / ("ortho@5" + "ortho@3")
Set the output path, keep the extent and resolution of the source, and click OK. NDVI ranges from −1 to 1; healthy vegetation is typically 0.4–0.8, bare soil near 0.1 and water negative. Style the result with a red-to-green pseudocolor ramp.
If your drone only has an RGB camera there is no NIR band, so NDVI is not possible. Use the VARI index instead, which approximates vegetation vigour from visible light: ("ortho@2" - "ortho@1") / ("ortho@2" + "ortho@1" - "ortho@3") where bands 1, 2 and 3 are red, green and blue. Our NDVI with drones guide covers camera choices and flight settings.
Step 7: Measure Area, Volume and Zonal Statistics
- Distances and areas: use the Measure tool on the toolbar; because the project CRS is UTM the results are in metres.
- Field or plot statistics: draw polygons as a new vector layer (Layer → Create Layer → New Shapefile Layer), then run Processing Toolbox → Raster analysis → Zonal statistics to get the mean NDVI or elevation inside each polygon.
- Stockpile volume: run Processing Toolbox → Raster surface volume on a DSM clipped to the pile outline, with the base level set to the surrounding ground elevation.
Step 8: Compare Two Surveys Over Time
Load the DSM from each flight date, make sure both share the same CRS and cell size (use Warp if not), and subtract them in the Raster Calculator: "dsm_june@1" - "dsm_march@1". Positive values show material added or growth; negative values show erosion or excavation. The same subtraction on two NDVI layers highlights crop stress developing between flights.
Step 9: Export a Printable Map
Go to Project → New Print Layout, add a map frame, scale bar, north arrow, legend and title from the Add Item menu, then Layout → Export as PDF or as an image. To share the data rather than a picture, export the NDVI or contour layer with Export → Save As in GeoTIFF or GeoPackage format so clients can open it in any GIS.
Useful QGIS Plugins for Drone Work
| Plugin | What it does |
|---|---|
| QuickMapServices | Adds satellite and street basemaps for alignment checks |
| Profile Tool | Draws elevation cross-sections across a DSM |
| Qgis2threejs | Renders the DSM and orthomosaic as an interactive 3D scene |
| Georeferencer (built in) | Aligns scanned maps or un-georeferenced images to your orthomosaic |
| Semi-Automatic Classification | Supervised land-cover classification of multispectral imagery |
Frequently Asked Questions
Can QGIS create an orthomosaic from drone photos?
Not on its own. QGIS analyses rasters but does not run photogrammetry. Process the photos in WebODM, Pix4D, Metashape or DroneDeploy first, then load the exported orthomosaic and DSM into QGIS.
What is the NDVI formula in the QGIS Raster Calculator?
(NIR − Red) / (NIR + Red). In QGIS syntax with band 5 as NIR and band 3 as red it is (“ortho@5” – “ortho@3”) / (“ortho@5” + “ortho@3”). Adjust the band numbers to your camera.
Can I calculate NDVI from a regular RGB drone camera?
No, NDVI needs a near-infrared band. Use a visible-light index such as VARI, (Green − Red) / (Green + Red − Blue), which gives a usable approximation of vegetation vigour.
Which coordinate system should a drone map use in QGIS?
A projected system in metres, normally WGS 84 / UTM for your zone, so that distances, areas and volumes are correct. Reproject layers that arrive in EPSG:4326 with Raster → Projections → Warp.
How do I measure stockpile volume in QGIS?
Clip the DSM to the pile outline, then run Raster surface volume from the Processing Toolbox with the base level set to the surrounding ground elevation.
Conclusion
Once the photogrammetry step is done, QGIS handles everything a drone mapping client usually asks for: aligned imagery over a basemap, hillshaded terrain, contours and slope, NDVI or VARI vegetation maps, zonal statistics, stockpile volumes and change detection between flights, all exported as a clean printable map or shareable GeoTIFF. Get the CRS right first, keep the DSM and DTM separate for terrain versus surface questions, and build the Raster Calculator formulas around the actual band order of your camera.