[general]
name=QEHT Engineering Hydrology
qgisMinimumVersion=3.22
qgisMaximumVersion=4.99
description=Road-drainage and catchment hydrology from a DEM, computed entirely inside QGIS: no external executables, no extra Python packages.
version=1.0.1
author=Edmond Akello
email=francenicklaus@gmail.com
about=QEHT turns a DEM and a road centreline into the hydrology a drainage
    designer needs at every crossing, with every computation running inside
    QGIS using only NumPy and the GDAL bindings that QGIS ships. It never
    starts another process, so it works on managed workstations where
    security software blocks the SAGA, GRASS, TauDEM or WhiteboxTools
    providers, and it needs no pip installation.

    Terrain and drainage: DEM preparation and audits (nearest-neighbour
    resampling, undeclared NoData), depression filling, D8 flow direction with
    Barnes (2014) or toward-lower flat resolution, flow accumulation, streams
    with Strahler order, catchments, longest flow paths and the four slope
    measures used in design.

    Road drainage: crossing candidates along the alignment with chainage,
    burning culverts through embankments, ground profile, a drainage-coverage
    check (missing crossings, sags, flat stretches) with proposed crossings,
    a check against mapped rivers, floodplain width and channel sections at
    crossings, corridor auto-clip for national DEMs, and DEM-error uncertainty
    of area and time of concentration at each crossing.

    Catchment parameters: soils and USLE K from SOTWIS, SoilGrids or any soil
    map; hydrologic soil groups, curve numbers and Rational C; rainfall zones
    and mean annual rainfall; land-cover scenarios; time of concentration by
    Kirpich, Kerby-Kirpich, SCS lag, TR-55 and Bransby-Williams with validity
    flags; erosion indices, RUSLE and side-drain siltation screening.

    Outputs: a one-click pipeline with a fixed folder layout, an HTML run
    report, a one-row-per-crossing characteristics table, raster quicklooks,
    KMZ and XLSX exports, and a self-describing GeoPackage (design hydrology
    package) for design software. Proxies and estimates are labelled as such
    in every output; no engineering value is invented.

    Licensed under the GNU General Public License version 2 or later.
