-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Context
fly_footprint() assumes flat terrain beneath the aircraft. On slopes the true ground coverage differs — downhill slopes produce a larger actual footprint, uphill slopes a smaller one. In steep BC terrain this can be meaningful. This limitation is documented in fly_footprint(), fly_overlap(), and the vignette.
Enhancement
Allow users to provide a DEM to improve footprint accuracy.
Approach options (simplest first)
-
Terrain-adjusted area — drape the flat footprint polygon onto the DEM and report actual ground surface area (larger than planimetric area on slopes). Doesn't change the footprint shape, just gives a better area estimate.
-
Slope-adjusted footprint — compute average terrain slope under each footprint and stretch the rectangle accordingly. Assumes nadir (straight-down) camera, which is already our assumption.
-
Ray-cast footprint — derive flying height from scale + focal length (
altitude = focal_length * scale_num), project corner rays from the camera onto the DEM surface. Produces an irregular quadrilateral matching actual ground coverage. Most accurate but requires nadir assumption since camera tilt/orientation aren't in the BC catalogue.
Interface sketch
fly_footprint(centroids, dem = raster_or_path)demdefaults toNULL(current flat-terrain behavior)- When provided, applies terrain correction
- Would likely add
terrato Suggests
Limitations
- BC air photo catalogue doesn't include camera tilt, roll, or exact altitude — must assume nadir
- DEM resolution matters: coarse DEMs (e.g. 30m CDEM) won't capture fine terrain detail
- Flying height derived from reported scale assumes the scale was calculated at a reference elevation
Acceptance criteria
-
fly_footprint()accepts optional DEM - Flat-terrain behavior unchanged when no DEM provided
- At minimum, terrain-adjusted area reported
- Document which DEM sources work well (CDEM, BC TRIM, LiDAR)
- Tests comparing flat vs terrain-adjusted footprints on sloped terrain