From 5dbb3c53cb498d1162d2bf698922afc56ffedcfd Mon Sep 17 00:00:00 2001 From: "Simeon H.K. Fitch" Date: Fri, 27 Oct 2023 11:22:12 -0400 Subject: [PATCH] Initial approach to binding DEM routines. --- .cargo/config.toml | 8 +- CHANGES.md | 4 + fixtures/dem-hills.tiff | Bin 0 -> 291884 bytes src/cpl.rs | 2 +- src/raster/mod.rs | 1 + src/raster/processing/dem/aspect.rs | 140 +++++++++++++++ src/raster/processing/dem/mod.rs | 240 +++++++++++++++++++++++++ src/raster/processing/dem/roughness.rs | 91 ++++++++++ src/raster/processing/dem/slope.rs | 150 ++++++++++++++++ src/raster/processing/dem/tpi.rs | 99 ++++++++++ src/raster/processing/dem/tri.rs | 127 +++++++++++++ src/raster/processing/mod.rs | 15 ++ src/raster/rasterband.rs | 2 +- src/test_utils.rs | 53 +++++- src/vsi.rs | 157 +++++++++------- tests/driver-no-auto-register.rs | 18 +- tests/utils.rs | 14 -- 17 files changed, 1034 insertions(+), 87 deletions(-) create mode 100644 fixtures/dem-hills.tiff create mode 100644 src/raster/processing/dem/aspect.rs create mode 100644 src/raster/processing/dem/mod.rs create mode 100644 src/raster/processing/dem/roughness.rs create mode 100644 src/raster/processing/dem/slope.rs create mode 100644 src/raster/processing/dem/tpi.rs create mode 100644 src/raster/processing/dem/tri.rs create mode 100644 src/raster/processing/mod.rs delete mode 100644 tests/utils.rs diff --git a/.cargo/config.toml b/.cargo/config.toml index e2d4b0a3..78181039 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,5 +1,9 @@ [alias] -# Run doctests, displaying compiler output -dto = "test --doc -- --show-output" +# Run doctests, displaying compiler output. +# Due to this issue: +# https://github.com/rust-lang/cargo/pull/9705#issuecomment-1226149265 +# the following is required for full output during documentation development debugging: +# RUSTDOCFLAGS="-Z unstable-options --nocapture" cargo +nightly test --doc +dto = "test --doc -- --show-output --nocapture" # Run clippy, raising warnings to errors nowarn = "clippy --all-targets -- -D warnings" diff --git a/CHANGES.md b/CHANGES.md index 8c9a1e4c..6b2bb1f2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,10 @@ ## Unreleased + - Added support for digital elevation model raster processing. + + - + - **Breaking**: `CslStringListIterator` returns a `CslStringListEntry` instead of `(String, String)` in order to differentiate between `key=value` entries vs `flag` entries. - **Breaking**: `CslStringList::fetch_name_value` returns `Option` instead of `Result>`, better reflecting the semantics of GDAL C API. - Added `CslStringList::get_field`, `CslStringList::find_string`, `CslStringList::partial_find_string`, `CslStringList::find_string_case_sensitive`, `CslStringList::into_ptr`, `CslStringList::add_name_value`. diff --git a/fixtures/dem-hills.tiff b/fixtures/dem-hills.tiff new file mode 100644 index 0000000000000000000000000000000000000000..96497673865110418d99feb297007283101bb3aa GIT binary patch literal 291884 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%0DT1KaZ109)1Bokn7Y|Z|huJdA==vppoSf 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

