pygeoprocessing.geoprocessing_core module

pygeoprocessing.geoprocessing_core.calculate_slope(base_elevation_raster_path_band, target_slope_path, raster_driver_creation_tuple=('GTIFF', ('TILED=YES', 'BIGTIFF=YES', 'COMPRESS=LZW', 'BLOCKXSIZE=256', 'BLOCKYSIZE=256')))

Create a percent slope raster from DEM raster.

Base algorithm is from Zevenbergen & Thorne “Quantitative Analysis of Land Surface Topography” 1987 (https://doi.org/10.1002/esp.3290120107) although it has been modified to include the diagonal pixels by classic finite difference analysis.

For the following notation, we define each pixel’s DEM value by a letter with this spatial scheme:

a b c
d e f
g h i

Then the slope at e is defined at ([dz/dx]^2 + [dz/dy]^2)^0.5

Where:

[dz/dx] = ((c+2f+i)-(a+2d+g)/(8*x_cell_size)
[dz/dy] = ((g+2h+i)-(a+2b+c))/(8*y_cell_size)

In cases where a cell is nodata, we attempt to use the middle cell inline with the direction of differentiation (either in x or y direction). If no inline pixel is defined, we use e and multiply the difference by 2^0.5 to account for the diagonal projection.

Parameters:
  • base_elevation_raster_path_band (string) – a path/band tuple to a raster of height values. (path_to_raster, band_index) Paths may use any GDAL-supported scheme, including virtual file system /vsi schemes.

  • target_slope_path (string) – path to target slope raster; will be a 32 bit float GeoTIFF of same size/projection as calculate slope with units of percent slope.

  • raster_driver_creation_tuple (tuple) – a tuple containing a GDAL driver name string as the first element and a GDAL creation options tuple/list as the second. Defaults to geoprocessing.DEFAULT_GTIFF_CREATION_TUPLE_OPTIONS.

Returns:

None

pygeoprocessing.geoprocessing_core.raster_band_percentile(base_raster_path_band, working_sort_directory, percentile_list, heap_buffer_size=268435456, ffi_buffer_size=1024, geographic_crs_warn=False)

Calculate percentiles of a raster band based on pixel values.

Parameters:
  • base_raster_path_band (tuple) – raster path band tuple to a raster that is of any integer or real type. Paths may use any GDAL-supported scheme, including virtual file system /vsi schemes.

  • working_sort_directory (str) – path to a directory that does not exist or is empty. This directory will be used to create heapfiles with sizes no larger than heap_buffer_size which are written in the of the pattern N.dat where N is in the numbering 0, 1, 2, … up to the number of files necessary to handle the raster.

  • percentile_list (list) – sorted list of percentiles to report must contain values in the range [0, 100].

  • heap_buffer_size (int) – defines approximately how many elements to hold in a single heap file. This is proportional to the amount of maximum memory to use when storing elements before a sort and write to disk.

  • ffi_buffer_size (int) – defines how many elements will be stored per heap file buffer for iteration.

  • geographic_crs_warn (boolean) – defaults to False. If True, a warning will be issued if the base raster has a geographic CRS.

Returns:

A list of len(percentile_list) elements long containing the percentile values (ranging from [0, 100]) in base_raster_path_band where the interpolation scheme is “higher” (i.e. any percentile splits will select the next element higher than the percentile cutoff).

pygeoprocessing.geoprocessing_core.stats_worker(stats_work_queue, expected_blocks)

Worker to calculate continuous min, max, mean and standard deviation.

Parameters:
  • stats_work_queue (Queue) – a queue of 1D numpy arrays or None. If None, function puts a (min, max, mean, stddev) tuple to the queue and quits.

  • expected_blocks (int) – number of expected payloads through stats_work_queue. Will terminate after this many.

Returns:

None