field tools for hydraulic engineers

Michael Flynn, PE NC #057037 SC #39878 Asheville, NC

The instrument that
checks the maps.

A flood inundation map decides who gets evacuated. Almost nobody can check one against the actual ground. FloodTruth projects the modelled surface onto real terrain and measures where the model and the world disagree.

24.67ft Record crest, French Broad at Asheville USGS gauge 03451500 · 27 September 2024 · Hurricane Helene

Runs in this browser. No download, no sign-in, no camera or location permissions. About 20 seconds.

The demo renders that recorded peak over real USGS 3DEP terrain, bathtub-modelled at the crest elevation — illustrative, not a HEC-RAS 2D analysis.

Cross-section profile chart: a channel bed aggraded about four feet (solid line)
                      sitting above the original design bed (orange dashed), with the modelled water
                      surface shaded between them.
What the tool measures. A post-event channel bed (solid) against its design bed (orange dashed) — here 31.6 m² of aggradation cuts conveyance from 2354 to 835 m³/s·√S: 64.5% of flood capacity lost, −3792 cfs. Screenshot of the actual tool. Bed profiles are synthetic and labelled as such; the Manning conveyance with roughness subdivision (Chow 1959 / HEC-RAS) is real.
On a phone?
generating QR…
floodtruth.com/ar-prototype.html
Scan to run the same demo with the live camera overlay. Needs a rear camera, GPS, and compass.

What the AR module actually does

The AR view: a modelled flood surface drawn as a shallow blue band just below
                  a computed horizon line, over the synthetic background used when no camera
                  is attached, with a heads-up display of heading, pitch, roll and elevation.
The same pipeline a phone runs, on a desktop with no camera: modelled peak inundation projected WGS84 → ENU → camera → screen, sitting below the computed horizon. It reads as a shallow band because that is the real geometry — the viewpoint is ~4.6 m above the recorded peak water surface, so a horizontal water plane subtends only a couple of degrees. Point a phone at the reach and the same surface lands on the live camera feed.
  • Coordinate stack: WGS84 → ENU → camera-space → screen pinhole projection.
  • Per-vertex DSM occlusion via geotiff.js + proj4 reprojection from any UTM zone.
  • Edge-silhouette clipping through 10-iteration bisection in absolute NAVD88 elevation.
  • WMM-2025 magnetic declination correction for Android compass heading.
  • Snapshot output: composited camera + overlay PNG with timestamp, GPS, and depth-offset metadata — structured for FEMA P-64 / state EAP exhibits.

No prior EAP-authoring or flood-risk tool integrates closed-loop field visual verification. The math behind the projection is intentionally simple — pinhole camera + ENU rotation: $\;\mathbf{x}_{\rm screen} = \mathbf{K}\,\mathbf{R}_{\rm cam\leftarrow ENU}(\mathbf{p}_{\rm world}-\mathbf{p}_{\rm cam})$

Field operations

Quick hydrology screening and offline handoff for staged dam-safety areas. Values populate once you open a scenario — they are blank here because no scenario is loaded yet.

Peak flow (screening) — Rational method, cfs
Runoff depth (screening) — SCS CN method, inches
Staged areas 0 IndexedDB offline cache

Offline area handoff

The other two tools (peripheral to the SBIR pitch)

Sediment — OpenCV watershed photo-sieving (Graham/Reid/Rice 2005); D16/D50/D84, Folk-Ward sorting, Wentworth classes. Stream Flow — LSPIV cross-correlation on phone-recorded video for surface-velocity-to-discharge. These are independent field tools that share the "real algorithms, no fakes" stance but are not part of the SBIR scope.

Photo-sieve sediment live

Top-down photo of a gravel bar with a scale reference in frame (coin, card, ruler). Returns particle-size distribution, $D_{16}$, $D_{50}$, $D_{84}$, sorting, and Wentworth class breakdown.

OpenCV loads when this tab opens

Image & calibration

After loading a photo, tap two endpoints of the scale object to calibrate. Tap "Reset calibration" to redo.

no photo loaded
click "Stream Flow" to load this tool…
click "Inundation AR" to load this tool…