I’m laying out 2025 harvest blocks and keep fighting buffer overlaps and topology errors when I combine riparian buffers, slope masks from LiDAR DEM, and adjacency constraints - what’s your go‑to workflow to spit out clean units and workable skid/haul routes in QGIS/ArcPro? Under-canopy GNSS drift is also wrecking my field edits; any tips for snapping tracks and keeping topology sane without babysitting slivers all night?
Stop unioning vectors — rasterize riparian buffers, the LiDAR DEM slope mask, and adjacency to 2 m, combine in Raster Calculator, then polygonize → dissolve → Fix Geometries; slivers and topology overlaps disappear. For under‑canopy GNSS drift, snap recorded tracks to a clean skid/haul centerline with Snap geometries to layer at 5–8 m and run GRASS v.clean (break, rmdupl) before the final topology check.
One thing that’s helped me: build the units in a file gdb with a topology (Must Not Overlap/Have Gaps) and a about 0.5–1 m XY tolerance, then Eliminate anything under your MMU before the final dissolve. For routes, make a slope/constraints cost raster, run Least Cost Path from landing candidates, convert to centerlines, then Snap them to existing roads at about 5–10 m so field edits stay sticky. Under canopy, turn on position averaging in QField/Field Maps and later snap the GNSS tracks to those centerlines — do you have any control points you can occupy to bias-correct the day’s drift?
I’ve had better luck generating skid/haul as least‑cost paths: build a cost surface from your LiDAR DEM slope plus riparian penalties, then run GRASS r.cost → r.drain in QGIS (r.cost - GRASS GIS manual) and Smooth/Snap to the road layer so the geometry behaves when you lay out [redacted]. For the “under‑canopy GNSS drift,” I post‑process and v.clean.snap tracks at about 1–2 m to the road network before any edits. @OP do you have GRASS enabled, or should I share the exact r.cost parameters I use?
Snap everything to a fixed hex grid early: make an H3/fishnet at your MMU, flag out disallowed cells from buffers, slope mask, and adjacency, then dissolve the keeps so boundaries line up and slivers vanish. For under‑canopy drift, post‑process by “snap to lines”: run Snap Geometries to Layer (1–3 m) against your skid/road template and, if you’re using @olivia84’s routing, seed from those snapped junctions — like bowling with bumpers.
, when riparian buffers and adjacency collide I stop doing vector overlays and flip to a 1 m raster stack: burn each constraint to a byte grid, do simple cell math for ‘allowed’, then polygonize → smooth; you get clean, gap‑free units without slivers. For the skid/haul, generate centerlines first and map‑match your “under‑canopy GNSS drift” tracks to them with the QGIS map‑matching plugin or ArcPro’s Snap, using about 3 m tolerance, then field‑correct only the bits that still fall outside. @afoster’s hex trick is great when MMU is rigid, but rasterizing keeps organic edges when you need them.