demcompare.dem_processing.dem_processing_methods ================================================ .. py:module:: demcompare.dem_processing.dem_processing_methods .. autoapi-nested-parse:: Mainly contains different DEM processing classes Classes ------- .. autoapisummary:: demcompare.dem_processing.dem_processing_methods.AltiDiff demcompare.dem_processing.dem_processing_methods.AltiDiffSlopeNorm demcompare.dem_processing.dem_processing_methods.AngularDiff demcompare.dem_processing.dem_processing_methods.Ref demcompare.dem_processing.dem_processing_methods.Sec demcompare.dem_processing.dem_processing_methods.RefCurvature demcompare.dem_processing.dem_processing_methods.SecCurvature Module Contents --------------- .. py:class:: AltiDiff(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` Altitude difference between two DEMs .. py:attribute:: type :value: 'alti-diff' .. py:attribute:: fig_title :value: '[REF - SEC] difference' .. py:attribute:: colorbar_title :value: 'Elevation difference (m)' .. py:attribute:: cmap :value: 'bwr' .. py:method:: compute_dems_diff(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Compute altitude difference dem_1 - dem_2 and return it as an xr.Dataset with the dem_2 georeferencing and attributes. :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Compute the difference between dem_1 and dem_2. Add classification layers to the difference. :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:class:: AltiDiffSlopeNorm(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` Altitude difference between two DEMs normalized by the slope .. py:attribute:: type :value: 'alti-diff-slope-norm' .. py:attribute:: fig_title :value: '[REF - SEC] difference normalized by the slope' .. py:attribute:: colorbar_title :value: 'Elevation difference normalized by the slope' .. py:attribute:: cmap :value: 'bwr' .. py:method:: compute_dems_diff_slope_norm(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset 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. :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:method:: dh_compute_normalization_factor(diff: numpy.ndarray, dem: xarray.Dataset, nbins: int = 100) -> numpy.ndarray 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)) :param diff: difference between the ref and sec DEMs :type diff: np.ndarray :param dem: 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 :type dem: xr.Dataset :param nbins: number of bins of the histogram :type nbins: int :return: altitude difference normalized by the slope :rtype: np.ndarray .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Compute the difference between dem_1 and dem_2 normalized by the slope. Add classification layers to the difference. :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:class:: AngularDiff(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` Angular difference between two DEMs .. py:attribute:: type :value: 'angular-diff' .. py:attribute:: fig_title :value: '[REF vs SEC] angular difference' .. py:attribute:: colorbar_title :value: 'Angular difference' .. py:attribute:: cmap :value: 'Reds' .. py:method:: compute_dems_angular_diff(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Compute angular difference dem_1 - dem_2 and return it as an xr.Dataset with the dem_2 georeferencing and attributes. :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:method:: compute_angular_similarity(n_a: numpy.ndarray, n_b: numpy.ndarray) -> numpy.ndarray Compute the angular difference theta (radians) between two vector maps. :param n_a: surface normal vector to first DEM :type n_a: np.ndarray :param n_b: surface normal vector to second DEM :type n_ab: np.ndarray :return: angular difference between the two vectors :rtype: np.ndarray .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Compute the angular difference between dem_1 and dem_2. Add classification layers to the difference. :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:class:: Ref(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` REF DEM .. py:attribute:: type :value: 'ref' .. py:attribute:: fig_title :value: 'REF dem' .. py:attribute:: colorbar_title :value: 'Elevation (m)' .. py:attribute:: cmap :value: 'terrain' .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset = None) -> xarray.Dataset Return dem_1 :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:class:: Sec(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` SEC DEM .. py:attribute:: type :value: 'sec' .. py:attribute:: fig_title :value: 'SEC dem' .. py:attribute:: colorbar_title :value: 'Elevation (m)' .. py:attribute:: cmap :value: 'terrain' .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Return dem_1 :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:class:: RefCurvature(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` Curvature of the REF DEM .. py:attribute:: type :value: 'ref-curvature' .. py:attribute:: fig_title :value: 'REF dem curvature' .. py:attribute:: colorbar_title :value: 'Curvature' .. py:attribute:: cmap :value: 'bwr' .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset = None) -> xarray.Dataset Return the curvature of dem_1 :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset .. py:class:: SecCurvature(parameters: Dict = None) Bases: :py:obj:`demcompare.dem_processing.dem_processing_template.DemProcessingTemplate` Curvature of the SEC DEM .. py:attribute:: type :value: 'sec-curvature' .. py:attribute:: fig_title :value: 'SEC dem curvature' .. py:attribute:: colorbar_title :value: 'Curvature' .. py:attribute:: cmap :value: 'bwr' .. py:method:: process_dem(dem_1: xarray.Dataset, dem_2: xarray.Dataset) -> xarray.Dataset Return the curvature of dem_1 :param 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 :type dem_1: xr.Dataset :param dem_2: 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 :type dem_2: xr.Dataset :return: 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 :rtype: xr.Dataset