wLf`dE 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, + zero_for_flat: Option, + trigonometric: Option, +} + +impl DemAspectProcessor { + /// Create a aspect-from-DEM processor + pub fn new() -> Self { + Default::default() + } + + /// Specify the slope computation algorithm. + pub fn with_algorithm(&mut self, algorithm: DemSlopeAlg) -> &mut Self { + self.algorithm = Some(algorithm); + self + } + + /// Return `0` for flat areas with `slope=0`, instead of `-9999`. + /// + /// See: [`zero_for_flat`](https://gdal.org/programs/gdaldem.html#cmdoption-zero_for_flat) + pub fn with_zero_for_flat(&mut self, state: bool) -> &mut Self { + self.zero_for_flat = Some(state); + self + } + + /// Return trigonometric angle instead of azimuth. Thus 0° means East, 90° North, 180° West, 270° South. + pub fn with_trigonometric_angles(&mut self, state: bool) -> &mut Self { + self.trigonometric = Some(state); + self + } +} + +impl GdalDemProcessor for DemAspectProcessor { + fn common_options(&self) -> &DemCommonOptions { + &self.common_options + } + + fn common_options_mut(&mut self) -> &mut DemCommonOptions { + &mut self.common_options + } + + fn to_options(&self) -> CslStringList { + let mut opts = self.common_options.to_options(); + + if let Some(alg) = self.algorithm { + opts.add_string("-alg").unwrap(); + opts.add_string(&alg.to_string()).unwrap(); + } + + if self.zero_for_flat == Some(true) { + opts.add_string("-zero_for_flat").unwrap(); + } + + if self.trigonometric == Some(true) { + opts.add_string("-trigonometric").unwrap(); + } + + opts + } + + fn dem_algorithm(&self) -> DemAlg { + DemAlg::Aspect + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::assert_near; + use crate::cpl::CslStringList; + use crate::errors::Result; + use crate::raster::StatisticsAll; + use crate::test_utils::fixture; + use crate::Dataset; + + #[test] + fn options() -> Result<()> { + let mut proc = DemAspectProcessor::new(); + proc.with_input_band(2.try_into().unwrap()) + .with_algorithm(DemSlopeAlg::ZevenbergenThorne) + .with_compute_edges(true) + .with_zero_for_flat(true) + .with_trigonometric_angles(true) + .with_options("-of GTiff".parse()?); + + let expected: CslStringList = + "-compute_edges -b 2 -of GTiff -alg ZevenbergenThorne -zero_for_flat -trigonometric" + .parse()?; + assert_eq!(expected.to_string(), proc.to_options().to_string()); + + Ok(()) + } + + #[test] + fn aspect() -> Result<()> { + let mut proc = DemAspectProcessor::new(); + proc.with_algorithm(DemSlopeAlg::Horn) + .with_zero_for_flat(true); + + let ds = Dataset::open(fixture("dem-hills.tiff"))?; + + let slope = proc.eval(&ds)?; + + let stats = slope.rasterband(1)?.get_statistics(true, false)?.unwrap(); + + // These numbers were generated by extracting the output from: + // gdaldem aspect -alg Horn -zero_for_flat fixtures/dem-hills.tiff target/dest.tiff + // gdalinfo -stats target/dest.tiff + let expected = StatisticsAll { + min: 0.0, + max: 359.9951171875, + mean: 165.72752499998, + std_dev: 98.590199951445, + }; + assert_near!(StatisticsAll, stats, expected, epsilon = 1e-10); + Ok(()) + } +} diff --git a/src/raster/processing/dem/mod.rs b/src/raster/processing/dem/mod.rs new file mode 100644 index 00000000..a8c5d9f1 --- /dev/null +++ b/src/raster/processing/dem/mod.rs @@ -0,0 +1,240 @@ +//! Digital Elevation Model (DEM) processing routines. +//! +//! This module exposes many of the algorithms available in the +//! [`gdaldem` tool](https://gdal.org/programs/gdaldem.html#gdaldem) +//! +//! They all assume an open dataset containing customary digital elevation model data. +//! This includes assuming that `x` (east-west), `y` (north-south), and `z` (elevation) units are identical. +//! If `x` and `y` units are identical, but `z` (elevation) units are different, some models +//! support a scale setting to set the ratio of vertical units to horizontal. +//! See [`DemSlopeProcessor::with_scale`] for details. +//! +//! # Example +//! +//! ```rust, no_run +//! use gdal::Dataset; +//! # fn main() -> gdal::errors::Result<()> { +//! use gdal::raster::processing::dem::{DemSlopeAlg, DemSlopeProcessor, GdalDemProcessor}; +//! let ds = Dataset::open("fixtures/dem-hills.tiff")?; +//! let mut slope = DemSlopeProcessor::new(); +//! slope +//! .with_algorithm(DemSlopeAlg::Horn) +//! .with_percentage_results(true) +//! .with_scale(111120.0); +//! let slope_ds = slope.eval(&ds)?; +//! let stats = slope_ds.rasterband(1)?.get_statistics(true, false)?.unwrap(); +//! println!("{stats:#?}"); +//! # Ok(()) +//! # } +//! ``` +//! The resulting output is: +//! +//! ```text +//! StatisticsAll { +//! min: 0.0, +//! max: 57.9925651550293, +//! mean: 5.46875660310554, +//! std_dev: 7.741378121679948, +//! } +//! ``` +mod aspect; +mod roughness; +mod slope; +mod tpi; +mod tri; + +pub use aspect::*; +pub use roughness::*; +pub use slope::*; +pub use tpi::*; +pub use tri::*; + +use crate::cpl::CslStringList; +use crate::errors::Result; +use crate::raster::processing::merge; +use crate::utils::{_last_cpl_err, _path_to_c_string}; +use crate::vsi::MemFilePath; +use crate::Dataset; +use gdal_sys::{ + CPLErr, GDALDEMProcessing, GDALDEMProcessingOptions, GDALDEMProcessingOptionsFree, + GDALDEMProcessingOptionsNew, +}; +use libc::c_int; +use std::ffi::CString; +use std::fmt::{Display, Formatter}; +use std::marker::PhantomData; +use std::num::NonZeroUsize; +use std::path::{Path, PathBuf}; +use std::ptr; + +#[derive(Debug, Clone, Default)] +pub struct DemCommonOptions { + input_band: Option, + destination: Option, + compute_edges: Option, + extra_options: Option, +} + +impl DemCommonOptions { + pub fn new() -> Self { + Default::default() + } + + fn destination(&self) -> Option { + self.destination.to_owned() + } + + pub fn to_options(&self) -> CslStringList { + let mut opts = CslStringList::new(); + + if self.compute_edges == Some(true) { + opts.add_string("-compute_edges").unwrap(); + } + + if let Some(band) = self.input_band { + opts.add_string("-b").unwrap(); + opts.add_string(&band.to_string()).unwrap(); + } + + if let Some(extra) = &self.extra_options { + merge(&mut opts, extra); + } + + opts + } +} + +pub trait GdalDemProcessor { + /// Get common options for mutating. + fn common_options(&self) -> &DemCommonOptions; + + /// Get mutable common options. + fn common_options_mut(&mut self) -> &mut DemCommonOptions; + + /// Convert the current settings into the [`CslStringList`] as expected by + /// the GDAL DEM processing subroutines. + fn to_options(&self) -> CslStringList; + + /// DEM processing algorithm identifier + fn dem_algorithm(&self) -> DemAlg; + + /// Specify which band in the input [`Dataset`] to read from. + /// + /// Defaults to the first band. + fn with_input_band(&mut self, band: NonZeroUsize) -> &mut Self { + self.common_options_mut().input_band = Some(band); + self + } + + /// Specify a file destination for the generated Dataset. + /// + /// Note: If none is specified, an anonymous in-memory file is used instead. + fn with_destination>(&mut self, path: P) -> &mut Self { + self.common_options_mut().destination = Some(path.as_ref().to_path_buf()); + self + } + + /// Compute slope values at image edges. + /// + /// This causes interpolation of values at image edges or if a no-data value is found + /// in the 3x3 processing window. + fn with_compute_edges(&mut self, state: bool) -> &mut Self { + self.common_options_mut().compute_edges = Some(state); + self + } + + /// Additional generic options to be included. + fn with_options(&mut self, extra_options: CslStringList) -> &mut Self { + self.common_options_mut().extra_options = Some(extra_options); + self + } + + /// Execute the processor on the given [`Dataset`]. + fn eval(&self, ds: &Dataset) -> Result { + let opts = self.to_options(); + let popts = GdalDEMProcessingOptions::new(&opts); + let mode = CString::new(self.dem_algorithm().to_string())?; + let dest = self + .common_options() + .destination() + .clone() + .unwrap_or_else(|| MemFilePath::new().as_ref().to_path_buf()); + let dest = _path_to_c_string(&dest)?; + + let mut pb_usage_error: c_int = 0; + let out_ds = unsafe { + // Docs: https://github.com/OSGeo/gdal/blob/6a3584b2fea51f92022d24ad8036749ba1b98958/apps/gdaldem_lib.cpp#L3184 + GDALDEMProcessing( + dest.as_ptr(), + ds.c_dataset(), + mode.as_ptr(), + ptr::null(), + popts.as_ptr(), + &mut pb_usage_error as *mut c_int, + ) + }; + + if pb_usage_error != 0 { + Err(_last_cpl_err(CPLErr::CE_Failure)) + } else { + let out_ds = unsafe { Dataset::from_c_dataset(out_ds) }; + Ok(out_ds) + } + } +} + +/// DEM processor mode, to stringify and pass to [`GDALDEMProcessing`]. +#[derive(Debug, Clone, Copy)] +pub enum DemAlg { + Slope, + Aspect, + Roughness, + Tpi, + Tri, +} + +impl Display for DemAlg { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + let s = format!("{self:?}").to_lowercase(); + f.write_str(&s) + } +} + +/// Slope and slope-related (aspect, hillshade) processing algorithms. +/// +/// The literature suggests `ZevenbergenThorne` to be more suited to smooth landscapes, +/// whereas `Horn` performs better on rougher terrain. +#[derive(Debug, Clone, Copy)] +pub enum DemSlopeAlg { + Horn, + ZevenbergenThorne, +} + +impl Display for DemSlopeAlg { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.write_fmt(format_args!("{self:?}")) + } +} + +/// Payload for [`GDALDEMProcessing`]. Intended for internal use only. +pub(crate) struct GdalDEMProcessingOptions<'opts>( + *mut GDALDEMProcessingOptions, + PhantomData<&'opts CslStringList>, +); + +impl<'opts> GdalDEMProcessingOptions<'opts> { + pub(crate) fn new(opts: &'opts CslStringList) -> Self { + let popts = unsafe { GDALDEMProcessingOptionsNew(opts.as_ptr(), ptr::null_mut()) }; + Self(popts, PhantomData) + } + + pub(crate) fn as_ptr(&self) -> *const GDALDEMProcessingOptions { + self.0 + } +} + +impl Drop for GdalDEMProcessingOptions<'_> { + fn drop(&mut self) { + unsafe { GDALDEMProcessingOptionsFree(self.0) }; + } +} diff --git a/src/raster/processing/dem/roughness.rs b/src/raster/processing/dem/roughness.rs new file mode 100644 index 00000000..00bb2998 --- /dev/null +++ b/src/raster/processing/dem/roughness.rs @@ -0,0 +1,91 @@ +use crate::cpl::CslStringList; +use crate::raster::processing::dem::{DemAlg, DemCommonOptions, GdalDemProcessor}; + +/// Roughness processor for DEM datasets. +/// +/// This processor outputs a single-band raster with values computed from the elevation. +/// Roughness is the largest inter-cell difference of a central pixel and its surrounding cell, +/// as defined in Wilson et al (2007, Marine Geodesy 30:3-35). +/// +/// The value `-9999` is used as the output no-data value. +/// +/// Note: Results are nonsensical if the underlying [`Dataset`] does not contain digital elevation data. +/// +/// See: [`gdaldem roughness`](https://gdal.org/programs/gdaldem.html#roughness) for details. +#[derive(Debug, Clone, Default)] +pub struct DemRoughnessProcessor { + common_options: DemCommonOptions, +} + +impl DemRoughnessProcessor { + /// Create a aspect-from-DEM processor + pub fn new() -> Self { + Default::default() + } +} + +impl GdalDemProcessor for DemRoughnessProcessor { + fn common_options(&self) -> &DemCommonOptions { + &self.common_options + } + + fn common_options_mut(&mut self) -> &mut DemCommonOptions { + &mut self.common_options + } + + fn to_options(&self) -> CslStringList { + self.common_options.to_options() + } + + fn dem_algorithm(&self) -> DemAlg { + DemAlg::Roughness + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::assert_near; + use crate::cpl::CslStringList; + use crate::errors::Result; + use crate::raster::StatisticsAll; + use crate::test_utils::fixture; + use crate::Dataset; + + #[test] + fn options() -> Result<()> { + let mut proc = DemRoughnessProcessor::new(); + proc.with_input_band(2.try_into().unwrap()) + .with_compute_edges(true) + .with_options("-of GTiff".parse()?); + + let expected: CslStringList = "-compute_edges -b 2 -of GTiff".parse()?; + assert_eq!(expected.to_string(), proc.to_options().to_string()); + + Ok(()) + } + + #[test] + fn roughness() -> Result<()> { + let proc = DemRoughnessProcessor::new(); + + let ds = Dataset::open(fixture("dem-hills.tiff"))?; + + let slope = proc.eval(&ds)?; + + let stats = slope.rasterband(1)?.get_statistics(true, false)?.unwrap(); + + // These numbers were generated by extracting the output from: + // gdaldem roughness fixtures/dem-hills.tiff target/dest.tiff + // gdalinfo -stats target/dest.tiff + let expected = StatisticsAll { + min: 0.0, + max: 14.36100769043, + mean: 1.5128357817365, + std_dev: 2.0120679959608, + }; + + assert_near!(StatisticsAll, stats, expected, epsilon = 1e-10); + Ok(()) + } +} diff --git a/src/raster/processing/dem/slope.rs b/src/raster/processing/dem/slope.rs new file mode 100644 index 00000000..45509cb9 --- /dev/null +++ b/src/raster/processing/dem/slope.rs @@ -0,0 +1,150 @@ +use crate::cpl::CslStringList; +use crate::raster::processing::dem::{DemAlg, DemCommonOptions, DemSlopeAlg, GdalDemProcessor}; + +/// Slope processor for DEM datasets. +/// +/// This processor will take a DEM raster and output a 32-bit float raster with slope values. +/// You have the option of specifying the type of slope value you want: +/// [degrees or percent slope](DemSlopeProcessor::with_percentage_results). +/// +/// In cases where the horizontal units differ from the vertical units, you can also supply +/// a [scaling factor](DemSlopeProcessor::with_scale). +/// +/// The value `-9999` is used as the output no-data value. +/// +/// Note: Results are nonsensical if the underlying [`Dataset`] does not contain digital elevation data. +/// +/// See: [`gdaldem slope`](https://gdal.org/programs/gdaldem.html#slope) for details, +#[derive(Debug, Clone, Default)] +pub struct DemSlopeProcessor { + common_options: DemCommonOptions, + algorithm: Option, + scale: Option, + percentage_results: Option, +} + +impl DemSlopeProcessor { + /// Create a slope-from-DEM processor + pub fn new() -> Self { + Default::default() + } + + /// Specify the slope computation algorithm. + pub fn with_algorithm(&mut self, algorithm: DemSlopeAlg) -> &mut Self { + self.algorithm = Some(algorithm); + self + } + + /// Apply a elevation scaling factor. + /// + /// Routine assumes x, y and z units are identical. + /// If x (east-west) and y (north-south) units are identical, but z (elevation) units are different, + /// this scale option can be used to set the ratio of vertical units to horizontal. + /// + /// For LatLong projections near the equator, where units of latitude and units of longitude are + /// similar, elevation (z) units can be converted with the following values: + /// + /// * Elevation in feet: `370400` + /// * Elevation in meters: `111120` + /// + /// For locations not near the equator, it would be best to reproject your raster first. + pub fn with_scale(&mut self, scale: f64) -> &mut Self { + self.scale = Some(scale); + self + } + + /// If `state` is `true`, the slope will be expressed as percent slope. Otherwise, it is expressed as degrees + pub fn with_percentage_results(&mut self, state: bool) -> &mut Self { + self.percentage_results = Some(state); + self + } +} + +impl GdalDemProcessor for DemSlopeProcessor { + fn common_options(&self) -> &DemCommonOptions { + &self.common_options + } + + fn common_options_mut(&mut self) -> &mut DemCommonOptions { + &mut self.common_options + } + + fn to_options(&self) -> CslStringList { + let mut opts = self.common_options.to_options(); + + if let Some(alg) = self.algorithm { + opts.add_string("-alg").unwrap(); + opts.add_string(&alg.to_string()).unwrap(); + } + + if let Some(scale) = self.scale { + opts.add_string("-s").unwrap(); + opts.add_string(&scale.to_string()).unwrap(); + } + + if self.percentage_results == Some(true) { + opts.add_string("-p").unwrap(); + } + + opts + } + + fn dem_algorithm(&self) -> DemAlg { + DemAlg::Slope + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::assert_near; + use crate::cpl::CslStringList; + use crate::errors::Result; + use crate::raster::StatisticsAll; + use crate::test_utils::fixture; + use crate::Dataset; + + #[test] + fn options() -> Result<()> { + let mut proc = DemSlopeProcessor::new(); + proc.with_input_band(2.try_into().unwrap()) + .with_algorithm(DemSlopeAlg::ZevenbergenThorne) + .with_scale(37.0) + .with_compute_edges(true) + .with_percentage_results(true) + .with_options("-of GTiff".parse()?); + + let expected: CslStringList = + "-compute_edges -b 2 -of GTiff -alg ZevenbergenThorne -s 37 -p".parse()?; + assert_eq!(expected.to_string(), proc.to_options().to_string()); + + Ok(()) + } + + #[test] + fn slope() -> Result<()> { + let mut proc = DemSlopeProcessor::new(); + proc.with_algorithm(DemSlopeAlg::Horn) + .with_percentage_results(true) + .with_scale(111120.0); + + let ds = Dataset::open(fixture("dem-hills.tiff"))?; + + let slope = proc.eval(&ds)?; + + let stats = slope.rasterband(1)?.get_statistics(true, false)?.unwrap(); + + // These numbers were generated by extracting the output from: + // gdaldem slope -alg Horn -s 111120 -p fixtures/dem-hills.tiff target/dest.tiff + // gdalinfo -stats target/dest.tiff + let expected = StatisticsAll { + min: 0.0, + max: 57.992565155029, + mean: 5.4687566031055, + std_dev: 7.7413781216799, + }; + + assert_near!(StatisticsAll, stats, expected, epsilon = 1e-10); + Ok(()) + } +} diff --git a/src/raster/processing/dem/tpi.rs b/src/raster/processing/dem/tpi.rs new file mode 100644 index 00000000..faa3c611 --- /dev/null +++ b/src/raster/processing/dem/tpi.rs @@ -0,0 +1,99 @@ +use crate::cpl::CslStringList; +use crate::raster::processing::dem::{DemAlg, DemCommonOptions, GdalDemProcessor}; + +/// Topographic Position Index (TPI) processor for DEM datasets +/// +/// This processor outputs a single-band raster with values computed from the elevation. +/// A Topographic Position Index is defined as the difference between a central pixel and the +/// mean of its surrounding cells (see Wilson et al 2007, Marine Geodesy 30:3-35). +// +/// The value `-9999` is used as the output no-data value. +/// +/// Note: Results are nonsensical if the underlying [`Dataset`] does not contain digital elevation data. +/// +/// See: [`gdaldem tpi`](https://gdal.org/programs/gdaldem.html#tpi) for details. +#[derive(Debug, Clone)] +pub struct DemTpiProcessor { + common_options: DemCommonOptions, +} + +impl DemTpiProcessor { + /// Create a aspect-from-DEM processor + pub fn new() -> Self { + Self { + common_options: Default::default(), + } + } +} + +impl Default for DemTpiProcessor { + fn default() -> Self { + Self::new() + } +} + +impl GdalDemProcessor for DemTpiProcessor { + fn common_options(&self) -> &DemCommonOptions { + &self.common_options + } + + fn common_options_mut(&mut self) -> &mut DemCommonOptions { + &mut self.common_options + } + + fn to_options(&self) -> CslStringList { + self.common_options.to_options() + } + + fn dem_algorithm(&self) -> DemAlg { + DemAlg::Tpi + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::assert_near; + use crate::cpl::CslStringList; + use crate::errors::Result; + use crate::raster::StatisticsAll; + use crate::test_utils::fixture; + use crate::Dataset; + + #[test] + fn options() -> Result<()> { + let mut proc = DemTpiProcessor::new(); + proc.with_input_band(2.try_into().unwrap()) + .with_compute_edges(true) + .with_options("-of GTiff".parse()?); + + let expected: CslStringList = "-compute_edges -b 2 -of GTiff".parse()?; + assert_eq!(expected.to_string(), proc.to_options().to_string()); + + Ok(()) + } + + #[test] + fn tpi() -> Result<()> { + let proc = DemTpiProcessor::new(); + + let ds = Dataset::open(fixture("dem-hills.tiff"))?; + + let slope = proc.eval(&ds)?; + + let stats = slope.rasterband(1)?.get_statistics(true, false)?.unwrap(); + + // These numbers were generated by extracting the output from: + // gdaldem tpi fixtures/dem-hills.tiff target/dest.tiff + // gdalinfo -stats target/dest.tiff + let expected = StatisticsAll { + min: -4.7376708984375, + max: 4.7724151611328, + mean: 0.00012131847966826, + std_dev: 0.48943078832474, + }; + + assert_near!(StatisticsAll, stats, expected, epsilon = 1e-10); + Ok(()) + } +} diff --git a/src/raster/processing/dem/tri.rs b/src/raster/processing/dem/tri.rs new file mode 100644 index 00000000..d3dc96d2 --- /dev/null +++ b/src/raster/processing/dem/tri.rs @@ -0,0 +1,127 @@ +use std::fmt::{Display, Formatter}; + +use crate::cpl::CslStringList; +use crate::raster::processing::dem::{DemAlg, DemCommonOptions, GdalDemProcessor}; + +/// Terrain Ruggedness Index (TRI) processor for DEM datasets +/// +/// +/// See: [`gdaldem tri`](https://gdal.org/programs/gdaldem.html#tri) for details. +#[derive(Debug, Clone, Default)] +pub struct DemTriProcessor { + common_options: DemCommonOptions, + algorithm: Option, +} + +impl DemTriProcessor { + /// Create a aspect-from-DEM processor + pub fn new() -> Self { + Default::default() + } + + /// Specify the slope computation algorithm. + pub fn with_algorithm(&mut self, algorithm: DemTriAlg) -> &mut Self { + self.algorithm = Some(algorithm); + self + } +} + +impl GdalDemProcessor for DemTriProcessor { + fn common_options(&self) -> &DemCommonOptions { + &self.common_options + } + + fn common_options_mut(&mut self) -> &mut DemCommonOptions { + &mut self.common_options + } + + fn to_options(&self) -> CslStringList { + let mut opts = self.common_options().to_options(); + + if let Some(alg) = self.algorithm { + opts.add_string("-alg").unwrap(); + opts.add_string(&alg.to_string()).unwrap(); + } + + opts + } + + fn dem_algorithm(&self) -> DemAlg { + DemAlg::Tri + } +} + +/// Algorithm for computing TRI. +#[derive(Debug, Clone, Copy)] +pub enum DemTriAlg { + /// The Wilson (see Wilson et al 2007, Marine Geodesy 30:3-35) algorithm uses the mean + /// difference between a central pixel and its surrounding cells. + /// This is recommended for bathymetric use cases. + Wilson, + #[cfg(all(major_is_3, minor_ge_3))] + /// The Riley algorithm (see Riley, S.J., De Gloria, S.D., Elliot, R. (1999): + /// A Terrain Ruggedness that Quantifies Topographic Heterogeneity. + /// Intermountain Journal of Science, Vol.5, No.1-4, pp.23-27) uses the square root of the + /// sum of the square of the difference between a central pixel and its surrounding cells. + /// This is recommended for terrestrial use cases. + /// + /// Only available in GDAL >= 3.3 + Riley, +} + +impl Display for DemTriAlg { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.write_fmt(format_args!("{self:?}")) + } +} + +#[cfg(test)] +mod tests { + use crate::assert_near; + use crate::cpl::CslStringList; + use crate::errors::Result; + use crate::raster::StatisticsAll; + use crate::test_utils::fixture; + use crate::Dataset; + + use super::*; + + #[test] + fn options() -> Result<()> { + let mut proc = DemTriProcessor::new(); + proc.with_input_band(2.try_into().unwrap()) + .with_compute_edges(true) + .with_algorithm(DemTriAlg::Wilson) + .with_options("-of GTiff".parse()?); + + let expected: CslStringList = "-compute_edges -b 2 -of GTiff -alg Wilson".parse()?; + assert_eq!(expected.to_string(), proc.to_options().to_string()); + + Ok(()) + } + + #[test] + fn tri() -> Result<()> { + let mut proc = DemTriProcessor::new(); + proc.with_algorithm(DemTriAlg::Wilson); + + let ds = Dataset::open(fixture("dem-hills.tiff"))?; + + let slope = proc.eval(&ds)?; + + let stats = slope.rasterband(1)?.get_statistics(true, false)?.unwrap(); + + // These numbers were generated by extracting the output from: + // gdaldem tri -alg Wilson fixtures/dem-hills.tiff target/dest.tiff + // gdalinfo -stats target/dest.tiff + let expected = StatisticsAll { + min: 0.0, + max: 4.9836235046387, + mean: 0.49063101456532, + std_dev: 0.67193563366948, + }; + + assert_near!(StatisticsAll, stats, expected, epsilon = 1e-10); + Ok(()) + } +} diff --git a/src/raster/processing/mod.rs b/src/raster/processing/mod.rs new file mode 100644 index 00000000..91ff1f1d --- /dev/null +++ b/src/raster/processing/mod.rs @@ -0,0 +1,15 @@ +//! GDAL processing routines. + +use crate::cpl::{CslStringList, CslStringListEntry}; + +pub mod dem; + +// TODO: move to CslStringList +pub(crate) fn merge(left: &mut CslStringList, right: &CslStringList) { + for opt in right.iter() { + match opt { + CslStringListEntry::Flag(a) => left.add_string(&a).unwrap(), + CslStringListEntry::Pair { name, value } => left.set_name_value(&name, &value).unwrap(), + } + } +} diff --git a/src/raster/rasterband.rs b/src/raster/rasterband.rs index 1cc89163..402a0ce5 100644 --- a/src/raster/rasterband.rs +++ b/src/raster/rasterband.rs @@ -85,7 +85,7 @@ impl Dataset { /// /// # Example /// -/// ```rust +/// ```rust, no_run /// use gdal::Dataset; /// # fn main() -> gdal::errors::Result<()> { /// use gdal::raster::ResampleAlg; diff --git a/src/test_utils.rs b/src/test_utils.rs index b28dbeb6..37740b46 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -49,7 +49,7 @@ impl AsRef for TempFixture { } /// Returns the fully qualified path to `filename` in `${CARGO_MANIFEST_DIR}/fixtures`. -pub(crate) fn fixture(filename: &str) -> PathBuf { +pub fn fixture(filename: &str) -> PathBuf { Path::new(env!("CARGO_MANIFEST_DIR")) .join("fixtures") .join(filename) @@ -107,3 +107,54 @@ pub fn open_gpkg_for_update(path: &Path) -> (TempPath, Dataset) { .unwrap(); (temp_path, ds) } + +/// Assert numerical difference between two expressions is less than +/// 64-bit machine epsilon or a specified epsilon. +/// +/// # Examples: +/// ```rust, no_run +/// use gdal::assert_near; +/// use std::f64::consts::{PI, E}; +/// assert_near!(PI / E, 1.1557273497909217); +/// // with specified epsilon +/// assert_near!(PI / E, 1.15572734, epsilon = 1e-8); +/// ``` +#[macro_export] +macro_rules! assert_near { + ($left:expr, $right:expr) => { + assert_near!($left, $right, epsilon = f64::EPSILON) + }; + ($left:expr, $right:expr, epsilon = $ep:expr) => { + assert!( + ($left - $right).abs() < $ep, + "|{} - {}| = {} is greater than epsilon {:.4e}", + $left, + $right, + ($left - $right).abs(), + $ep + ) + }; + ($left:expr, $right:expr, epsilon = $ep:expr, field = $field:expr) => { + assert!( + ($left - $right).abs() < $ep, + "field {}: |{} - {}| = {} is greater than epsilon {:.4e}", + $field, + $left, + $right, + ($left - $right).abs(), + $ep + ) + }; + // Pseudo-specialization + (StatisticsAll, $left:expr, $right:expr, epsilon = $ep:expr) => { + assert_near!($left.min, $right.min, epsilon = $ep, field = "min"); + assert_near!($left.max, $right.max, epsilon = $ep, field = "max"); + assert_near!($left.mean, $right.mean, epsilon = $ep, field = "mean"); + assert_near!( + $left.std_dev, + $right.std_dev, + epsilon = $ep, + field = "std_dev" + ); + }; +} diff --git a/src/vsi.rs b/src/vsi.rs index b09e9998..6c1faf28 100644 --- a/src/vsi.rs +++ b/src/vsi.rs @@ -2,72 +2,114 @@ //! //! This module provides safe access to a subset of the [GDAL VSI Functions](https://gdal.org/doxygen/cpl__vsi_8h.html). //! See [GDAL Virtual File Systems document](https://gdal.org/user/virtual_file_systems.html) for details. -//! use std::marker::PhantomData; use std::mem::ManuallyDrop; use std::path::{Path, PathBuf}; +use std::sync::atomic::{AtomicUsize, Ordering}; use gdal_sys::{VSIFCloseL, VSIFileFromMemBuffer, VSIFree, VSIGetMemFileBuffer, VSIUnlink}; use crate::errors::{GdalError, Result}; use crate::utils::{_last_null_pointer_err, _path_to_c_string, _pathbuf_array}; -/// Read the file names from a virtual file system with optional recursion. -pub fn read_dir>(path: P, recursive: bool) -> Result> { - _read_dir(path.as_ref(), recursive) -} +/// Wrapper around a file path within the [`/vsimem/`](https://gdal.org/user/virtual_file_systems.html#vsimem-in-memory-files) +/// virtual file system. +/// +/// This type provides an ergonomic mechanism enabling the the creation of [`Dataset`]s +/// without writing to disk. +/// +/// # Example +/// +/// ```rust, no_run +/// use gdal::DriverManager; +/// use gdal::vsi::MemFilePath; +/// let f = MemFilePath::new(); +/// let drv = DriverManager::get_driver_by_name("GTiff").unwrap(); +/// let ds = drv.create(&f, 100, 100, 1).unwrap(); +/// // ... +/// ``` +#[derive(Debug, Clone)] +pub struct MemFilePath(PathBuf); +static MEM_FILE_ID: AtomicUsize = AtomicUsize::new(0); + +impl MemFilePath { + /// Create a unique, anonymous, in-memory file path. + pub fn new() -> Self { + let id = MEM_FILE_ID.fetch_add(1, Ordering::Relaxed); + MemFilePath(PathBuf::from(&format!("/vsimem/anon-{id}"))) + } -fn _read_dir(path: &Path, recursive: bool) -> Result> { - let path = _path_to_c_string(path)?; - let data = if recursive { - let data = unsafe { gdal_sys::VSIReadDirRecursive(path.as_ptr()) }; - if data.is_null() { - return Err(_last_null_pointer_err("VSIReadDirRecursive")); - } - data - } else { - let data = unsafe { gdal_sys::VSIReadDir(path.as_ptr()) }; - if data.is_null() { - return Err(_last_null_pointer_err("VSIReadDir")); - } - data - }; + pub fn read(&self) -> Result> { + get_vsi_mem_file_bytes_owned(self.0.as_path()) + } +} - Ok(_pathbuf_array(data)) +impl Default for MemFilePath { + fn default() -> Self { + Self::new() + } } -/// Creates a new VSIMemFile from a given buffer. -pub fn create_mem_file>(file_name: P, data: Vec) -> Result<()> { - _create_mem_file(file_name.as_ref(), data) +impl AsRef for MemFilePath { + fn as_ref(&self) -> &Path { + self.0.as_path() + } } -fn _create_mem_file(file_name: &Path, data: Vec) -> Result<()> { - let file_name = _path_to_c_string(file_name)?; +/// Read the file names from a virtual file system with optional recursion. +pub fn read_dir>(path: P, recursive: bool) -> Result> { + fn _read_dir(path: &Path, recursive: bool) -> Result> { + let path = _path_to_c_string(path)?; + let data = if recursive { + let data = unsafe { gdal_sys::VSIReadDirRecursive(path.as_ptr()) }; + if data.is_null() { + return Err(_last_null_pointer_err("VSIReadDirRecursive")); + } + data + } else { + let data = unsafe { gdal_sys::VSIReadDir(path.as_ptr()) }; + if data.is_null() { + return Err(_last_null_pointer_err("VSIReadDir")); + } + data + }; - // ownership will be given to GDAL, so it should not be automaticly dropped - let mut data = ManuallyDrop::new(data); + Ok(_pathbuf_array(data)) + } + _read_dir(path.as_ref(), recursive) +} - let handle = unsafe { - VSIFileFromMemBuffer( - file_name.as_ptr(), - data.as_mut_ptr(), - data.len() as u64, - true as i32, - ) - }; +/// Creates a new VSIMemFile from a given buffer. +pub fn create_mem_file>(file_name: P, data: Vec) -> Result<()> { + fn _create_mem_file(file_name: &Path, data: Vec) -> Result<()> { + let file_name = _path_to_c_string(file_name)?; + + // ownership will be given to GDAL, so it should not be automaticly dropped + let mut data = ManuallyDrop::new(data); + + let handle = unsafe { + VSIFileFromMemBuffer( + file_name.as_ptr(), + data.as_mut_ptr(), + data.len() as u64, + true as i32, + ) + }; + + if handle.is_null() { + // on error, allow dropping the data again + ManuallyDrop::into_inner(data); + return Err(_last_null_pointer_err("VSIGetMemFileBuffer")); + } - if handle.is_null() { - // on error, allow dropping the data again - ManuallyDrop::into_inner(data); - return Err(_last_null_pointer_err("VSIGetMemFileBuffer")); - } + unsafe { + VSIFCloseL(handle); + } - unsafe { - VSIFCloseL(handle); + Ok(()) } - - Ok(()) + _create_mem_file(file_name.as_ref(), data) } /// A helper struct that unlinks a mem file that points to borrowed data @@ -179,27 +221,18 @@ pub fn call_on_mem_file_bytes>(file_name: P, fun: F) -> Res where F: FnOnce(&[u8]) -> R, { - _call_on_mem_file_bytes(file_name.as_ref(), fun) -} + let file_name = _path_to_c_string(file_name.as_ref())?; -fn _call_on_mem_file_bytes(file_name: &Path, fun: F) -> Result -where - F: FnOnce(&[u8]) -> R, -{ - let file_name = _path_to_c_string(file_name)?; - - unsafe { - let mut length: u64 = 0; - let bytes = VSIGetMemFileBuffer(file_name.as_ptr(), &mut length, false as i32); + let mut length: u64 = 0; + let bytes = unsafe { VSIGetMemFileBuffer(file_name.as_ptr(), &mut length, false as i32) }; - if bytes.is_null() { - return Err(_last_null_pointer_err("VSIGetMemFileBuffer")); - } + if bytes.is_null() { + return Err(_last_null_pointer_err("VSIGetMemFileBuffer")); + } - let slice = std::slice::from_raw_parts(bytes, length as usize); + let slice = unsafe { std::slice::from_raw_parts(bytes, length as usize) }; - Ok(fun(slice)) - } + Ok(fun(slice)) } #[cfg(test)] diff --git a/tests/driver-no-auto-register.rs b/tests/driver-no-auto-register.rs index ab8e67ef..a0b51694 100644 --- a/tests/driver-no-auto-register.rs +++ b/tests/driver-no-auto-register.rs @@ -1,6 +1,12 @@ -mod utils; - use gdal::{Dataset, DriverManager}; +use std::path::{Path, PathBuf}; + +/// Returns the fully qualified path to `filename` in `${CARGO_MANIFEST_DIR}/fixtures`. +fn fixture(filename: &str) -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("fixtures") + .join(filename) +} #[test] /// Sequentially run tests @@ -16,21 +22,21 @@ fn test_manually_registering_drivers() { assert_eq!(DriverManager::count(), 0); - assert!(Dataset::open(fixture!("tinymarble.tif")).is_err()); + assert!(Dataset::open(fixture("tinymarble.tif")).is_err()); DriverManager::register_all(); - assert!(Dataset::open(fixture!("tinymarble.tif")).is_ok()); + assert!(Dataset::open(fixture("tinymarble.tif")).is_ok()); let driver = DriverManager::get_driver_by_name("GTiff").unwrap(); DriverManager::deregister_driver(&driver); - assert!(Dataset::open(fixture!("tinymarble.tif")).is_err()); + assert!(Dataset::open(fixture("tinymarble.tif")).is_err()); DriverManager::register_driver(&driver); - assert!(Dataset::open(fixture!("tinymarble.tif")).is_ok()); + assert!(Dataset::open(fixture("tinymarble.tif")).is_ok()); } fn test_deregister_all_but_one() { diff --git a/tests/utils.rs b/tests/utils.rs deleted file mode 100644 index 29e6368a..00000000 --- a/tests/utils.rs +++ /dev/null @@ -1,14 +0,0 @@ -#[macro_export] -macro_rules! fixture { - ($name:expr) => { - std::path::Path::new(file!()) - .parent() - .unwrap() - .parent() - .unwrap() - .join("fixtures") - .as_path() - .join($name) - .as_path() - }; -}