Raster analysis =============== .. only:: html .. contents:: :local: :depth: 1 .. _qgiscellstatistics: Cell statistics --------------- Computes per-cell statistics based on input raster layers and for each cell writes the resulting statistics to an output raster. At each cell location, the output value is defined as a function of all overlaid cell values of the input rasters. By default, a NoData cell in ANY of the input layers will result in a NoData cell in the output raster. If the :guilabel:`Ignore NoData values` option is checked, then NoData inputs will be ignored in the statistic calculation. This may result in NoData output for locations where all cells are NoData. The :guilabel:`Reference layer` parameter specifies an existing raster layer to use as a reference when creating the output raster. The output raster will have the same extent, CRS, and pixel dimensions as this layer. **Calculation details:** Input raster layers that do not match the cell size of the reference raster layer will be resampled using ``nearest neighbor resampling``. The output raster data type will be set to the most complex data type present in the input datasets except when using the functions ``Mean``, ``Standard deviation`` and ``Variance`` (data type is always ``Float32`` or ``Float64`` depending on input float type) or ``Count`` and ``Variety`` (data type is always ``Int32``). - ``Count``: The count statistic will always result in the number of cells without NoData values at the current cell location. - ``Median``: If the number of input layers is even, the median will be calculated as the arithmetic mean of the two middle values of the ordered cell input values. - ``Minority/Majority``: If no unique minority or majority could be found, the result is NoData, except all input cell values are equal. .. figure:: img/cell_statistics_all_stats.png :align: center Example with all the statistic functions. ``NoData`` cells (grey) are taken into account. Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input layers** - ``INPUT`` - [raster] [list] - Input raster layers * - **Statistic** - ``STATISTIC`` - [enumeration] Default: 0 - Available statistics. Options: * 0 --- Sum * 1 --- Count * 2 --- Mean * 3 --- Median * 4 --- Standard deviation * 5 --- Variance * 6 --- Minimum * 7 --- Maximum * 8 --- Minority (least common value) * 9 --- Majority (most common value) * 10 --- Range (max - min) * 11 --- Variety (unique value count) * - **Ignore NoData values** - ``IGNORE_NODATA`` - [boolean] Default: True - Calculate statistics also for all cells stacks, ignoring NoData occurrence. * - **Reference layer** - ``REF_LAYER`` - [raster] - The reference layer to create the output layer from (extent, CRS, pixel dimensions) * - **Output no data value** Optional - ``OUTPUT_NO_DATA_VALUE`` - [number] Default: -9999.0 - Value to use for nodata in the output layer * - **Output layer** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Output raster** - ``OUTPUT`` - [raster] - Output raster layer containing the result * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer Python code ........... **Algorithm ID**: ``qgis:cellstatistics`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisequaltofrequency: Equal to frequency ------------------ Evaluates on a cell-by-cell basis the frequency (number of times) the values of an input stack of rasters are equal to the value of a value layer. The output raster extent and resolution are defined by the input raster layer and is always of ``Int32`` type. If multiband rasters are used in the data raster stack, the algorithm will always perform the analysis on the first band of the rasters - use GDAL to use other bands in the analysis. The output NoData value can be set manually. .. figure:: img/equaltofrequency.png :align: center For each cell in the output raster, the value represents the number of times that the corresponding cells in the list of rasters are the same as the value raster. ``NoData`` cells (grey) are taken into account. .. seealso:: :ref:`qgisgreaterthanfrequency`, :ref:`qgislessthanfrequency` .. **frequencyparams** .. FYI, the next params description is shared with Greater/Less than frequency algorithms Parameters .......... Basic parameters ^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input value raster** - ``INPUT_VALUE_RASTER`` - [raster] - The input value layer serves as reference layer for the sample layers * - **Value raster band** - ``INPUT_VALUE_RASTER_BAND`` - [raster band] Default: The first band of the raster layer - Select the band you want to use as sample * - **Input raster layers** - ``INPUT_RASTERS`` - [raster] [list] - Raster layers to evaluate. If multiband rasters are used in the data raster stack, the algorithm will always perform the analysis on the first band of the rasters * - **Ignore NoData values** - ``IGNORE_NODATA`` - [boolean] Default: False - If unchecked, any NoData cells in the value raster or the data layer stack will result in a NoData cell in the output raster * - **Output layer** - ``OUTPUT`` - [same as input] Default: ``[Save to temporary file]`` - Specification of the output raster. One of: .. include:: qgis_algs_include.rst :start-after: **file_output_types** :end-before: **end_file_output_types** Advanced parameters ^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Output no data value** Optional - ``OUTPUT_NO_DATA_VALUE`` - [number] Default: -9999.0 - Value to use for nodata in the output layer Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Output layer** - ``OUTPUT`` - [raster] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [string] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [string] - The spatial extent of the output raster layer * - **Count of cells with equal value occurrences** - ``FOUND_LOCATIONS_COUNT`` - [number] - * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [number] - The number of rows in the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer * - **Mean frequency at valid cell locations** - ``MEAN_FREQUENCY_PER_LOCATION`` - [number] - * - **Count of value occurrences** - ``OCCURRENCE_COUNT`` - [number] - * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The number of columns in the output raster layer .. **endfrequencyparams** Python code ........... **Algorithm ID**: ``native:equaltofrequency`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisfuzzifyrastergaussianmembership: Fuzzify raster (gaussian membership) ------------------------------------ Transforms an input raster to a fuzzified raster by assigning a membership value to each pixel, using a Gaussian membership function. Membership values range from 0 to 1. In the fuzzified raster, a value of 0 implies no membership of the defined fuzzy set, whereas a value of 1 means full membership. The gaussian membership function is defined as |gaussian_formula|, where *f1* is the spread and *f2* the midpoint. .. figure:: img/gaussianimage.png :align: center Fuzzify raster example. Input raster source: Land Tirol - data.tirol.gv.at. .. seealso:: :ref:`qgisfuzzifyrasterlargemembership` :ref:`qgisfuzzifyrasterlinearmembership`, :ref:`qgisfuzzifyrasternearmembership`, :ref:`qgisfuzzifyrasterpowermembership`, :ref:`qgisfuzzifyrastersmallmembership` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Input raster layer * - **Band Number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that you want to fuzzify. * - **Function midpoint** - ``FUZZYMIDPOINT`` - [number] Default: 10 - Midpoint of the gaussian function * - **Function spread** - ``FUZZYSPREAD`` - [number] Default: 0.01 - Spread of the gaussian function * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer Python code ........... **Algorithm ID**: ``qgis:fuzzifyrastergaussianmembership`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisfuzzifyrasterlargemembership: Fuzzify raster (large membership) --------------------------------- Transforms an input raster to a fuzzified raster by assigning a membership value to each pixel, using a Large membership function. Membership values range from 0 to 1. In the fuzzified raster, a value of 0 implies no membership of the defined fuzzy set, whereas a value of 1 means full membership. The large membership function is defined as |fuzzy_large_formula|, where *f1* is the spread and *f2* the midpoint. .. seealso:: :ref:`qgisfuzzifyrastergaussianmembership`, :ref:`qgisfuzzifyrasterlinearmembership`, :ref:`qgisfuzzifyrasternearmembership`, :ref:`qgisfuzzifyrasterpowermembership`, :ref:`qgisfuzzifyrastersmallmembership` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Input raster layer * - **Band Number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that you want to fuzzify. * - **Function midpoint** - ``FUZZYMIDPOINT`` - [number] Default: 50 - Midpoint of the large function * - **Function spread** - ``FUZZYSPREAD`` - [number] Default: 5 - Spread of the large function * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer Python code ........... **Algorithm ID**: ``qgis:fuzzifyrasterlargemembership`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisfuzzifyrasterlinearmembership: Fuzzify raster (linear membership) ---------------------------------- Transforms an input raster to a fuzzified raster by assigning a membership value to each pixel, using a Linear membership function. Membership values range from 0 to 1. In the fuzzified raster, a value of 0 implies no membership of the defined fuzzy set, whereas a value of 1 means full membership. The linear function is defined as |fuzzy_linear_formula|, where *a* is the low bound and *b* the high bound. This equation assigns membership values using a linear transformation for pixel values between the low and high bounds. Pixels values smaller than the low bound are given 0 membership whereas pixel values greater than the high bound are given 1 membership. .. seealso:: :ref:`qgisfuzzifyrastergaussianmembership`, :ref:`qgisfuzzifyrasterlargemembership`, :ref:`qgisfuzzifyrasternearmembership`, :ref:`qgisfuzzifyrasterpowermembership`, :ref:`qgisfuzzifyrastersmallmembership` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Input raster layer * - **Band Number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that you want to fuzzify. * - **Low fuzzy membership bound** - ``FUZZYLOWBOUND`` - [number] Default: 0 - Low bound of the linear function * - **High fuzzy membership bound** - ``FUZZYHIGHBOUND`` - [number] Default: 1 - High bound of the linear function * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer Python code ........... **Algorithm ID**: ``qgisfuzzifyrasterlinearmembership`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisfuzzifyrasternearmembership: Fuzzify raster (near membership) -------------------------------- Transforms an input raster to a fuzzified raster by assigning a membership value to each pixel, using a Near membership function. Membership values range from 0 to 1. In the fuzzified raster, a value of 0 implies no membership of the defined fuzzy set, whereas a value of 1 means full membership. The near membership function is defined as |near_formula|, where *f1* is the spread and *f2* the midpoint. .. seealso:: :ref:`qgisfuzzifyrastergaussianmembership`, :ref:`qgisfuzzifyrasterlargemembership`, :ref:`qgisfuzzifyrasterlinearmembership`, :ref:`qgisfuzzifyrasterpowermembership`, :ref:`qgisfuzzifyrastersmallmembership` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Input raster layer * - **Band Number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that you want to fuzzify. * - **Function midpoint** - ``FUZZYMIDPOINT`` - [number] Default: 50 - Midpoint of the near function * - **Function spread** - ``FUZZYSPREAD`` - [number] Default: 0.01 - Spread of the near function * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer Python code ........... **Algorithm ID**: ``qgis:fuzzifyrasternearmembership`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisfuzzifyrasterpowermembership: Fuzzify raster (power membership) --------------------------------- Transforms an input raster to a fuzzified raster by assigning a membership value to each pixel, using a Power membership function. Membership values range from 0 to 1. In the fuzzified raster, a value of 0 implies no membership of the defined fuzzy set, whereas a value of 1 means full membership. The power function is defined as |power_formula|, where *a* is the low bound, *b* is the high bound, and *f1* the exponent. This equation assigns membership values using the power transformation for pixel values between the low and high bounds. Pixels values smaller than the low bound are given 0 membership whereas pixel values greater than the high bound are given 1 membership. .. seealso:: :ref:`qgisfuzzifyrastergaussianmembership`, :ref:`qgisfuzzifyrasterlargemembership`, :ref:`qgisfuzzifyrasterlinearmembership`, :ref:`qgisfuzzifyrasternearmembership`, :ref:`qgisfuzzifyrastersmallmembership` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Input raster layer * - **Band Number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that you want to fuzzify. * - **Low fuzzy membership bound** - ``FUZZYLOWBOUND`` - [number] Default: 0 - Low bound of the power function * - **High fuzzy membership bound** - ``FUZZYHIGHBOUND`` - [number] Default: 1 - High bound of the power function * - **High fuzzy membership bound** - ``FUZZYEXPONENT`` - [number] Default: 2 - Exponent of the power function * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer Python code ........... **Algorithm ID**: ``qgisfuzzifyrasterpowermembership`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisfuzzifyrastersmallmembership: Fuzzify raster (small membership) --------------------------------- Transforms an input raster to a fuzzified raster by assigning a membership value to each pixel, using a Small membership function. Membership values range from 0 to 1. In the fuzzified raster, a value of 0 implies no membership of the defined fuzzy set, whereas a value of 1 means full membership. The small membership function is defined as |small_formula|, where *f1* is the spread and *f2* the midpoint. .. seealso:: :ref:`qgisfuzzifyrastergaussianmembership`, :ref:`qgisfuzzifyrasterlargemembership` :ref:`qgisfuzzifyrasterlinearmembership`, :ref:`qgisfuzzifyrasternearmembership`, :ref:`qgisfuzzifyrasterpowermembership` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Input raster layer * - **Band Number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that you want to fuzzify. * - **Function midpoint** - ``FUZZYMIDPOINT`` - [number] Default: 50 - Midpoint of the small function * - **Function spread** - ``FUZZYSPREAD`` - [number] Default: 5 - Spread of the small function * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Fuzzified raster** - ``OUTPUT`` - [same as input] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [extent] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer Python code ........... **Algorithm ID**: ``qgisfuzzifyrastersmallmembership`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisgreaterthanfrequency: Greater than frequency ---------------------- Evaluates on a cell-by-cell basis the frequency (number of times) the values of an input stack of rasters are equal to the value of a value raster. The output raster extent and resolution is defined by the input raster layer and is always of ``Int32`` type. If multiband rasters are used in the data raster stack, the algorithm will always perform the analysis on the first band of the rasters - use GDAL to use other bands in the analysis. The output NoData value can be set manually. .. figure:: img/greaterthanfrequency.png :align: center For each cell in the output raster, the value represents the number of times that the corresponding cells in the list of rasters are greater than the value raster. ``NoData`` cells (grey) are taken into account. .. seealso:: :ref:`qgisequaltofrequency`, :ref:`qgislessthanfrequency` .. The params description comes from the "Equal to frequency" algorithm .. include:: ./rasteranalysis.rst :start-after: .. **frequencyparams** :end-before: .. **endfrequencyparams** Python code ........... **Algorithm ID**: ``native:greaterthanfrequency`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgishighestpositioninrasterstack: Highest position in raster stack -------------------------------- Evaluates on a cell-by-cell basis the position of the raster with the highest value in a stack of rasters. Position counts start with 1 and range to the total number of input rasters. The order of the input rasters is relevant for the algorithm. If multiple rasters feature the highest value, the first raster will be used for the position value. If multiband rasters are used in the data raster stack, the algorithm will always perform the analysis on the first band of the rasters - use GDAL to use other bands in the analysis. Any NoData cells in the raster layer stack will result in a NoData cell in the output raster unless the "ignore NoData" parameter is checked. The output NoData value can be set manually. The output rasters extent and resolution is defined by a reference raster layer and is always of ``Int32`` type. .. figure:: img/highestposition.png :align: center .. seealso:: :ref:`qgislowestpositioninrasterstack` .. **positionparams** Parameters .......... Basic parameters ^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input raster layers** - ``INPUT_RASTERS`` - [raster] [list] - List of raster layers to compare with * - **Reference layer** - ``REFERENCE_LAYER`` - [raster] - The reference layer for the output layer creation (extent, CRS, pixel dimensions) * - **Ignore NoData values** - ``IGNORE_NODATA`` - [boolean] Default: False - If unchecked, any NoData cells in the data layer stack will result in a NoData cell in the output raster * - **Output layer** - ``OUTPUT`` - [raster] Default: ``[Save to temporary file]`` - Specification of the output raster containing the result. One of: .. include:: qgis_algs_include.rst :start-after: **file_output_types** :end-before: **end_file_output_types** Advanced parameters ^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Output no data value** - ``OUTPUT_NODATA_VALUE`` - [number] Default: -9999.0 - Value to use for nodata in the output layer Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Output layer** - ``OUTPUT`` - [raster] - Output raster layer containing the result * - **CRS authority identifier** - ``CRS_AUTHID`` - [string] - The coordinate reference system of the output raster layer * - **Extent** - ``EXTENT`` - [string] - The spatial extent of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The number of columns in the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The number of rows in the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer .. **endpositionparams** Python code ........... **Algorithm ID**: ``native:highestpositioninrasterstack`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgislessthanfrequency: Less than frequency ------------------- Evaluates on a cell-by-cell basis the frequency (number of times) the values of an input stack of rasters are less than the value of a value raster. The output raster extent and resolution is defined by the input raster layer and is always of ``Int32`` type. If multiband rasters are used in the data raster stack, the algorithm will always perform the analysis on the first band of the rasters - use GDAL to use other bands in the analysis. The output NoData value can be set manually. .. figure:: img/lessthanfrequency.png :align: center For each cell in the output raster, the value represents the number of times that the corresponding cells in the list of rasters are less than the value raster. ``NoData`` cells (grey) are taken into account. .. seealso:: :ref:`qgisequaltofrequency`, :ref:`qgisgreaterthanfrequency` .. The params description comes from the "Equal to frequency" algorithm .. include:: ./rasteranalysis.rst :start-after: .. **frequencyparams** :end-before: .. **endfrequencyparams** Python code ........... **Algorithm ID**: ``native:lessthanfrequency`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgislowestpositioninrasterstack: Lowest position in raster stack ------------------------------- Evaluates on a cell-by-cell basis the position of the raster with the lowest value in a stack of rasters. Position counts start with 1 and range to the total number of input rasters. The order of the input rasters is relevant for the algorithm. If multiple rasters feature the lowest value, the first raster will be used for the position value. If multiband rasters are used in the data raster stack, the algorithm will always perform the analysis on the first band of the rasters - use GDAL to use other bands in the analysis. Any NoData cells in the raster layer stack will result in a NoData cell in the output raster unless the "ignore NoData" parameter is checked. The output NoData value can be set manually. The output rasters extent and resolution is defined by a reference raster layer and is always of ``Int32`` type. .. figure:: img/lowestposition.png :align: center .. seealso:: :ref:`qgishighestpositioninrasterstack` .. The params description comes from the "Highest position" algorithm .. include:: ./rasteranalysis.rst :start-after: .. **positionparams** :end-before: .. **endpositionparams** Python code ........... **Algorithm ID**: ``native:lowestpositioninrasterstack`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrasterbooleanand: Raster boolean AND ----------------------- Calculates the boolean ``AND`` for a set of input rasters. If all of the input rasters have a non-zero value for a pixel, that pixel will be set to ``1`` in the output raster. If any of the input rasters have ``0`` values for the pixel it will be set to ``0`` in the output raster. The reference layer parameter specifies an existing raster layer to use as a reference when creating the output raster. The output raster will have the same extent, CRS, and pixel dimensions as this layer. By default, a nodata pixel in ANY of the input layers will result in a nodata pixel in the output raster. If the :guilabel:`Treat nodata values as false` option is checked, then nodata inputs will be treated the same as a ``0`` input value. .. seealso:: :ref:`qgisrasterbooleanor` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input layers** - ``INPUT`` - [raster] [list] - List of input raster layers * - **Reference layer** - ``REF_LAYER`` - [raster] - The reference layer to create the output layer from (extent, CRS, pixel dimensions) * - **Treat nodata values as false** - ``NODATA_AS_FALSE`` - [boolean] Default: False - Treat nodata values in the input files as 0 when performing the operation * - **Output no data value** - ``NO_DATA`` - [number] Default: -9999.0 - Value to use for nodata in the output layer * - **Output data type** - ``DATA_TYPE`` - [enumeration] Default: 5 - Output raster data type. Options: * 0 --- Byte * 1 --- Int16 * 2 --- UInt16 * 3 --- UInt32 * 4 --- Int32 * 5 --- Float32 * 6 --- Float64 * 7 --- CInt16 * 8 --- CInt32 * 9 --- CFloat32 * 10 --- CFloat64 * - **Output layer** - ``OUTPUT`` - [raster] - Output raster layer Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Extent** - ``EXTENT`` - [extent] - The extent of the output raster layer * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer * - **NODATA pixel count** - ``NODATA_PIXEL_COUNT`` - [integer] - The count of nodata pixels in the output raster layer * - **True pixel count** - ``TRUE_PIXEL_COUNT`` - [integer] - The count of True pixels (value = 1) in the output raster layer * - **False pixel count** - ``FALSE_PIXEL_COUNT`` - [integer] - The count of False pixels (value = 0) in the output raster layer * - **Output layer** - ``OUTPUT`` - [raster] - Output raster layer containing the result Python code ........... **Algorithm ID**: ``qgis:rasterbooleanand`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrasterbooleanor: Raster boolean OR ---------------------- Calculates the boolean ``OR`` for a set of input rasters. If all of the input rasters have a zero value for a pixel, that pixel will be set to ``0`` in the output raster. If any of the input rasters have ``1`` values for the pixel it will be set to ``1`` in the output raster. The reference layer parameter specifies an existing raster layer to use as a reference when creating the output raster. The output raster will have the same extent, CRS, and pixel dimensions as this layer. By default, a nodata pixel in ANY of the input layers will result in a nodata pixel in the output raster. If the :guilabel:`Treat nodata values as false` option is checked, then nodata inputs will be treated the same as a ``0`` input value. .. seealso:: :ref:`qgisrasterbooleanand` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input layers** - ``INPUT`` - [raster] [list] - List of input raster layers * - **Reference layer** - ``REF_LAYER`` - [raster] - The reference layer to create the output layer from (extent, CRS, pixel dimensions) * - **Treat nodata values as false** - ``NODATA_AS_FALSE`` - [boolean] Default: False - Treat nodata values in the input files as 0 when performing the operation * - **Output no data value** - ``NO_DATA`` - [number] Default: -9999.0 - Value to use for nodata in the output layer * - **Output data type** - ``DATA_TYPE`` - [enumeration] Default: 5 - Output raster data type. Options: * 0 --- Byte * 1 --- Int16 * 2 --- UInt16 * 3 --- UInt32 * 4 --- Int32 * 5 --- Float32 * 6 --- Float64 * 7 --- CInt16 * 8 --- CInt32 * 9 --- CFloat32 * 10 --- CFloat64 * - **Output layer** - ``OUTPUT`` - [raster] - Output raster layer Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Extent** - ``EXTENT`` - [extent] - The extent of the output raster layer * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - The coordinate reference system of the output raster layer * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [integer] - The width in pixels of the output raster layer * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [integer] - The height in pixels of the output raster layer * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [integer] - The count of pixels in the output raster layer * - **NODATA pixel count** - ``NODATA_PIXEL_COUNT`` - [integer] - The count of nodata pixels in the output raster layer * - **True pixel count** - ``TRUE_PIXEL_COUNT`` - [integer] - The count of True pixels (value = 1) in the output raster layer * - **False pixel count** - ``FALSE_PIXEL_COUNT`` - [integer] - The count of False pixels (value = 0) in the output raster layer * - **Output layer** - ``OUTPUT`` - [raster] - Output raster layer containing the result Python code ........... **Algorithm ID**: ``qgis:rasterbooleanor`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrastercalculator: Raster calculator ----------------- Performs algebraic operations using raster layers. The resulting layer will have its values computed according to an expression. The expression can contain numerical values, operators and references to any of the layers in the current project. .. note:: When using the calculator in :ref:`processing_batch` or from the :ref:`console` the files to use have to be specified. The corresponding layers are referred using the base name of the file (without the full path). For instance, if using a layer at ``path/to/my/rasterfile.tif``, the first band of that layer will be referred as ``rasterfile.tif@1``. .. seealso:: :ref:`label_raster_calc` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Layers** - GUI only - - Shows the list of all raster layers loaded in the legend. These can be used to fill the expression box (double click to add). Raster layers are referred by their name and the number of the band: ``layer_name@band_number``. For instance, the first band from a layer named ``DEM`` will be referred as ``DEM@1``. * - **Operators** - GUI only - - Contains some calculator like buttons that can be used to fill the expression box. * - **Expression** - ``EXPRESSION`` - [string] - Expression that will be used to calculate the output raster layer. You can use the operator buttons provided to type directly the expression in this box. * - **Predefined expressions** - GUI only - - You can use the predefined ``NDVI`` expression or you can define new expressions for calculations. The :guilabel:`Add...` button loads a defined expression (and lets you set the parameters). The :guilabel:`Save...` button lets you define a new expression. * - **Reference layer(s) (used for automated extent, cellsize, and CRS)** Optional - ``LAYERS`` - [raster] [list] - Layer(s) that will be used to fetch extent, cell size and CRS. By choosing the layer in this box you avoid filling in all the other parameters by hand. Raster layers are referred by their name and the number of the band: ``layer_name@band_number``. For instance, the first band from a layer named ``DEM`` will be referred as ``DEM@1``. * - **Cell size (use 0 or empty to set it automatically)** Optional - ``CELLSIZE`` - [number] - Cell size of the output raster layer. If the cell size is not specified, the minimum cell size of the selected reference layer(s) will be used. The cell size will be the same for the X and Y axes. * - **Output extent (xmin, xmax, ymin, ymax)** Optional - ``EXTENT`` - [extent] - Extent of the output raster layer. If the extent is not specified, the minimum extent that covers all the selected reference layers will be used. * - **Output CRS** Optional - ``CRS`` - [crs] - CRS of the output raster layer. If the output CRS is not specified, the CRS of the first reference layer will be used. * - **Output** - ``OUTPUT`` - [raster] Default: ``[Save to temporary file]`` - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Output** - ``OUTPUT`` - [raster] - Output raster file with the calculated values. Python code ........... **Algorithm ID**: ``qgis:rastercalculator`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrasterlayerstatistics: Raster layer statistics ----------------------- Calculates basic statistics from the values in a given band of the raster layer. The output is loaded in the :menuselection:`Processing --> Results viewer` menu. Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Input layer** - ``INPUT`` - [raster] - Input raster layer * - **Band number** - ``BAND`` - [raster band] Default: The first band of the input layer - If the raster is multiband, choose the band you want to get statistics for. * - **Output** - ``OUTPUT_HTML_FILE`` - [html] Default: ``[Save to temporary file]`` - Specification of the output file: * Skip Output * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Maximum value** - ``MAX`` - [number] - * - **Mean value** - ``MEAN`` - [number] - * - **Minimum value** - ``MIN`` - [number] - * - **Output** - ``OUTPUT_HTML_FILE`` - [html] - The output file contains the following information: * Analyzed file: path of the raster layer * Minimum value: minimum value of the raster * Maximum value: maximum value of the raster * Range: difference between the maximum and minimum values * Sum: total sum of the values * Mean value: mean of the values * Standard deviation: standard deviation of the values * Sum of the squares: sum of the squared differences of each observation from the overall mean * - **Range** - ``RANGE`` - [number] - * - **Standard deviation** - ``STD_DEV`` - [number] - * - **Sum** - ``SUM`` - [number] - * - **Sum of the squares** - ``SUM_OF_SQUARES`` - [number] - Python code ........... **Algorithm ID**: ``qgis:rasterlayerstatistics`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrasterlayeruniquevaluesreport: Raster layer unique values report --------------------------------- Returns the count and area of each unique value in a given raster layer. Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input layer** - ``INPUT`` - [raster] - Input raster layer * - **Band number** - ``BAND`` - [raster band] Default: The first band of the input layer - If the raster is multiband, choose the band you want to get statistics for. * - **Unique values report** - ``OUTPUT_HTML_FILE`` - [file] Default: ``[Save to temporary file]`` - Specification of the output file: * Skip Output * Save to a Temporary File * Save to File... The file encoding can also be changed here. * - **Unique values table** - ``OUTPUT_TABLE`` - [table] Default: ``[Skip output]`` - Specification of the table for unique values: * Skip Output * Create Temporary Layer * Save to File... * Save to GeoPackage... * Save to PostGIS Table...... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - * - **Extent** - ``EXTENT`` - [extent] - * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [number] - * - **NODATA pixel count** - ``NODATA_PIXEL_COUNT`` - [number] - * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [number] - * - **Unique values report** - ``OUTPUT_HTML_FILE`` - [html] - The output HTML file contains the following information: * Analyzed file: the path of the raster layer * Extent: xmin, ymin, xmax, ymax coordinates of the extent * Projection: projection of the layer * Width in pixels: number of columns and pixel width size * Height in pixels: number of rows and pixel width size * Total pixel count: count of all the pixels * NODATA pixel count: count of pixels with NODATA value * - **Unique values table** - ``OUTPUT_TABLE`` - [table] - A table with three columns: * *value*: pixel value * *count*: count of pixels with this value * *m*\ :sup:`2`: total area in square meters of pixels with this value. * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [number] - Python code ........... **Algorithm ID**: ``qgis:rasterlayeruniquevaluesreport`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrasterlayerzonalstats: Raster layer zonal statistics ---------------------------------- Calculates statistics for a raster layer's values, categorized by zones defined in another raster layer. .. seealso:: :ref:`qgiszonalstatisticsfb` Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input Layer** - ``INPUT`` - [raster] - Input raster layer * - **Band number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband choose the band for which you want to calculate the statistics. * - **Zones layer** - ``ZONES`` - [raster] - Raster layer defining zones. Zones are given by contiguous pixels having the same pixel value. * - **Zones band number** - ``ZONES_BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that defines the zones * - **Reference layer** Optional - ``REF_LAYER`` - [enumeration] Default: 0 - Raster layer used to calculate the centroids that will be used as reference when determining the zones in the output layer. One of: * 0 --- Input layer * 1 --- Zones layer * - **Statistics** - ``OUTPUT_TABLE`` - [table] - Table with the calculated statistics Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **CRS authority identifier** - ``CRS_AUTHID`` - [crs] - * - **Extent** - ``EXTENT`` - [extent] - * - **Height in pixels** - ``HEIGHT_IN_PIXELS`` - [number] - * - **NODATA pixel count** - ``NODATA_PIXEL_COUNT`` - [number] - * - **Statistics** - ``OUTPUT_TABLE`` - [table] - The output layer contains the following information **for each zone**: * Area: the area in square raster units in the zone; * Sum: the total sum of the pixel values in the zone; * Count: the number of pixels in the zone; * Min: the minimum pixel value in the zone; * Max: the maximum pixel value in the zone; * Mean: the mean of the pixel values in the zone; * - **Total pixel count** - ``TOTAL_PIXEL_COUNT`` - [number] - * - **Width in pixels** - ``WIDTH_IN_PIXELS`` - [number] - Python code ........... **Algorithm ID**: ``qgis:rasterlayerzonalstats`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrastersurfacevolume: Raster surface volume -------------------------- Calculates the volume under a raster surface relative to a given base level. This is mainly useful for Digital Elevation Models (DEM). Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **INPUT layer** - ``INPUT`` - [raster] - Input raster, representing a surface * - **Band number** - ``BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band that shall define the surface. * - **Base level** - ``LEVEL`` - [number] Default: 0.0 - Define a base or reference value. This base is used in the volume calculation according to the ``Method`` parameter (see below). * - **Method** - ``METHOD`` - [enumeration] Default: 0 - Define the method for the volume calculation given by the difference between the raster pixel value and the ``Base level``. Options: * 0 --- Count Only Above Base Level: only pixels above the base level will add to the volume. * 1 --- Count Only Below Base Level: only pixels below the base level will add to the volume. * 2 --- Subtract Volumes Below Base level: pixels above the base level will add to the volume, pixels below the base level will subtract from the volume. * 3 --- Add Volumes Below Base level: Add the volume regardless whether the pixel is above or below the base level. This is equivalent to sum the absolute values of the difference between the pixel value and the base level. * - **Surface volume report** - ``OUTPUT_HTML_FILE`` - [html] Default: ``[Save to temporary file]`` - Specification of the output HTML report. One of: * Skip output * Save to Temporary File * Save to File... The file encoding can also be changed here. * - **Surface volume table** - ``OUTPUT_TABLE`` - [table] Default: ``[Skip output]`` - Specification of the output table. One of: * Skip output * Create Temporary Layer (``TEMPORARY_OUTPUT``) * Save to File... * Save to Geopackage... * Save to PostGIS Table... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Volume** - ``VOLUME`` - [number] - The calculated volume * - **Area** - ``AREA`` - [number] - The area in square map units * - **Pixel_count** - ``PIXEL_COUNT`` - [number] - The total number of pixels that have been analyzed * - **Surface volume report** - ``OUTPUT_HTML_FILE`` - [html] - The output report (containing volume, area and pixel count) in HTML format * - **Surface volume table** - ``OUTPUT_TABLE`` - [table] - The output table (containing volume, area and pixel count) Python code ........... **Algorithm ID**: ``qgis:rastersurfacevolume`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisreclassifybylayer: Reclassify by layer ------------------- Reclassifies a raster band by assigning new class values based on the ranges specified in a vector table. Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Raster layer** - ``INPUT_RASTER`` - [raster] - Raster layer to reclassify * - **Band number** - ``RASTER_BAND`` - [raster band] Default: The first band of the raster layer - If the raster is multiband, choose the band you want to reclassify. * - **Layer containing class breaks** - ``INPUT_TABLE`` - [vector: any] - Vector layer containing the values to use for classification. * - **Minimum class value field** - ``MIN_FIELD`` - [tablefield: numeric] - Field with the minimum value of the range for the class. * - **Maximum class value field** - ``MAX_FIELD`` - [tablefield: numeric] - Field with the maximum value of the range for the class. * - **Output value field** - ``VALUE_FIELD`` - [tablefield: numeric] - Field with the value that will be assigned to the pixels that fall in the class (between the corresponding min and max values). * - **Output no data value** - ``NO_DATA`` - [number] Default: -9999.0 - Value to apply to no data values. * - **Range boundaries** - ``RANGE_BOUNDARIES`` - [enumeration] Default: 0 - Defines comparison rules for the classification. Options: * 0 --- min < value <= max * 1 --- min <= value < max * 2 --- min <= value <= max * 3 --- min < value < max * - **Use no data when no range matches value** - ``NODATA_FOR_MISSING`` - [boolean] Default: False - Values that do not belong to a class will result in the no data value. If False, the original value is kept. * - **Output data type** - ``DATA_TYPE`` - [enumeration] Default: 5 - Defines the data type of the output raster file. Options: * 0 --- Byte * 1 --- Int16 * 2 --- UInt16 * 3 --- UInt32 * 4 --- Int32 * 5 --- Float32 * 6 --- Float64 * 7 --- CInt16 * 8 --- CInt32 * 9 --- CFloat32 * 10 --- CFloat64 * - **Reclassified raster** - ``OUTPUT`` - [raster] - Specification of the output raster. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here. Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Reclassified raster** - ``OUTPUT`` - [raster] - Output raster layer with reclassified band values Python code ........... **Algorithm ID**: ``qgis:reclassifybylayer`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisreclassifybytable: Reclassify by table ------------------- Reclassifies a raster band by assigning new class values based on the ranges specified in a fixed table. Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Raster layer** - ``INPUT_RASTER`` - [raster] - Raster layer to reclassify * - **Band number** - ``RASTER_BAND`` - [raster band] Default: 1 - Raster band for which you want to recalculate values. * - **Reclassification table** - ``TABLE`` - [table] - A 3-columns table to fill with the values to set the boundaries of each class (``Minimum`` and ``Maximum``) and the new ``Value`` to assign to the band values that fall in the class. * - **Output no data value** - ``NO_DATA`` - [number] Default: -9999.0 - Value to apply to no data values. * - **Range boundaries** - ``RANGE_BOUNDARIES`` - [enumeration] Default: 0 - Defines comparison rules for the classification. Options: * 0 --- min < value <= max * 1 --- min <= value < max * 2 --- min <= value <= max * 3 --- min < value < max * - **Use no data when no range matches value** - ``NODATA_FOR_MISSING`` - [boolean] Default: False - Applies the no data value to band values that do not fall in any class. If False, the original value is kept. * - **Output data type** - ``DATA_TYPE`` - [enumeration] Default: 5 - Defines the format of the output raster file. Options: * 0 --- Byte * 1 --- Int16 * 2 --- UInt16 * 3 --- UInt32 * 4 --- Int32 * 5 --- Float32 * 6 --- Float64 * 7 --- CInt16 * 8 --- CInt32 * 9 --- CFloat32 * 10 --- CFloat64 * - **Reclassified raster** - ``OUTPUT`` - [raster] Default: '[Save to temporary file]' - Specification of the output raster layer. One of: * Save to a Temporary File * Save to File... The file encoding can also be changed here Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Reclassified raster** - ``OUTPUT`` - [raster] Default: '[Save to temporary file]' - The output raster layer. Python code ........... **Algorithm ID**: ``qgis:reclassifybytable`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrescaleraster: Rescale raster -------------- Rescales raster layer to a new value range, while preserving the shape (distribution) of the raster's histogram (pixel values). Input values are mapped using a linear interpolation from the source raster's minimum and maximum pixel values to the destination minimum and miximum pixel range. By default the algorithm preserves the original NODATA value, but there is an option to override it. .. figure:: img/rescale_raster.png :align: center Rescaling values of a raster layer from [0 - 50] to [100 - 1000] Parameters .......... .. list-table:: :header-rows: 1 :widths: 30 20 20 30 * - Label - Name - Type - Description * - **Input Raster** - ``INPUT`` - [raster] - Raster layer to use for rescaling * - **Band number** - ``Band`` - [raster band] Default: The first band of the input layer - If the raster is multiband, choose a band. * - **New minimum value** - ``MINIMUM`` - [number] Default value: 0.0 - Minimum pixel value to use in the rescaled layer * - **New maximum value** - ``MAXIMUM`` - [number] Default value: 255.0 - Maximum pixel value to use in the rescaled layer * - **New NODATA value** Optional - ``NODATA`` - [number] Default value: Not set - Value to assign to the NODATA pixels. If unset, original NODATA values are preserved. * - **Rescaled** - ``OUTPUT`` - [raster] Default: ``[Save to temporary file]`` - Specification of the output raster layer. One of: .. include:: qgis_algs_include.rst :start-after: **file_output_types** :end-before: **end_file_output_types** Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Rescaled** - ``OUTPUT`` - [raster] - Output raster layer with rescaled band values Python code ........... **Algorithm ID**: ``native:rescaleraster`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisroundrastervalues: Round raster ------------ Rounds the cell values of a raster dataset according to the specified number of decimals. Alternatively, a negative number of decimal places may be used to round values to powers of a base n. For example, with a Base value n of 10 and Decimal places of -1, the algorithm rounds cell values to multiples of 10, -2 rounds to multiples of 100, and so on. Arbitrary base values may be chosen, the algorithm applies the same multiplicative principle. Rounding cell values to multiples of a base n may be used to generalize raster layers. The algorithm preserves the data type of the input raster. Therefore byte/integer rasters can only be rounded to multiples of a base n, otherwise a warning is raised and the raster gets copied as byte/integer raster. .. figure:: img/round_raster.png :align: center Rounding values of a raster Parameters .......... Basic parameters ^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input raster** - ``INPUT`` - [raster] - The raster to process. * - **Band number** - ``BAND`` - [number] Default: 1 - The band of the raster * - **Rounding direction** - ``ROUNDING_DIRECTION`` - [list] Default: 1 - How to choose the target rounded value. Options are: 0 - Round up 1 - Round to nearest 2 - Round down * - **Number of decimals places** - ``DECIMAL_PLACES`` - [number] Default: 2 - Number of decimals places to round to. Use negative values to round cell values to a multiple of a base n * - **Output raster** - ``OUTPUT`` - [raster] Default: ``[Save to temporary file]`` - Specification of the output file. One of: .. include:: qgis_algs_include.rst :start-after: **file_output_types** :end-before: **end_file_output_types** Advanced parameters ^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Base n for rounding to multiples of n** - ``BASE_N`` - [number] Default: 10 - When the ``DECIMAL_PLACES`` parameter is negative, raster values are rounded to multiples of the base n value Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Output raster** - ``OUTPUT`` - [raster] - The output raster layer with values rounded for the selected band. Python code ........... **Algorithm ID**: ``native:roundrastervalues`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgisrastersampling: Sample raster values -------------------- Extracts raster values at the point locations. If the raster layer is multiband, each band is sampled. The attribute table of the resulting layer will have as many new columns as the raster layer band count. Parameters .......... .. list-table:: :header-rows: 1 :widths: 30 20 20 30 * - Label - Name - Type - Description * - **Input Point Layer** - ``INPUT`` - [vector: point] - Point vector layer to use for sampling * - **Raster Layer to sample** - ``RASTERCOPY`` - [raster] - Raster layer to sample at the given point locations. * - **Output column prefix** - ``COLUMN_PREFIX`` - [string] Default: 'rvalue' - Prefix for the names of the added columns. * - **Sampled Points** Optional - ``OUTPUT`` - [vector: point] Default: ``[Create temporary layer]`` - Specify the output layer containing the sampled values. One of: .. include:: qgis_algs_include.rst :start-after: **layer_output_types** :end-before: **end_layer_output_types** Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Sampled Points** Optional - ``OUTPUT`` - [vector: point] - The output layer containing the sampled values. Python code ........... **Algorithm ID**: ``qgis:rastersampling`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgiszonalhistogram: Zonal histogram --------------- Appends fields representing counts of each unique value from a raster layer contained within polygon features. The output layer attribute table will have as many fields as the unique values of the raster layer that intersects the polygon(s). .. figure:: img/raster_histogram.png :align: center Raster layer histogram example Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Raster layer** - ``INPUT_RASTER`` - [raster] - Input raster layer. * - **Band number** - ``RASTER_BAND`` - [raster band] Default: The first band of the input layer - If the raster is multiband, choose a band. * - **Vector layer containing zones** - ``INPUT_VECTOR`` - [vector: polygon] - Vector polygon layer that defines the zones. * - **Output column prefix** - ``COLUMN_PREFIX`` Optional - [string] Default: 'HISTO\_' - Prefix for the output columns names. * - **Output zones** - ``OUTPUT`` - [vector: polygon] Default: ``[Create temporary layer]`` - Specify the output vector polygon layer. One of: .. include:: qgis_algs_include.rst :start-after: **layer_output_types** :end-before: **end_layer_output_types** Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Output zones** Optional - ``OUTPUT`` - [vector: polygon] Default: ``[Create temporary layer]`` - The output vector polygon layer. Python code ........... **Algorithm ID**: ``qgis:zonalhistogram`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. _qgiszonalstatistics: .. _qgiszonalstatisticsfb: Zonal statistics ---------------- Calculates statistics of a raster layer for each feature of an overlapping polygon vector layer. Prior to QGIS 3.16, the algorithm edited the layer in-place, adding the new statistics fields to it. Now, it outputs a new layer with these statistics. Parameters .......... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 :class: longtable * - Label - Name - Type - Description * - **Input layer** - ``INPUT`` - [vector: polygon] - Vector polygon layer that contains the zones. * - **Raster layer** - ``INPUT_RASTER`` - [raster] - Input raster layer. * - **Raster band** - ``RASTER_BAND`` - [raster band] Default: The first band of the input layer - If the raster is multiband, choose a band for the statistics. * - **Output column prefix** - ``COLUMN_PREFIX`` - [string] Default: '_' - Prefix for the output columns names. * - **Statistics to calculate** - ``STATISTICS`` - [enumeration] [list] Default: [0,1,2] - List of statistical operator for the output. Options: * 0 --- Count * 1 --- Sum * 2 --- Mean * 3 --- Median * 4 --- St. dev. * 5 --- Minimum * 6 --- Maximum * 7 --- Range * 8 --- Minority * 9 --- Majority * 10 --- Variety * 11 --- Variance * - **Zonal Statistics** |316| - ``OUTPUT`` - [vector: polygon] Default: ``[Create temporary layer]`` - Specify the output vector polygon layer. One of: .. include:: qgis_algs_include.rst :start-after: **layer_output_types_append** :end-before: **end_layer_output_types_append** Outputs ....... .. list-table:: :header-rows: 1 :widths: 20 20 20 40 * - Label - Name - Type - Description * - **Zonal Statistics** |316| - ``OUTPUT`` - [vector: polygon] - The zone vector layer with added statistics. Python code ........... **Algorithm ID**: ``qgis:zonalstatisticsfb`` .. include:: qgis_algs_include.rst :start-after: **algorithm_code_section** :end-before: **end_algorithm_code_section** .. |316| replace:: ``NEW in 3.16`` .. |gaussian_formula| image:: img/fuzzy_gaussian_formula.png :height: 1.5em .. |fuzzy_large_formula| image:: img/fuzzy_large_formula.png :height: 3.2em .. |fuzzy_linear_formula| image:: img/fuzzy_linear_formula.png :height: 3.8em .. |near_formula| image:: img/fuzzy_near_formula.png :height: 2.5em .. |power_formula| image:: img/fuzzy_power_formula.png :height: 4.4em .. |small_formula| image:: img/fuzzy_small_formula.png :height: 3.2em