demcompare.dem_processing.dem_processing_methods

Mainly contains different DEM processing classes

Module Contents

Classes

AltiDiff

Altitude difference between two DEMs

AltiDiffSlopeNorm

Altitude difference between two DEMs normalized by the slope

AngularDiff

Angular difference between two DEMs

Ref

REF DEM

Sec

SEC DEM

RefCurvature

Curvature of the REF DEM

SecCurvature

Curvature of the SEC DEM

class demcompare.dem_processing.dem_processing_methods.AltiDiff(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

Altitude difference between two DEMs

compute_dems_diff(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Compute altitude difference dem_1 - dem_2 and return it as an xr.Dataset with the dem_2 georeferencing and attributes.

Parameters:

dem_1

dem_1 xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

difference xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Compute the difference between dem_1 and dem_2. Add classification layers to the difference.

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

difference xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

class demcompare.dem_processing.dem_processing_methods.AltiDiffSlopeNorm(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

Altitude difference between two DEMs normalized by the slope

compute_dems_diff_slope_norm(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Compute altitude difference dem_1 - dem_2, normalized by the slope of the DEM and return it as an xr.Dataset with the dem_2 georeferencing and attributes.

Parameters:

dem_1

dem_1 xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

difference normalized by the slope xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

dh_compute_normalization_factor(diff: numpy.ndarray, dem: xarray.Dataset, nbins: int = 100) numpy.ndarray[source]

Compute the normalization factor for several (nbins) slope classes. First: compute the tangent of the slope at each pixel. Then: compute the angle of the slope at each pixel. Then: classification of the pixels by the angle of the slope value. Then: compute the std of the error for each of the pixel classes Then: perform linear regression: a,b=regLin(tan(angle),std) Finally: Error normalization for each slope class: dh = dh/(1+b/a*tan(angle))

Parameters:
  • diff (np.ndarray) – difference between the ref and sec DEMs

  • dem (xr.Dataset) –

    dem xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • nbins (int) – number of bins of the histogram

Returns:

altitude difference normalized by the slope

Return type:

np.ndarray

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Compute the difference between dem_1 and dem_2 normalized by the slope. Add classification layers to the difference.

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

difference normalized by the slope xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

class demcompare.dem_processing.dem_processing_methods.AngularDiff(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

Angular difference between two DEMs

compute_dems_angular_diff(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Compute angular difference dem_1 - dem_2 and return it as an xr.Dataset with the dem_2 georeferencing and attributes.

Parameters:

dem_1

dem_1 xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

angular difference xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

compute_angular_similarity(n_a: numpy.ndarray, n_b: numpy.ndarray) numpy.ndarray[source]

Compute the angular difference theta (radians) between two vector maps.

Parameters:
  • n_a (np.ndarray) – surface normal vector to first DEM

  • n_b – surface normal vector to second DEM

Returns:

angular difference between the two vectors

Return type:

np.ndarray

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Compute the angular difference between dem_1 and dem_2. Add classification layers to the difference.

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

angular difference xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

class demcompare.dem_processing.dem_processing_methods.Ref(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

REF DEM

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset = None) xarray.Dataset[source]

Return dem_1

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

class demcompare.dem_processing.dem_processing_methods.Sec(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

SEC DEM

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Return dem_1

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

class demcompare.dem_processing.dem_processing_methods.RefCurvature(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

Curvature of the REF DEM

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset = None) xarray.Dataset[source]

Return the curvature of dem_1

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

curvature xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset

class demcompare.dem_processing.dem_processing_methods.SecCurvature(parameters: Dict = None)[source]

Bases: demcompare.dem_processing.dem_processing_template.DemProcessingTemplate

Curvature of the SEC DEM

process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) xarray.Dataset[source]

Return the curvature of dem_1

Parameters:
  • dem_1 (xr.Dataset) –

    dem_1 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

  • dem_2 (xr.Dataset) –

    dem_2 xr.DataSet containing :

    • image : 2D (row, col) xr.DataArray float32

    • georef_transform: 1D (trans_len) xr.DataArray

    • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Returns:

curvature xr.DataSet containing :

  • image : 2D (row, col) xr.DataArray float32

  • georef_transform: 1D (trans_len) xr.DataArray

  • classification_layer_masks : 3D (row, col, indicator) xr.DataArray

Return type:

xr.Dataset