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
eis defined at([dz/dx]^2 + [dz/dy]^2)^0.5Where:
[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
eand multiply the difference by2^0.5to 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_sizewhich 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_bandwhere 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