category=Raster
tags=hydrology,watershed,catchment,DEM,D8,flow accumulation,drainage,Strahler,engineering,road,culvert,curve number,time of concentration,erosion,RUSLE,processing
icon=icon.svg
experimental=False
deprecated=False
hasProcessingProvider=yes
homepage=https://github.com/EdmondAkello/qeht
repository=https://github.com/EdmondAkello/qeht
tracker=https://github.com/EdmondAkello/qeht/issues
changelog=1.0.1: Qt6-safe enum names in two fallback branches; tests no longer in the plugin zip; a crossing candidate moved during review is snapped from its new position; coverage check counts the other crossings of a clustered stream (a road beside a river) as covered instead of proposing new crossings on them; DEM uncertainty leaves a crossing unassessed when the snap reaches another channel; user guide and technical manual (docs/user-guide). 1.0.0: first stable release; synthetic example DEM replaces the real-terrain example; tested on QGIS 3.34 and 4.2. 0.27.1: end-to-end check on a synthetic site; DEM uncertainty about 8x faster per realisation (one-pass longest flow lengths); side-drain and mapped-drainage distances as parameters; parameter order and help. 0.27.0: DEM uncertainty at crossings (Monte Carlo with a correlated Gaussian DEM error: P10/P50/P90 and CV of area, flow-path length, 10-85 slope and Kirpich Tc, lost-outlet and switching shares; AW3D30 / FABDEM presets with sources, no silent default). 0.26.0: land-cover scenarios (second land-cover raster through the same lookups and soil groups: CN, C and soil-loss changes per catchment); Graphical Modeler example examples/qeht_corridor.model3. 0.25.0: Clip DEM to the road's contributing area (coarse minimum-block routing, upstream of the road buffer, margin, window read of the full DEM) for large DEMs; pipeline option; clip_edge flag on catchments. 0.24.0: check against mapped drainage (OSM, HydroRIVERS or a national layer): precision, recall and F1 overall and per catchment, agreement per crossing, mapped rivers crossing the road without a crossing, divergence reaches. 0.23.0: KMZ (Google Earth: crossing cards, catchments, flow paths, road with kilometre posts, coverage findings, relief overlay, legend and title block) and XLSX workbook (design column order, units row, frozen panes) exports, pure Python; Export package tool; pipeline exports/. 0.22.0: time of concentration by Kirpich, Kerby + Kirpich, SCS lag, TR-55 segments and Bransby-Williams side by side with validity flags and inputs (none chosen); P2 user value or raster with no default; PROXY sheet n and Kerby N from land cover; table and report section. 0.21.0: Prepare DEM for hydrology (merge tiles, clip with a buffer, bilinear or cubic to the WGS 84 / UTM zone of the extent centre anywhere on Earth or any projected CRS, NoData override, input and output audits, source tags read by the package); optional first step of the pipeline. 0.20.0: side-drain siltation indicator per side along the corridor (overland STI on the cells that drain to each side of the road, relative classes, siltation flag on low-gradient stretches) in Sample erosion along alignment and the package (layer corridor_sti). 0.19.0: approach-channel cross-section downstream of every crossing (bed level, bank-full width and depth by break of slope, widths at bed + 0.5/1/2 m, side slopes, station-elevation list, quality flag; layer xs_transects). 0.18.0: floodplain width indicator at large crossings (profile and HAND, bed + 0.5/1/2 m); raster quicklooks (PNG + world file + legend JSON, rasters index table) in the package and pipeline; terrain under the run-report plan. 0.17.0: one-click hydrology pipeline (fixed output folder, review stop, re-run from settings) with an HTML run report and a catchment characteristics table; Run report tool for any package; rainfall zones, mean annual rainfall and an R estimate per catchment; R from rainfall in the erosion tool. 0.16.0: drainage coverage check along the road (missing crossings, sag points, flat stretches) with proposed crossings delineated in the package; standalone coverage tool; relink keeps status. 0.15.1: .shp outputs are real shapefiles; RUSLE factor range checks (class raster as C refused); raster provenance tags; automatic merge of near-duplicate crossings; candidate layers in Catchment characteristics. 0.15.0: 'Build design hydrology package' (was Build HEAS exchange package; id unchanged); alignment ground profile; overland/channel split of the flow path and basin shape indices; soils from any source (SoilGrids, HWSD units, any polygon map, HYSOGs HSG, K rasters); curve number and Rational C from land cover x HSG; overland STI, crossing deposition indicator and approach/exit channel slopes. 0.14.0: erosion (WP-F) - SPI, TWI, LS, RUSLE with source-tagged factors and LS-only fallback, severity classes, corridor sampler, erosion block and crossing impact score in the HEAS exchange; slope documentation (relief ratio is not a Tc input), lfp_z_head_m / lfp_z_outlet_m / lfp_nonmonotonic. 0.13.1: DEM QA warning for nearest-neighbour resampling; flat-method sensitivity check per catchment (area under both methods, flag); ID prefix applies to sequential IDs only. 0.13.0: Barnes 2014 is the default flat method (WP-G benchmark, 80 Kenyan areas x ALOS/FABDEM vs TauDEM, RichDEM, MAS, DDM); Barnes now identical to RichDEM; flats touching the grid edge or NoData drain; hybrid removed; tested on QGIS 4.2.2 and 3.34. 0.12.0: vectorised core (3.6-5.4x faster), Barnes flow-loop fix, hybrid flat resolution, memory estimate. 0.11.0: soil parameters and USLE K (SOTWIS preset). 0.10.0: road crossing candidates, burn crossings, renumber and relink. 0.9.0: HEAS exchange package, stable outlet_uid, outlet-referenced 10-85 slope, overlapping-catchment polygon fix. See CHANGELOG.md
