Short answer
Environmental constraints mapping assembles the spatial sensitivities of an area — protected areas, watercourses, wetlands, habitats, steep slopes, buffers around them — into a single layered picture that shows where a project is excluded, restricted, or relatively free to proceed. The core technique is overlay analysis: apply setback buffers, separate hard (absolute) exclusions from soft (weighted) constraints, combine them, and produce either a binary go/no-go mask or a graded suitability surface.
It is a screening and siting tool used early in routing, site selection, and environmental due diligence. It frames where to focus field survey and impact assessment; it does not replace a statutory Environmental Impact Assessment, an ecologist's survey, or a regulator's determination.
Hard versus soft constraints
The single most important design decision is classifying each layer.
- Hard (absolute) constraints are legal or physical no-go areas: a nature reserve boundary, a statutory watercourse setback, a flood regulatory zone, land above a maximum buildable slope. These are binary — inside is excluded, full stop. They become an exclusion mask.
- Soft (relative) constraints vary in severity and can be traded off: proximity to a sensitive habitat, moderate slope, visual exposure, soil sensitivity. These are scored (say 1 = minor to 5 = severe) and weighted, producing a continuous suitability surface.
Mixing the two collapses the analysis. If you score a legal reserve the same way you score "moderately steep ground", a high score elsewhere can mathematically outweigh a no-go zone, and the map silently recommends a forbidden site. Keep hard constraints as a separate mask applied last.
Buffers and setbacks
Most environmental constraints radiate outward from a feature. A river is not just the channel — regulation may forbid works within, say, 30 m of the bank; a designated tree may carry a root-protection radius; a settlement may need an amenity buffer. Buffering converts the feature into its zone of influence.
In QGIS use Buffer (Processing) or Variable distance buffer when the setback depends on an attribute (a major river gets a wider buffer than a minor stream — drive it from a field). In PostGIS:
-- 30 m setback around all watercourses, dissolved
SELECT ST_Union(ST_Buffer(geom, 30)) AS setback
FROM hydrography
WHERE feature_type = 'watercourse';
Buffer in a projected CRS so the distance is in metres. Buffering on EPSG:4326 interprets "30" as 30 degrees — roughly 3,300 km at the equator — a classic and catastrophic error. Reproject first (ST_Transform to your UTM zone, or set the layer CRS in QGIS).
Building the exclusion mask
Union all hard constraints — protected-area polygons, buffered watercourses, flood zones, over-steep slope polygons — into one exclusion geometry (vector) or a 0/1 raster (raster workflow).
For slope, derive it from the DEM and threshold:
gdaldem slope dtm.tif slope.tif -compute_edges
gdal_calc.py -A slope.tif --calc="A>25" --outfile=slope_excl.tif --type=Byte
Rasterise vector exclusions to the same grid (gdal_rasterize) and combine with a logical OR so any single hard constraint excludes the cell. The result is the definitive no-go layer.
Weighting the soft constraints
For the graded constraints, use a transparent multi-criteria approach. The defensible version:
- Standardise each layer to a common scale (e.g. 1-5 constraint severity). A habitat-proximity layer might score 5 within 100 m of a sensitive habitat, declining to 1 beyond 1 km.
- Assign weights that sum to 1, ideally justified — pairwise comparison (AHP) gives a documented, consistency-checked weight set rather than arbitrary numbers.
- Combine as a weighted sum:
constraint = Σ (wᵢ × scoreᵢ). - Mask with the hard-exclusion layer so no-go cells are set to null regardless of their soft score.
gdal_calc.py -A habitat.tif -B slope_soft.tif -C visual.tif \
--calc="0.5*A + 0.3*B + 0.2*C" --outfile=soft.tif
# then null out hard exclusions
gdal_calc.py -A soft.tif -B exclusion.tif \
--calc="A*(B==0)" --outfile=suitability.tif
Resample every input to a common grid and CRS first (gdalwarp -tr 10 10 -t_srs EPSG:32633). Mismatched cell sizes are the most common silent defect in overlay scoring.
Data sources and scale
A constraints map is only as trustworthy as its inputs. Typical layers and the discipline they demand:
- Protected areas: the World Database on Protected Areas (WDPA), Natura 2000 in the EU, national designations. Check the designation date and whether boundaries are indicative or surveyed.
- Hydrography and wetlands: national hydrography datasets; note mapped scale — a 1:250,000 stream layer should not be buffered as if it were survey-accurate.
- Habitats / land cover: Corine Land Cover, national habitat inventories, or classified satellite imagery.
- Slope and terrain: derived from the best available DEM.
- Statutory setbacks: sourced from the actual regulations, not assumed — setback distances vary by jurisdiction and feature class.
Record the source, scale, and date of each layer. A constraint buffered from a coarse, decade-old polygon carries false precision; the map should signal that uncertainty.
Worked example — solar farm siting screen
A developer screens a district for utility-scale solar. Hard constraints: designated reserves, a 50 m watercourse setback, slope > 10°, and the regulatory flood zone — unioned into an exclusion mask. Soft constraints: distance to high-value habitat (closer = worse), south-facing aspect (a benefit, so inverted), and land-cover sensitivity — standardised 1-5, weighted 0.5/0.3/0.2, summed, then masked by exclusions. The output suitability raster, clipped to the district, ranks candidate parcels. The team then sends only the top-scoring, non-excluded parcels for ecological walkover and grid-connection study. The map narrowed hundreds of parcels to a shortlist; it did not approve any of them.
Vector versus raster workflows — and when to switch
You can run a constraints analysis in either data model, and the choice affects accuracy and speed.
A vector workflow keeps polygons crisp: exclusion boundaries follow the exact geometry of a reserve or setback, areas are computed precisely, and the output is clean for cartography and legal description. It is the right model when boundaries are authoritative and you need exact area or "does this parcel touch a constraint" queries (ST_Intersects, ST_Overlaps in PostGIS). The cost is that overlaying many polygon layers with unions and intersections gets computationally heavy and slivers accumulate at edges.
A raster workflow discretises everything to a grid, which makes weighted multi-criteria scoring trivial — every layer becomes a number per cell and you add them. It is the natural model for graded suitability surfaces and for combining continuous inputs like slope. The cost is that boundaries become stair-stepped at the cell size, so a fine grid is needed where edges are legally meaningful.
The pragmatic pattern most teams use: handle hard exclusions in vector for boundary precision and legal defensibility, and handle the weighted soft surface in raster for scoring flexibility, then rasterise the exclusions onto the same grid to apply the final mask. State your cell size — a 10 m grid implies ±10 m boundary uncertainty, which is fine for screening but not for a cadastral line.
Documenting the constraint register
Beyond the map, a defensible constraints study carries a register: a table listing every constraint, its source dataset, its scale and date, whether it is hard or soft, its buffer distance, its score range, and its weight. This is what a regulator or a reviewing engineer actually audits. Without it, a reader cannot tell whether "excluded" means "statutory reserve" or "analyst judgement", and the map cannot be reproduced when a dataset updates. Keep the register and the map versioned together.
Common pitfalls and why they happen
- Treating hard constraints as scores. A high soft score can numerically override a legal no-go. Always apply exclusions as a final mask.
- Buffering in geographic degrees. "30" becomes 30 degrees, not metres — an enormous, useless buffer. Reproject to a metric CRS first.
- Mismatched grids in the weighted sum. Combining a 10 m slope raster with a 100 m land-cover raster without resampling produces blocky, misaligned results. Warp to one grid.
- False precision from coarse data. Sharp buffers around a 1:250,000 boundary imply accuracy the source does not have. Carry the scale forward as an uncertainty note.
- Undocumented weights. Arbitrary weights make the map unchallengeable. Use AHP or at least record the rationale.
Quality checks
- Confirm every hard constraint actually nulls its cells in the final suitability surface (sample a known reserve — it must be excluded).
- Verify all inputs share CRS, extent, and cell size after warping (
gdalinfo). - Cross-check setback distances against the governing regulation, not assumptions.
- Sensitivity-test the weights: shift them ±10% and confirm the shortlist is stable; if it flips wildly, the result is weight-driven, not evidence-driven.
- Record source, scale, date, and the weighting scheme in the deliverable.
Bathyl perspective
We build constraints maps that keep hard exclusions and weighted preferences strictly separate and visible, with every layer's source, scale, and weight documented. That lets a client see not just where a site scores well but why, defend the analysis to a regulator, and re-run it as policies or data change — instead of trusting a single opaque suitability colour.
Related reading
- Drought and Terrain Exposure Mapping
- Drainage and Terrain Risk Screening
- Natural Hazard Screening for Early Projects
- Terrain intelligence