Tool API Reference (All Tools)

This chapter documents tool wrappers by theme.

For R usage, invoke tools either with:

  • generic execution (wbw_run_tool("tool_id", args = list(...), session = s))
  • generated session wrappers (s$tool_id(...))

Argument names and contracts in the shared tool docs map directly to R args keys and wrapper parameters.

Important call-style note:

  • Names shown in included lists are canonical tool identifiers.
  • For generic execution, call by identifier through wbw_run_tool.
  • For wrapper execution, use generated session methods on the session object.
  • The nested category/subcategory convention is the canonical shape for Python WbEnvironment tool namespaces; in R, generated session wrappers and wbw_run_tool are the practical call surfaces.

For an exhaustive tool_id-to-R-call lookup, see Tool Call Paths (R).

Math And Statistics

Math and Statistical Tools

This document covers the Math tools currently ported into the new backend.

Unary Raster Math

These tools apply an element-wise mathematical operation to every non-nodata cell of a single input raster and write the result to an output raster.

Unary Tool Index

  • abs
  • arccos
  • arcosh
  • arcsin
  • arctan
  • arsinh
  • artanh
  • bool_not
  • ceil
  • cos
  • cosh
  • decrement
  • exp
  • exp2
  • floor
  • increment
  • is_nodata
  • ln
  • log10
  • log2
  • negate
  • reciprocal
  • round
  • sin
  • sinh
  • sqrt
  • square
  • tan
  • tanh
  • to_degrees
  • to_radians
  • truncate

abs

Calculates the absolute value of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.abs(input_raster, output_path="abs_dem.tif")

arccos

Computes the inverse cosine (in radians) of each non-nodata raster cell. Input values must be in the range [-1, 1].

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.arccos(input_raster, output_path="arccos_dem.tif")

arcosh

Computes the inverse hyperbolic cosine of each non-nodata raster cell. Input values must be ≥ 1.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.arcosh(input_raster, output_path="arcosh_dem.tif")

arcsin

Computes the inverse sine (in radians) of each non-nodata raster cell. Input values must be in the range [-1, 1].

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.arcsin(input_raster, output_path="arcsin_dem.tif")

arctan

Computes the inverse tangent (in radians) of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.arctan(input_raster, output_path="arctan_dem.tif")

arsinh

Computes the inverse hyperbolic sine of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.arsinh(input_raster, output_path="arsinh_dem.tif")

artanh

Computes the inverse hyperbolic tangent of each non-nodata raster cell. Input values must be in the range (-1, 1).

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.artanh(input_raster, output_path="artanh_dem.tif")

ceil

Rounds each non-nodata raster cell upward to the nearest integer.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.ceil(input_raster, output_path="ceil_dem.tif")

cos

Computes the cosine (input in radians) of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.cos(input_raster, output_path="cos_dem.tif")

cosh

Computes the hyperbolic cosine of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.cosh(input_raster, output_path="cosh_dem.tif")

decrement

Subtracts 1 from each non-nodata raster cell value.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.decrement_raster(input_raster, output_path="dem_minus1.tif")

Note: The WbEnvironment method is named decrement_raster to avoid a name clash with the cell-level decrement helper method.

exp

Computes e raised to the power of each non-nodata raster cell value.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.exp(input_raster, output_path="exp_dem.tif")

exp2

Computes 2 raised to the power of each non-nodata raster cell value.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.exp2(input_raster, output_path="exp2_dem.tif")

floor

Rounds each non-nodata raster cell downward to the nearest integer.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.floor(input_raster, output_path="floor_dem.tif")

increment

Adds 1 to each non-nodata raster cell value.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.increment_raster(input_raster, output_path="dem_plus1.tif")

Note: The WbEnvironment method is named increment_raster to avoid a name clash with the cell-level increment helper method.

is_nodata

Outputs 1.0 for every nodata cell and 0.0 for every valid cell. Useful for creating nodata masks.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

mask = wbe.is_nodata_raster(input_raster, output_path="dem_nodata_mask.tif")

Note: The WbEnvironment method is named is_nodata_raster to avoid a name clash with the Raster-class is_nodata predicate.

ln

Computes the natural logarithm of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.ln(input_raster, output_path="ln_dem.tif")

log10

Computes the base-10 logarithm of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.log10(input_raster, output_path="log10_dem.tif")

log2

Computes the base-2 logarithm of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.log2(input_raster, output_path="log2_dem.tif")

negate

Negates each non-nodata raster cell value (multiplies by -1).

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.negate(input_raster, output_path="neg_dem.tif")

reciprocal

Computes the reciprocal (1/x) of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.reciprocal(input_raster, output_path="recip_dem.tif")

round

Rounds each non-nodata raster cell to the nearest integer.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.round(input_raster, output_path="round_dem.tif")

sin

Computes the sine (input in radians) of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.sin(input_raster, output_path="sin_dem.tif")

sinh

Computes the hyperbolic sine of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.sinh(input_raster, output_path="sinh_dem.tif")

sqrt

Computes the square root of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.sqrt(input_raster, output_path="sqrt_dem.tif")

square

Squares each non-nodata raster cell value (x²).

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.square(input_raster, output_path="square_dem.tif")

tan

Computes the tangent (input in radians) of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.tan(input_raster, output_path="tan_dem.tif")

tanh

Computes the hyperbolic tangent of each non-nodata raster cell.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.tanh(input_raster, output_path="tanh_dem.tif")

to_degrees

Converts each non-nodata raster cell from radians to degrees.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.to_degrees(input_raster, output_path="deg_dem.tif")

to_radians

Converts each non-nodata raster cell from degrees to radians.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.to_radians(input_raster, output_path="rad_dem.tif")

truncate

Truncates each non-nodata raster cell to its integer part (rounds toward zero).

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.truncate(input_raster, output_path="trunc_dem.tif")

bool_not

Computes a logical NOT of each non-nodata raster cell, outputting 1 where the input cell value is 0 and 0 otherwise.

Parameters

NameTypeRequiredDescription
inputstringyesInput raster file path.
outputstringyesOutput raster file path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.bool_not(input_raster, output_path="bool_not_dem.tif")

Binary Raster Math

These tools combine two rasters on a cell-by-cell basis.

Binary Tool Index

  • add
  • atan2
  • bool_and
  • bool_or
  • bool_xor
  • divide
  • equal_to
  • greater_than
  • integer_division
  • less_than
  • modulo
  • multiply
  • not_equal_to
  • power
  • subtract

All binary raster math tools share the same core parameter shape: input1, input2, and optional output.

WbEnvironment usage examples

sum_raster = wbe.raster.overlay_math.add(raster_a, raster_b, output_path="sum.tif")
pow_raster = wbe.raster.overlay_math.power(raster_a, raster_b, output_path="power.tif")
mask = wbe.raster.greater_than(raster_a, raster_b, output_path="gt_mask.tif")
logic = wbe.raster.overlay_math.bool_and(raster_a, raster_b, output_path="and_mask.tif")

Tool semantics:

  • atan2: four-quadrant inverse tangent, cell by cell.
  • bool_and, bool_or, bool_xor: treat any non-zero value as true and return 1.0 or 0.0.
  • equal_to, not_equal_to, greater_than, less_than: comparison predicates that return 1.0 or 0.0.
  • integer_division: divides and truncates the result toward zero.
  • modulo: returns the remainder of division.
  • power: raises input1 to the power of input2.

See tools_gis.md for the older documentation context around add, subtract, multiply, and divide.


Statistical Raster Tools

Tool Index

  • raster_summary_stats
  • raster_histogram
  • list_unique_values_raster
  • z_scores
  • rescale_value_range
  • max
  • min
  • quantiles
  • list_unique_values
  • root_mean_square_error
  • random_field
  • random_sample
  • cumulative_distribution
  • crispness_index
  • ks_normality_test
  • inplace_add
  • inplace_subtract
  • inplace_multiply
  • inplace_divide
  • attribute_histogram
  • attribute_scattergram
  • attribute_correlation
  • cross_tabulation
  • zonal_statistics
  • turning_bands_simulation
  • trend_surface
  • trend_surface_vector_points
  • raster_calculator
  • principal_component_analysis
  • inverse_pca

raster_summary_stats

Computes summary statistics for valid raster cells and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.raster_summary_stats(input_raster)

raster_histogram

Builds a fixed-bin histogram for valid raster cells and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
binsintnoNumber of bins (default 256).

Outputs

  • return: str

WbEnvironment usage

hist_json = wbe.raster.raster_histogram(input_raster, bins=256)

list_unique_values_raster

Lists unique raster values (integers) up to a maximum count and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
max_valuesintnoMaximum values to return (default 10000).
output_pathstringnoOptional output CSV path.

Outputs

  • return: str

WbEnvironment usage

unique_json = wbe.raster.list_unique_values_raster(
    classified_raster,
    max_values=5000,
    output_path="classified_unique_values.csv",
)

z_scores

Standardizes raster values to z-scores using global mean and standard deviation.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

z = wbe.raster.z_scores(input_raster, output_path="z_scores.tif")

rescale_value_range

Linearly rescales raster values into a target output range.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
out_minfloatyesTarget minimum output value.
out_maxfloatyesTarget maximum output value.
clip_minfloatnoOptional input clip minimum.
clip_maxfloatnoOptional input clip maximum.
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

rescaled = wbe.raster.rescale_value_range(input_raster, 0.0, 255.0, output_path="rescaled.tif")

max

Computes cellwise maximum using raster/raster or raster/constant operands.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst operand.
input2RasteryesSecond operand.
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

maxed = wbe.raster.max(dem_a, dem_b, output_path="max_ab.tif")
maxed_const = wbe.raster.max(dem_a, 100.0, output_path="max_const.tif")

min

Computes cellwise minimum using raster/raster or raster/constant operands.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst operand.
input2RasteryesSecond operand.
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

mined = wbe.raster.min(dem_a, dem_b, output_path="min_ab.tif")
mined_const = wbe.raster.min(dem_a, 0.0, output_path="min_const.tif")

quantiles

Assigns each valid raster cell to a quantile class from 1..num_quantiles.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
num_quantilesintnoNumber of classes (default 5).
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

q = wbe.raster.quantiles(input_raster, num_quantiles=5, output_path="quantiles.tif")

list_unique_values

Reports unique value counts for a vector attribute field and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector object.
field_namestringyesAttribute field name to summarize.
output_pathstringnoOptional output CSV path.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.vector.attribute_analysis.list_unique_values(
    parcels,
    "landuse",
    output_path="parcels_landuse_unique_values.csv",
)

root_mean_square_error

Computes RMSE and related vertical-accuracy metrics between comparison and base rasters.

Parameters

NameTypeRequiredDescription
inputRasteryesComparison raster.
baseRasteryesBase/reference raster.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.root_mean_square_error(dem_test, dem_reference)

random_field

Creates a raster filled with standard normal random values using a base raster for geometry.

Parameters

NameTypeRequiredDescription
baseRasteryesBase raster defining output geometry.
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

rand_img = wbe.raster.random_field(base_raster, output_path="random_field.tif")

random_sample

Creates a raster with randomly located valid sample cells labelled with unique IDs.

Parameters

NameTypeRequiredDescription
baseRasteryesBase raster used for output geometry and valid-cell mask.
num_samplesintnoNumber of sample cells to generate (default 1000).
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

sample = wbe.raster.random_sample(base_raster, num_samples=500, output_path="sample.tif")

cumulative_distribution

Transforms raster values into cumulative distribution probabilities in the range 0..1.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

cdf = wbe.raster.cumulative_distribution(input_raster, output_path="cdf.tif")

crispness_index

Calculates the crispness index for a membership-probability raster and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputRasteryesMembership-probability raster.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.crispness_index(probability_raster)

ks_normality_test

Runs a Kolmogorov-Smirnov normality test on raster values and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster object.
num_samplesintnoOptional random sample size; omit to use all valid cells.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.ks_normality_test(input_raster, num_samples=1000)

kappa_index

Computes Cohen's kappa, overall agreement, and per-class agreement metrics for two categorical rasters and returns a JSON report string.

Parameters

NameTypeRequiredDescription
input1RasteryesClassification raster.
input2RasteryesReference raster.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.kappa_index(classified_raster, reference_raster)

paired_sample_t_test

Runs a paired-sample t-test on two rasters using valid paired cells and returns a JSON report string.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst raster in the pair.
input2RasteryesSecond raster in the pair.
num_samplesintnoOptional random sample size; omit to use all valid pairs.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.paired_sample_t_test(before_raster, after_raster, num_samples=2000)

phi_coefficient

Performs a binary-class agreement assessment between two rasters and returns a JSON report string containing contingency counts and the $\phi$ coefficient.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst binary raster. Non-zero cells are treated as class presence.
input2RasteryesSecond binary raster. Non-zero cells are treated as class presence.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.phi_coefficient(predicted_binary, reference_binary)

image_correlation

Computes a Pearson correlation matrix among two or more input rasters and returns a JSON report string.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster handles or file paths (at least two).

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.image_correlation([band1, band2, band3])

image_autocorrelation

Computes global Moran's $I$ for one or more rasters and returns a JSON report string with normality/randomization statistics.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster handles or file paths (at least one).
contiguitystringnoNeighborhood rule: rook, king/queen, or bishop (default rook).

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.image_autocorrelation([elevation, slope], contiguity="king")

image_correlation_neighbourhood_analysis

Computes moving-window local correlation between two rasters and returns two rasters: local correlation values and local p-values.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst input raster.
input2RasteryesSecond input raster.
filter_sizeintnoMoving window size in cells (default 11, minimum 3).
correlation_statstringnoCorrelation metric: pearson, spearman, or kendall (default pearson).
output1_pathstringnoOptional path for the local-correlation raster.
output2_pathstringnoOptional path for the local-significance raster.

Outputs

Returned as tuple[Raster, Raster] in this order:

  • output1: Raster
  • output2: Raster

WbEnvironment usage

local_r, local_p = wbe.raster.local_neighborhood.image_correlation_neighbourhood_analysis(
	band1,
	band2,
	filter_size=11,
	correlation_stat="spearman",
)

image_regression

Performs bivariate linear regression using two rasters and returns a residual raster plus a JSON report string containing model, ANOVA, and coefficient statistics.

Parameters

NameTypeRequiredDescription
independent_variableRasteryesIndependent variable raster (X).
dependent_variableRasteryesDependent variable raster (Y).
standardize_residualsboolnoStandardize residuals by model standard error (default False).
output_pathstringnoOptional output path for residual raster.

Outputs

Returned as tuple[Raster, str] in this order:

  • result: Raster
  • string_2: str

WbEnvironment usage

residuals, report_json = wbe.raster.image_regression(
    independent_raster,
    dependent_raster,
    standardize_residuals=True,
)

dbscan

Performs unsupervised DBSCAN (Density-Based Spatial Clustering of Applications with Noise) clustering on a stack of input rasters. Each cell's feature vector spans all input bands. Cluster IDs (0-based, I16) are written to the output raster; noise cells and nodata cells receive the nodata value (-32768). A JSON report string is also returned with summary statistics.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesFeature-band rasters forming the multi-dimensional feature space.
scaling_methodstringnoFeature scaling: "none" (default), "normalize" (0–1), or "standardize" (z-scores).
search_distancefloatnoEpsilon neighbourhood radius in feature space (default 1.0).
min_pointsintnoMinimum number of neighbours within epsilon for a core point (default 5).
output_pathstringnoOptional output raster path.

Outputs

Returned as tuple[Raster, str] in this order:

  • result: Raster
  • string_2: str

WbEnvironment usage

clusters, report_json = wbe.raster.dbscan(
    [band1, band2, band3],
    scaling_method="normalize",
    search_distance=0.1,
    min_points=10,
)

| num_samples | int | no | Optional random sample size per raster; omit to use all valid values. |

WbEnvironment usage

report_json = wbe.two_sample_ks_test(raster_a, raster_b, num_samples=3000)

wilcoxon_signed_rank_test

Runs a Wilcoxon signed-rank test on paired raster differences and returns a JSON report string.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst raster in the pair.
input2RasteryesSecond raster in the pair.
num_samplesintnoOptional random sample size; omit to use all valid pairs.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.wilcoxon_signed_rank_test(before_raster, after_raster, num_samples=2000)

conditional_evaluation

Evaluates a per-cell boolean statement and assigns TRUE/FALSE outputs from constants, rasters, or expressions.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster used for value and raster geometry variables.
statementstringyesConditional expression evaluated per cell.
true_valueRasternoValue/expression used when condition is true (defaults to NoData).
false_valueRasternoValue/expression used when condition is false (defaults to NoData).
output_pathstringnoOptional output raster path.

Outputs

  • return: Raster

WbEnvironment usage

out = wbe.raster.reclass_mask.conditional_evaluation(
	input_raster,
	"(value >= 25.0) && (value <= 75.0)",
	true_value=1.0,
	false_value=0.0,
	output_path="conditional.tif",
)

anova

Performs one-way ANOVA of raster values grouped by a class raster and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputRasteryesMeasurement raster.
featuresRasteryesClass/category raster defining groups.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.anova(measurement_raster, class_raster)

inplace_add

Performs the legacy in-place add operation input1 += input2 and returns the updated raster handle.

Parameters

NameTypeRequiredDescription
input1RasteryesRaster to modify.
input2RasteryesRaster or constant addend.

Outputs

  • return: Raster

WbEnvironment usage

updated = wbe.raster.inplace_add(input_raster, 10.0)

inplace_subtract

Performs the legacy in-place subtract operation input1 -= input2 and returns the updated raster handle.

Parameters

NameTypeRequiredDescription
input1RasteryesRaster to modify.
input2RasteryesRaster or constant subtrahend.

Outputs

  • return: Raster

WbEnvironment usage

updated = wbe.raster.inplace_subtract(input_raster, other_raster)

inplace_multiply

Performs the legacy in-place multiply operation input1 *= input2 and returns the updated raster handle.

Parameters

NameTypeRequiredDescription
input1RasteryesRaster to modify.
input2RasteryesRaster or constant multiplier.

Outputs

  • return: Raster

WbEnvironment usage

updated = wbe.raster.inplace_multiply(input_raster, 1.25)

inplace_divide

Performs the legacy in-place divide operation input1 /= input2 and returns the updated raster handle.

Parameters

NameTypeRequiredDescription
input1RasteryesRaster to modify.
input2RasteryesRaster or non-zero constant divisor.

Outputs

  • return: Raster

WbEnvironment usage

updated = wbe.raster.inplace_divide(input_raster, 2.0)

attribute_histogram

Builds histogram summary counts for a numeric vector attribute field and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector object.
field_namestringyesNumeric attribute field name.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.vector.attribute_analysis.attribute_histogram(parcels, "area")

attribute_scattergram

Computes scattergram summary statistics for two numeric vector fields and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector object.
field_name_xstringyesNumeric x-axis field name.
field_name_ystringyesNumeric y-axis field name.
trendlineboolnoInclude linear trendline metrics (default False).

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.vector.attribute_analysis.attribute_scattergram(parcels, "area", "perimeter", trendline=True)

attribute_correlation

Computes the Pearson correlation matrix among numeric vector attribute fields and returns a JSON report string.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector object.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.vector.attribute_analysis.attribute_correlation(parcels)

cross_tabulation

Creates a categorical contingency table between two rasters and returns a JSON report string.

Parameters

NameTypeRequiredDescription
input1RasteryesFirst categorical raster.
input2RasteryesSecond categorical raster.

Outputs

  • return: str

WbEnvironment usage

report_json = wbe.raster.cross_tabulation(classes_2000, classes_2020)

zonal_statistics

Computes statistics (mean, median, min, max, range, standard deviation, diversity, total) for zones defined by a features raster and returns results as a raster and JSON report.

Parameters

NameTypeRequiredDescription
data_rasterRasteryesRaster containing values to summarize.
features_rasterRasteryesRaster containing integer zone IDs.
stat_typestringnoStatistic to compute (default "mean"). Options: mean, median, min, max, range, std_dev, diversity, total.
zero_is_backgroundboolnoExclude zone ID 0 from analysis (default False).
output_pathstringnoOutput raster file path.
callbackfunctionnoProgress callback function.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.zonal_statistics(
    dem, 
    zone_raster, 
    stat_type="mean", 
    output_path="dem_zones_mean.tif"
)

turning_bands_simulation

Simulates a spatially-autocorrelated random field using Carr's turning bands algorithm. Useful for Monte Carlo uncertainty analysis and geostatistical simulation.

Parameters

NameTypeRequiredDescription
base_rasterRasteryesBase raster defining output extent and resolution.
rangefloatyesAutocorrelation range parameter (determines smoothness).
iterationsintnoNumber of random bands to accumulate (default 1000).
output_pathstringnoOutput raster file path.
callbackfunctionnoProgress callback function.

Outputs

  • return: Raster

WbEnvironment usage

simulated = wbe.raster.turning_bands_simulation(
    template_raster,
    range=100.0,
    iterations=500,
    output_path="simulated_field.tif"
)

trend_surface

Fits a polynomial trend surface to raster data via least-squares regression. Supports polynomial orders 1–10.

Parameters

NameTypeRequiredDescription
input_rasterRasteryesInput raster to fit.
polynomial_orderintnoPolynomial order 1–10 (default 1 for linear).
output_pathstringnoOutput raster file path.
callbackfunctionnoProgress callback function.

Outputs

  • return: Raster

WbEnvironment usage

trend = wbe.raster.trend_surface(
    dem,
    polynomial_order=2,
    output_path="dem_trend_quadratic.tif"
)

trend_surface_vector_points

Fits a polynomial trend surface to vector point data (with attribute values) and generates an output raster.

Parameters

NameTypeRequiredDescription
vector_inputVectoryesInput point vector layer.
cell_sizefloatyesOutput raster cell size.
field_namestringyesName of numeric attribute field to fit.
polynomial_orderintnoPolynomial order 1–10 (default 1 for linear).
output_pathstringnoOutput raster file path.
callbackfunctionnoProgress callback function.

Outputs

  • return: Raster

WbEnvironment usage

trend = wbe.raster.trend_surface_vector_points(
    sample_points,
    cell_size=10.0,
    field_name="elevation",
    polynomial_order=2,
    output_path="points_trend_surface.tif"
)

raster_calculator

Evaluates arbitrary mathematical expressions cell-by-cell over one or more input rasters.

Parameters

NameTypeRequiredDescription
expressionstringyesMathematical expression (e.g., "'nir' - 'red'" for NDVI).
input_rastersRasteryesList of input rasters in expression order.
output_pathstringnoOutput raster file path.
callbackfunctionnoProgress callback function.

Special Variables

Expression can reference: rows, columns, north, south, east, west, cellsizex, cellsizey, cellsize, nodata, null, minvalue, maxvalue, pi, e, row, column, rowy, columnx, and inputs as value1, value2, etc.

Outputs

  • return: Raster

WbEnvironment usage

# NDVI example with named rasters
ndvi = wbe.raster.raster_calculator(
    "'nir' - 'red' / ('nir' + 'red')",
    [nir_band, red_band],
    output_path="ndvi.tif"
)

principal_component_analysis

Performs PCA (dimensionality reduction) on 3 or more raster bands. Outputs component rasters and eigendecomposition report.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster bands (3 or more).
num_componentsintnoNumber of PCA components to output (default: all input bands).
standardizedboolnoUse correlation matrix (standardized) vs covariance (default True).
output_pathstringnoOutput directory for component rasters.
callbackfunctionnoProgress callback function.

Outputs

  • return: list[Raster]

WbEnvironment usage

# Perform PCA on multispectral bands
components = wbe.raster.principal_component_analysis(
    [band1, band2, band3, band4],
    num_components=3,
    standardized=True,
    output_path="pca_components/"
)

Output Files

Component rasters: {stem}_comp1.tif, {stem}_comp2.tif, etc. JSON report includes eigenvalues, eigenvectors, and factor loadings.

inverse_pca

Reconstructs original band images from PCA components, with optional noise reduction by excluding high-order components.

Parameters

NameTypeRequiredDescription
component_rastersRasteryesPCA component rasters (in order).
pca_reportstringyesJSON report string from principal_component_analysis().
output_pathstringnoOutput directory for reconstructed bands.
callbackfunctionnoProgress callback function.

Outputs

  • return: list[Raster]

WbEnvironment usage

# Reconstruct with denoising (exclude last 2 components)
reconstructed = wbe.raster.inverse_pca(
    [comp1, comp2, comp3],
    pca_report=report_json,
    output_path="reconstructed_bands/"
)

Output Files

Reconstructed rasters: {stem}_img1.tif, {stem}_img2.tif, etc.

Hydrology

Hydrology Tools

This document covers hydrology tools currently ported into the backend, including DEM depression removal/conditioning and flow-accumulation workflows.

Hydrology (Depression Removal)

These tools prepare DEMs for downstream flow-routing by removing pits, flats, or larger enclosed depressions. The short version is:

  • Prefer breach_depressions_least_cost when you want the lowest-impact correction and realistic cuts through barriers such as roads or embankments.
  • Use fill_depressions when you need a robust full-fill solution and are comfortable modifying all enclosed depressions up to their spill elevations.
  • Use fill_pits or breach_single_cell_pits as lightweight preprocessing for single-cell artifacts, not as a replacement for full depression conditioning.
  • Treat the Wang-and-Liu and Planchon-and-Darboux variants mainly as compatibility methods when you need those specific historical formulations.

Tool Index

  • breach_depressions_least_cost
  • breach_single_cell_pits
  • fill_depressions
  • fill_depressions_planchon_and_darboux
  • fill_depressions_wang_and_liu
  • fill_pits
  • depth_in_sink
  • sink

Hydrology (Flow Accumulation)

Tool Index

  • d8_pointer
  • d8_flow_accum
  • dinf_pointer
  • dinf_flow_accum
  • fd8_pointer
  • fd8_flow_accum
  • rho8_pointer
  • rho8_flow_accum
  • mdinf_flow_accum
  • qin_flow_accumulation
  • quinn_flow_accumulation
  • minimal_dispersion_flow_algorithm
  • flow_accum_full_workflow
  • d8_mass_flux
  • dinf_mass_flux

Hydrology (Diagnostics)

Tool Index

  • find_noflow_cells
  • num_inflowing_neighbours
  • find_parallel_flow
  • edge_contamination
  • flow_length_diff
  • downslope_flowpath_length
  • max_upslope_flowpath_length
  • average_upslope_flowpath_length
  • elevation_above_stream
  • elevation_above_stream_euclidean
  • downslope_distance_to_stream
  • average_flowpath_slope
  • max_upslope_value
  • longest_flowpath
  • depth_to_water
  • fill_burn
  • burn_streams_at_roads
  • trace_downslope_flowpaths
  • flood_order
  • insert_dams
  • raise_walls
  • topological_breach_burn
  • stochastic_depression_analysis
  • unnest_basins
  • upslope_depression_storage
  • flatten_lakes
  • hydrologic_connectivity
  • impoundment_size_index

Hydrology (Watersheds and Basins)

Tool Index

  • basins
  • watershed_from_raster_pour_points
  • watershed
  • jenson_snap_pour_points
  • snap_pour_points
  • subbasins
  • hillslopes
  • strahler_order_basins
  • isobasins

mdinf_flow_accum

mdinf_flow_accum(dem, out_type="sca", exponent=1.1, threshold=None, log=False, clip=False, output_path=None, callback=None)

Computes MD-Infinity triangular multiple-flow-direction accumulation from a DEM.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
out_typestringnoOne of "cells", "ca", "sca" (default).
exponentfloatnoSlope weighting exponent (default 1.1).
thresholdfloat|NonenoOptional convergence threshold in cells. If provided and exceeded, routing becomes convergent.
logboolnoIf true, log-transform output values.
clipboolnoCompatibility flag accepted by the API.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.mdinf_flow_accum(
    dem,
    out_type="value",
    exponent=1.0,
    threshold=1.0,
    output_path="result.tif",
)

qin_flow_accumulation

qin_flow_accumulation(dem, out_type="sca", exponent=10.0, max_slope=45.0, threshold=None, log=False, clip=False, output_path=None, callback=None)

Computes Qin MFD flow accumulation from a DEM using a gradient-dependent dynamic exponent.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
out_typestringnoOne of "cells", "ca", "sca" (default).
exponentfloatnoUpper-bound exponent parameter (default 10.0).
max_slopefloatnoUpper-bound slope in degrees used by the dynamic exponent function (default 45.0).
thresholdfloat|NonenoOptional convergence threshold in cells.
logboolnoIf true, log-transform output values.
clipboolnoCompatibility flag accepted by the API.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.qin_flow_accumulation(
    dem,
    out_type="value",
    exponent=1.0,
    max_slope=1.0,
    threshold=1.0,
    output_path="result.tif",
)

quinn_flow_accumulation

quinn_flow_accumulation(dem, out_type="sca", exponent=1.1, threshold=None, log=False, clip=False, output_path=None, callback=None)

Computes Quinn MFD flow accumulation from a DEM using accumulation-dependent convergence.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
out_typestringnoOne of "cells", "ca", "sca" (default).
exponentfloatnoExponent parameter (default 1.1).
thresholdfloat|NonenoOptional convergence threshold in cells.
logboolnoIf true, log-transform output values.
clipboolnoCompatibility flag accepted by the API.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.quinn_flow_accumulation(
    dem,
    out_type="value",
    exponent=1.0,
    threshold=1.0,
    output_path="result.tif",
)

minimal_dispersion_flow_algorithm

minimal_dispersion_flow_algorithm(raster, out_type="sca", path_corrected_direction_preference=0.0, log_transform=False, clip=False, esri_pntr=False, flow_dir_output_path=None, output_path=None, callback=None)

Computes the Minimal Dispersion Flow Algorithm (MDFA) from a DEM and returns both a flow-direction raster and flow-accumulation raster as a tuple.

Parameters

NameTypeRequiredDescription
rasterRasteryesInput depressionless DEM raster.
out_typestringnoOne of "cells", "ca", "sca" (default).
path_corrected_direction_preferencefloatnoPreference parameter p in [0, 1]; 1.0 is fully non-dispersive.
log_transformboolnoIf true, log-transform accumulation values.
clipboolnoCompatibility flag accepted by the API.
esri_pntrboolnoIf true, encode flow-direction output in Esri pointer style.
flow_dir_output_pathstringnoOptional output path for the flow-direction raster.
output_pathstringnoOptional output path for the flow-accumulation raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster, Raster] in this order:

  • flow_dir: Raster
  • result: Raster

WbEnvironment usage

raster_1, raster_2 = wbe.hydrology.flow_routing.minimal_dispersion_flow_algorithm(
    raster,
    out_type="value",
    path_corrected_direction_preference=1.0,
    flow_dir_output_path="flow_dir.tif",
    output_path="result.tif",
)

flow_accum_full_workflow

flow_accum_full_workflow(dem, out_type="sca", log_transform=False, clip=False, esri_pntr=False, breached_dem_output_path=None, flow_dir_output_path=None, output_path=None, callback=None)

Runs a full non-divergent flow workflow in one call and returns a tuple containing a depressionless DEM, a D8 pointer raster, and a D8 accumulation raster.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
out_typestringnoOne of "cells", "ca", "sca" (default).
log_transformboolnoIf true, log-transform accumulation values.
clipboolnoIf true, clip accumulation display maximum (compatibility behavior).
esri_pntrboolnoIf true, encode flow-direction output in Esri pointer style.
breached_dem_output_pathstringnoOptional output path for the depressionless DEM raster.
flow_dir_output_pathstringnoOptional output path for the flow-direction raster.
output_pathstringnoOptional output path for the flow-accumulation raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster, Raster, Raster] in this order:

  • breached_dem: Raster
  • flow_dir: Raster
  • result: Raster

WbEnvironment usage

raster_1, raster_2, raster_3 = wbe.hydrology.flow_routing.flow_accum_full_workflow(
    dem,
    out_type="value",
    breached_dem_output_path="breached_dem.tif",
    flow_dir_output_path="flow_dir.tif",
    output_path="result.tif",
)

find_noflow_cells

find_noflow_cells(dem, output_path=None, callback=None, interior_only=False)

Finds DEM cells that have no lower D8 neighbour. On a fully conditioned DEM this should usually be limited to valid edge-drainage cases; interior hits often indicate remaining pits or flats.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.
interior_onlyboolnoIf true, only flags true interior no-flow cells (excluding raster-border and NoData-adjacent outlets).

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.find_noflow_cells(
    dem,
    output_path="result.tif",
)

dinf_mass_flux

dinf_mass_flux(dem, loading, efficiency, absorption, output_path=None, callback=None)

Routes mass downslope using D-Infinity flow-routing, accumulating loading while applying per-cell efficiency and absorption losses.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
loadingRasteryesInput loading raster.
efficiencyRasteryesInput efficiency raster (0-1 or percent values).
absorptionRasteryesInput absorption raster in loading units.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.dinf_mass_flux(
    dem,
    loading,
    efficiency,
    absorption,
    output_path="result.tif",
)

trace_downslope_flowpaths

trace_downslope_flowpaths(seed_points, d8_pntr, esri_pntr=False, zero_background=False, output_path=None, callback=None)

Traces downslope D8 flowpaths from seed points to no-flow cells or the raster edge. Output values are visit counts where overlapping traces occur.

Parameters

NameTypeRequiredDescription
seed_pointsVectoryesInput point vector of seed locations.
d8_pntrAnyyesInput D8 pointer raster.
esri_pntrboolnoIf true, interpret D8 pointers with ESRI encoding.
zero_backgroundboolnoIf true, background is 0; otherwise background is NoData.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.trace_downslope_flowpaths(
    seed_points,
    d8_pointer,
    output_path="result.tif",
)

flood_order

flood_order(dem, output_path=None, callback=None)

Computes flood order from a DEM using a priority-flood traversal from edges inward, assigning each valid cell its visitation sequence.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.flood_order(
    dem,
    output_path="result.tif",
)

flatten_lakes

flatten_lakes(dem, lakes, output_path=None, callback=None)

Flattens lake polygons in a DEM by setting each lake interior to its minimum perimeter elevation.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
lakesVectoryesInput polygon vector of lake features.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.flatten_lakes(
    dem,
    lakes,
    output_path="result.tif",
)

insert_dams

insert_dams(dem, dam_points, dam_length, output_path=None, callback=None)

Inserts localized dam embankments at specified point locations using profile-based crest selection constrained by maximum dam length.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
dam_pointsVectoryesInput point vector of dam locations.
dam_lengthfloatyesMaximum dam length in map units.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.insert_dams(
    dem,
    dam_points,
    dam_length=1.0,
    output_path="result.tif",
)

raise_walls

raise_walls(dem, walls, breach_lines=None, wall_height=100.0, output_path=None, callback=None)

Raises DEM elevations along wall features by a specified height increment, with optional breach lines used to carve openings through raised walls.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
wallsVectoryesInput line or polygon vector defining wall segments.
breach_linesVectornoOptional vector defining breach locations.
wall_heightfloatnoElevation increment applied to wall cells.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.raise_walls(
    dem,
    walls,
    breach_lines,
    wall_height=1.0,
    output_path="result.tif",
)

topological_breach_burn

topological_breach_burn(streams, dem, snap_distance=0.001, out_streams_path=None, out_dem_path=None, out_dir_path=None, out_fa_path=None, callback=None)

Performs topological stream burning using a stream vector and DEM, producing stream raster, burned/conditioned DEM, D8 pointer, and D8 accumulation outputs.

Parameters

NameTypeRequiredDescription
streamsVectoryesInput stream network vector.
demRasteryesInput DEM raster.
snap_distancefloatnoOptional stream snapping distance used in burn-depth scaling.
out_streams_pathstringnoOptional output path for rasterized streams.
out_dem_pathstringnoOptional output path for burned/conditioned DEM.
out_dir_pathstringnoOptional output path for D8 pointer raster.
out_fa_pathstringnoOptional output path for flow-accumulation raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster, Raster, Raster, Raster] in this order:

  • raster_1: Raster
  • raster_2: Raster
  • raster_3: Raster
  • raster_4: Raster

WbEnvironment usage

raster_1, raster_2, raster_3, raster_4 = wbe.hydrology.depressions_storage.topological_breach_burn(
    dem,
    streams,
    snap_distance=1.0,
    output_streams_path="output_streams.dat",
    output_dem_path="output_dem.dat",
    output_dir_path="output_dir.dat",
    output_flow_accum_path="output_flow_accum.dat",
)

stochastic_depression_analysis

stochastic_depression_analysis(dem, rmse, range, iterations=100, output_path=None, callback=None)

Estimates depression-membership probability for each DEM cell using Monte Carlo perturbation of elevation error and repeated depression filling.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
rmsefloatyesElevation RMSE used for Gaussian perturbation.
rangefloatyesError autocorrelation range in map units.
iterationsintnoNumber of Monte Carlo iterations.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.stochastic_depression_analysis(
    dem,
    rmse=1.0,
    range=1.0,
    iterations=1,
    output_path="result.tif",
)

unnest_basins

unnest_basins(d8_pointer, pour_points, esri_pntr=False, output_path=None, callback=None)

Delineates full nested basins for pour points over a D8 pointer raster, producing one raster per nesting level.

Parameters

NameTypeRequiredDescription
d8_pointerRasteryesInput D8 pointer raster.
pour_pointsVectoryesInput point vector of outlets/pour points.
esri_pntrboolnoIf true, interpret pointer values with ESRI encoding.
output_pathstringnoOptional base output path used to write numbered outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: list[Raster]

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.unnest_basins(
    d8_pointer,
    pour_points,
    output_path="result.tif",
)

upslope_depression_storage

upslope_depression_storage(dem, output_path=None, callback=None)

Estimates average upslope depression-storage depth by conditioning depressions and routing storage depth downslope.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.upslope_depression_storage(
    dem,
    output_path="result.tif",
)

hydrologic_connectivity

hydrologic_connectivity(dem, exponent=1.1, convergence_threshold=0.0, z_factor=1.0, output1_path=None, output2_path=None, callback=None)

Computes two hydrologic-connectivity indices from a DEM: downslope unsaturated length (DUL) and upslope disconnected saturated area (UDSA).

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
exponentfloatnoCompatibility parameter for dispersion control.
convergence_thresholdfloatnoOptional stream-initiation threshold in contributing cells.
z_factorfloatnoOptional vertical scaling factor.
output1_pathstringnoOptional output path for DUL raster.
output2_pathstringnoOptional output path for UDSA raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster, Raster] in this order:

  • output1: Raster
  • output2: Raster

WbEnvironment usage

raster_1, raster_2 = wbe.hydrology.hydrologic_indices.hydrologic_connectivity(
    dem,
    exponent=1.0,
    convergence_threshold=1.0,
    z_factor=1.0,
    output1="value",
    output2="value",
)

impoundment_size_index

impoundment_size_index(dem, max_dam_length, output_mean=False, output_max=False, output_volume=False, output_area=False, output_height=False, callback=None)

Estimates impoundment metrics for potential dams of a given maximum length at each DEM cell.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
max_dam_lengthfloatyesMaximum dam length in map units.
output_meanboolnoInclude mean flooded-depth raster in output tuple.
output_maxboolnoInclude max flooded-depth raster in output tuple.
output_volumeboolnoInclude flooded-volume raster in output tuple.
output_areaboolnoInclude flooded-area raster in output tuple.
output_heightboolnoInclude dam-height raster in output tuple.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster | None, Raster | None, Raster | None, Raster | None, Raster | None] in this order:

  • mean: Raster | None
  • max: Raster | None
  • volume: Raster | None
  • area: Raster | None
  • dam_height: Raster | None

WbEnvironment usage

raster_1, raster_2, raster_3, raster_4, raster_5 = wbe.hydrology.depressions_storage.impoundment_size_index(
    dem,
    max_dam_length=1.0,
    mean_output_path="mean.tif",
    max_output_path="max.tif",
    volume_output_path="volume.tif",
    area_output_path="area.tif",
    dam_height_output_path="dam_height.tif",
)

num_inflowing_neighbours

num_inflowing_neighbours(dem, output_path=None, callback=None)

Counts the number of inflowing D8 neighbours for each DEM cell by deriving a D8 flow field from the DEM internally.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.num_inflowing_neighbours(
    dem,
    output_path="result.tif",
)

find_parallel_flow

find_parallel_flow(d8_pointer, streams=None, output_path=None, callback=None)

Flags stream cells that have neighboring stream cells with the same local D8 flow direction, which can indicate D8 directional bias and suspect parallel channel routing.

Parameters

NameTypeRequiredDescription
d8_pointerRasteryesInput D8 pointer raster.
streamsRasternoOptional stream raster mask. If omitted, all valid cells are considered.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.find_parallel_flow(
    d8_pointer,
    streams,
    output_path="result.tif",
)

edge_contamination

edge_contamination(dem, flow_type="mfd", z_factor=-1.0, output_path=None, callback=None)

Identifies edge-contaminated cells, i.e., cells whose upslope contributing area extends beyond the DEM boundary or boundary-connected NoData areas.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
flow_typestringnoRouting method to use: one of "d8", "mfd"/"fd8", or "dinf".
z_factorfloatnoOptional vertical scaling factor. Values <= 0 are treated as 1.0.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.edge_contamination(
    dem,
    flow_type="value",
    z_factor=1.0,
    output_path="result.tif",
)

flow_length_diff

flow_length_diff(d8_pointer, esri_pntr=False, log_transform=False, output_path=None, callback=None)

Calculates the local maximum absolute difference in downslope flowpath length, which is useful for highlighting drainage divides and ridgelines.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesInput D8 pointer raster.
esri_pntrboolnoIf true, interpret pointer values using ESRI D8 encoding.
log_transformAnyyesIf true, apply natural-log transform to the output.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.flow_length_diff(
    d8_pntr,
    output_path="result.tif",
)

downslope_flowpath_length

downslope_flowpath_length(d8_pointer, watersheds=None, weights=None, esri_pntr=False, output_path=None, callback=None)

Computes downslope flowpath length from each cell in a D8 pointer raster to its outlet. Optionally constrains paths within watershed IDs and applies per-cell distance weighting.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesInput D8 pointer raster.
watershedsRasternoOptional watershed raster. When supplied, flowpath accumulation is truncated at watershed boundaries.
weightsRasternoOptional raster multiplier applied to each traversed step length.
esri_pntrboolnoIf true, interpret pointer values using ESRI D8 encoding.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.downslope_flowpath_length(
    d8_pntr,
    output_path="result.tif",
    watersheds,
    weights,
)

max_upslope_flowpath_length

max_upslope_flowpath_length(dem, output_path=None, callback=None)

Computes the maximum upslope flowpath length passing through each DEM cell using D8 routing derived from the input DEM.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.max_upslope_flowpath_length(
    dem,
    output_path="result.tif",
)

average_upslope_flowpath_length

average_upslope_flowpath_length(dem, output_path=None, callback=None)

Computes the average upslope flowpath length passing through each DEM cell using D8 routing derived from the input DEM.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.average_upslope_flowpath_length(
    dem,
    output_path="result.tif",
)

elevation_above_stream

elevation_above_stream(dem, streams, output_path=None, callback=None)

Computes elevation above nearest stream measured along downslope D8 flowpaths (a HAND-like terrain index).

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
streamsRasteryesInput stream raster; stream cells are values > 0 and not NoData.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.elevation_above_stream(
    dem,
    streams,
    output_path="result.tif",
)

elevation_above_stream_euclidean

elevation_above_stream_euclidean(dem, streams, output_path=None, callback=None)

Computes elevation above nearest stream using Euclidean proximity to assign each cell to the nearest stream cell, then subtracts stream elevation.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
streamsRasteryesInput stream raster; stream cells are values > 0 and not NoData.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.elevation_above_stream_euclidean(
    dem,
    streams,
    output_path="result.tif",
)

downslope_distance_to_stream

downslope_distance_to_stream(dem, streams, dinf=False, output_path=None, callback=None)

Computes distance from each cell to the nearest stream along downslope flowpaths. Supports D8 routing by default and optional D-infinity routing when dinf=True.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
streamsRasteryesInput stream raster; stream cells are values > 0 and not NoData.
dinfboolnoIf true, use D-infinity routing; otherwise uses D8 routing.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.downslope_distance_to_stream(
    dem,
    streams,
    output_path="result.tif",
)

average_flowpath_slope

average_flowpath_slope(dem, output_path=None, callback=None)

Calculates average slope gradient in degrees for flowpaths passing through each DEM cell, using D8 flow routing derived from the DEM.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.average_flowpath_slope(
    dem,
    output_path="result.tif",
)

max_upslope_value

max_upslope_value(dem, values, output_path=None, callback=None)

Propagates the maximum upslope value along D8 flowpaths over a DEM. Useful for carrying source characteristics downslope while preserving maxima.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
valuesRasteryesInput values raster to propagate.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.max_upslope_value(
    dem,
    values,
    output_path="result.tif",
)

longest_flowpath

longest_flowpath(dem, basins, output_path, callback=None)

Delineates one longest downslope flowpath polyline for each basin in a basin raster. Output includes basin ID, upstream/downstream elevation, flowpath length, and average slope.

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster.
basinsRasteryesInput basin raster with non-zero IDs for basin cells.
output_pathstringyesOutput vector path (required).
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.longest_flowpath(
    dem,
    basins,
    output_path="result.tif",
)

depth_to_water

depth_to_water(dem, streams=None, lakes=None, output_path=None, callback=None)

Computes cartographic depth-to-water (DTW) by least-cost accumulation from mapped surface-water source features.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
streamsVectornoOptional stream vector layer (line or multiline).
lakesVectornoOptional waterbody vector layer (polygon or multipolygon).
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.hydrologic_indices.depth_to_water(
    dem,
    streams,
    lakes,
    output_path="result.tif",
)

fill_burn

fill_burn(dem, streams, output_path=None, callback=None)

Creates a hydro-enforced DEM by burning in stream locations and then filling depressions.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
streamsVectoryesInput streams vector layer.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.fill_burn(
    dem,
    streams,
    output_path="result.tif",
)

burn_streams_at_roads

burn_streams_at_roads(dem, streams, roads, road_width, output_path=None, callback=None)

Lowers stream elevations near stream-road intersections to breach embankment effects in a DEM.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
streamsVectoryesStream vector layer.
roadsVectoryesRoad vector layer.
road_widthAnyyesMaximum embankment width in map units used to set burn reach along the stream.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.burn_streams_at_roads(
    dem,
    streams,
    roads,
    output_path="result.tif",
    width=1.0,
)

d8_mass_flux

d8_mass_flux(dem, loading, efficiency, absorption, output_path=None, callback=None)

Performs D8-based mass-flux routing, suitable for modeling movement of sediment, nutrients, or contaminants over a DEM-defined flow network.

The routed mass per cell follows:

$$ ext{outflow} = (\text{loading} - \text{absorption} + \text{inflow}) \times \text{efficiency} $$

Parameters

NameTypeRequiredDescription
demRasteryesInput depressionless DEM raster used to derive D8 flow directions.
loadingRasteryesRaster of initial mass loading values.
efficiencyRasteryesRaster of transfer efficiency values, either in [0, 1] or percent.
absorptionRasteryesRaster of per-cell mass losses in loading units.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.flow_routing.d8_mass_flux(
    dem,
    loading,
    efficiency,
    absorption,
    output_path="result.tif",
)

basins

basins(d8_pointer, esri_pntr=False, output_path=None, callback=None)

Delineates all drainage basins in a D8 pointer raster by assigning each valid cell to the edge-draining outlet basin reached along its D8 flow path.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesInput D8 pointer raster.
esri_pntrboolnoIf true, interpret pointer values using ESRI D8 encoding.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.basins(
    d8_pntr,
    output_path="result.tif",
)

watershed_from_raster_pour_points

watershed_from_raster_pour_points(d8_pointer, pour_points, esri_pntr=False, output_path=None, callback=None)

Delineates watersheds from a D8 pointer raster and a raster of pour-point outlet IDs. Each non-zero, non-NoData cell in pour_points is treated as an outlet; its cell value becomes the watershed ID for all cells that drain to it.

Algorithm notes:

  • Same two-pass flow-path labeling as basins, but seeded from user-supplied pour points rather than edge outlets.
  • Watershed IDs are inherited directly from the pour-points raster values, making it easy to use stream-link or lake ID rasters as pour-point inputs.
  • Cells where the D8 pointer is NoData are propagated as NoData in the output.

Parameters

NameTypeRequiredDescription
d8_pointerRasteryesInput D8 pointer raster.
pour_pointsRasteryesPour-points raster; non-zero, non-NoData cell values become outlet IDs.
esri_pntrboolnoIf true, interpret pointer values using ESRI D8 encoding.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.watershed_from_raster_pour_points(d8_pointer, pour_points)

watershed

watershed(d8_pointer, pour_pts, esri_pntr=False, output_path=None, callback=None)

Delineates watersheds from a D8 pointer raster and a vector point file of pour points. Each vector feature is assigned a sequential 1-based watershed ID.

Algorithm notes:

  • Pour-point coordinates are converted to raster row/col via the pointer raster's geotransform.
  • Watershed IDs are 1-based sequential integers in feature insertion order.
  • Same two-pass flow-path labeling as watershed_from_raster_pour_points.
  • Only the first coordinate of each feature is used; MultiPoint features use their first point.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesInput D8 pointer raster.
pour_ptsVectoryesInput vector file of pour points (point or multipoint geometries).
esri_pntrboolnoIf true, interpret pointer values using ESRI D8 encoding.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.watershed(
    d8_pntr,
    pour_pts,
    output_path="result.tif",
)

jenson_snap_pour_points

jenson_snap_pour_points(pour_pts, streams, snap_dist=0.0, output_path=None, callback=None)

Moves each input pour point to the nearest stream cell within a configurable search radius, snapping it onto the stream network. Preserves all input feature attributes.

Algorithm notes:

  • For each point, a square window of floor((snap_dist / cell_size) / 2) cells is searched around the point's raster position.
  • The nearest stream cell (value > 0 and not NoData) by squared Euclidean distance is chosen.
  • If no stream cell is found within the window, the point is emitted at its original location.
  • Points outside the raster extent are passed through unchanged.

Parameters

NameTypeRequiredDescription
pour_ptsVectoryesInput vector file of pour points (point or multipoint geometries).
streamsRasteryesInput stream-network raster where stream cells have value > 0 and are not NoData.
snap_distfloatnoMaximum search radius in map units. Defaults to one cell width when omitted or zero.
output_pathstringnoOutput path for the snapped pour-point vector file (required; defaults to snapped_pour_points.geojson in the working directory when not supplied to the wrapper).
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.jenson_snap_pour_points(
    pour_pts,
    streams,
    snap_dist=1.0,
    output_path="result.tif",
)

snap_pour_points

snap_pour_points(pour_pts, flow_accum, snap_dist=0.0, output_path=None, callback=None)

Moves each pour point to the highest flow-accumulation cell within a local search window. Preserves all input feature attributes.

Algorithm notes:

  • For each point, the tool scans a square search window centered on the point's raster position.
  • The output location is set to the cell center of the maximum flow_accum value found in that window.
  • If no valid cell exists in the search window (for example, all NoData), the point is emitted unchanged.
  • Points outside the raster extent are emitted unchanged.

Parameters

NameTypeRequiredDescription
pour_ptsVectoryesInput vector file of pour points (point or multipoint geometries).
flow_accumRasteryesInput flow-accumulation raster.
snap_distfloatnoMaximum search radius in map units. Defaults to one cell width when omitted or zero.
output_pathstringnoOutput path for the snapped pour-point vector file (required; defaults to snapped_pour_points.geojson in the working directory when not supplied to the wrapper).
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.snap_pour_points(
    pour_pts,
    flow_accum,
    snap_dist=1.0,
    output_path="result.tif",
)

subbasins

subbasins(d8_pointer, streams, esri_pntr=False, output_path=None, callback=None)

Identifies the catchment area of each stream link in a D8 stream network, producing a raster where every cell is labelled with the ID of the sub-basin it drains to.

Algorithm notes:

  • Performs a stream-link ID operation followed by a watershed operation.
  • Headwater stream cells receive a unique link ID. At each downstream confluence (cell with more than one inflowing stream neighbour) a new link ID is assigned.
  • All non-stream cells are labelled by walking downstream to the nearest stream-link seed.
  • Differs from hillslopes in that stream cells themselves are also labelled (not zeroed) and no left/right bank separation is applied.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesD8 pointer raster produced by d8_pointer.
streamsRasteryesStream-network raster where stream cells have value > 0 and are not NoData.
esri_pntrboolnoIf true, interpret pointer values using ESRI encoding. Default False.
output_pathstringnoOptional output raster path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.subbasins(
    d8_pntr,
    streams,
    output_path="result.tif",
)

hillslopes

hillslopes(d8_pointer, streams, esri_pntr=False, output_path=None, callback=None)

Identifies hillslope regions draining to each stream link, distinguishing left-bank and right-bank areas. Stream cells themselves are set to 0.

Algorithm notes:

  • Performs the same stream-link ID and watershed labeling as subbasins.
  • After labeling, all stream cells are zeroed.
  • A flood-fill clump pass re-numbers spatially connected regions that share the same sub-basin ID, separating left- and right-bank hillslopes.
  • Diagonal clump expansion is blocked when both adjacent cardinal cells are stream cells, preventing hillslopes from merging across the stream.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesD8 pointer raster.
streamsRasteryesStream-network raster where stream cells have value > 0 and are not NoData.
esri_pntrboolnoESRI pointer encoding flag.
output_pathstringnoOptional output raster path.
callbackfunctionnoOptional progress callback.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.hillslopes(
    d8_pntr,
    streams,
    output_path="result.tif",
)

strahler_order_basins

strahler_order_basins(d8_pointer, streams, esri_pntr=False, output_path=None, callback=None)

Delineates watershed basins whose cells are labelled by the Horton-Strahler order of the stream link that drains them.

Algorithm notes:

  • Assigns Strahler stream orders to all stream cells: headwaters receive order 1; at a confluence where two or more inflowing streams share the same order, the downstream order is incremented by 1.
  • All non-stream cells are then labelled with the Strahler order of the stream link they drain into, using the same two-pass watershed labeling as watershed.

Parameters

NameTypeRequiredDescription
d8_pointerAnyyesD8 pointer raster.
streamsRasteryesStream-network raster where stream cells have value > 0 and are not NoData.
esri_pntrboolnoESRI pointer encoding flag.
output_pathstringnoOptional output raster path.
callbackfunctionnoOptional progress callback.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.streams.ordering_metrics.strahler_order_basins(
    d8_pntr,
    streams,
    output_path="result.tif",
)

isobasins

isobasins(dem, target_size, output_path=None, callback=None)

Divides a landscape into approximately equal-sized watersheds (isobasins) by placing pour points wherever flow accumulation first exceeds a target threshold.

Algorithm notes:

  • Computes D8 flow direction internally from the DEM using steepest descent.
  • Accumulates flow cell-by-cell in topological order from headwaters downstream.
  • When a cell's cumulative upstream area reaches target_size, a pour point is created at that cell or (if it produces a closer-to-target split) at its largest-accumulation inflowing neighbour.
  • All cells are then traced downstream to their nearest pour point and assigned that basin's ID.
  • The DEM must have been hydrologically conditioned (depressions filled or breached) before use.

Parameters

NameTypeRequiredDescription
demRasteryesInput hydrologically-conditioned DEM raster.
target_sizefloatyesTarget isobasin area in number of grid cells (positive integer or float).
output_pathstringnoOptional output raster path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.watersheds_basins.isobasins(
    dem,
    target_size=1.0,
    output_path="result.tif",
)

breach_depressions_least_cost

breach_depressions_least_cost(dem, max_cost=inf, max_dist=100, flat_increment=None, fill_deps=False, minimize_dist=False, output=None)

Breaches depressions using a constrained least-cost pathway search from pit cells.

Algorithm notes:

  • Searches outward from pit cells for a lower outlet cell and cuts the least-cost breach channel through intervening terrain.
  • Usually alters the DEM less than full filling because it carves narrow channels instead of raising entire depressions.
  • Well suited to artificial barriers such as roads, berms, and embankments where a culvert-like breach is more realistic than filling.
  • fill_deps=True is useful when a small number of depressions remain unresolved after breaching.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
max_costfloat|NonenoMaximum allowed breach cost.
max_distintnoMaximum search distance in cells.
flat_incrementfloat|NonenoOptional monotonic decrement increment.
fill_depsboolnoIf true, fill unresolved depressions after breaching.
minimize_distboolnoIf true, distance-weight breach costs.
outputstringnoOptional output path.

When to use:

  • First-choice preprocessing for hydrologic conditioning in many LiDAR-derived DEM workflows.
  • Best when preserving surrounding terrain is more important than enforcing a pure fill solution.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.breach_depressions_least_cost(
    dem,
    max_cost=1.0,
    max_dist=1,
    flat_increment=1.0,
    output_path="result.tif",
)

breach_single_cell_pits

breach_single_cell_pits(dem, output=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

Breaches single-cell pits by carving local one-cell channels toward lower second-ring neighbors.

Algorithm notes:

  • Only targets isolated one-cell pit artifacts.
  • Adjusts an adjacent cell to create a local breach path toward a lower cell in the surrounding 5x5 neighborhood.
  • Very fast, but intentionally limited in scope; it does not solve larger depressions.

When to use:

  • Cheap cleanup pass before a more complete breaching or filling step.
  • Useful when DEM artifacts are dominated by isolated single-cell pits.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.breach_single_cell_pits(
    dem,
    output_path="result.tif",
)

fill_depressions

fill_depressions(dem, fix_flats=True, flat_increment=0.0001, flat_resolution="garbrecht_martz", max_depth=inf, output=None)

Fills depressions using a priority-flood strategy with optional flat resolution and optional maximum fill depth.

Algorithm notes:

  • Identifies depressions, raises them to spill elevation, and optionally imposes a very small gradient across resulting flats.
  • fix_flats=True applies a small downstream gradient so later flow-routing tools do not stall on large flat surfaces.
  • flat_resolution="garbrecht_martz" is the default and produces a more structured, less meandering flat-resolution pattern for D8-style routing. Use "natural" to recover the older natural-path behaviour that follows original within-flat topography more closely.
  • max_depth can limit how much vertical filling is allowed, which is useful when deep excavations or reservoirs should not be completely removed.
  • More aggressive than breaching because every enclosed depression is raised rather than selectively cut.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
fix_flatsboolnoIf true, impose a small gradient across filled flats.
flat_incrementfloat|NonenoFlat increment (default 0.0001).
flat_resolutionLiteral["garbrecht_martz", "natural"]|NonenoFlat-resolution mode. One of "garbrecht_martz" or "natural".
max_depthfloat|NonenoMaximum allowed fill depth.
outputstringnoOptional output path.

When to use:

  • Good general-purpose fill workflow when a complete depressionless DEM is required.
  • Appropriate when breaching would create unrealistic long cuts or when a full-fill surface is preferred.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.fill_depressions(
    dem,
    flat_increment=1.0,
    max_depth=1.0,
    flat_resolution,
    output_path="result.tif",
)

fill_depressions_planchon_and_darboux

fill_depressions_planchon_and_darboux(dem, fix_flats=True, flat_increment=0.0001, output=None)

Planchon-and-Darboux-compatible interface using the shared optimized fill backend.

Algorithm notes:

  • Compatibility-oriented interface for the classic Planchon and Darboux depression-filling formulation.
  • Included mainly for parity with legacy workflows rather than because it is the preferred modern option.
  • In practice, fill_depressions or breach_depressions_least_cost will often be the better first choice.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
fix_flatsboolnoIf true, impose a small gradient across filled flats.
flat_incrementfloat|NonenoFlat increment (default 0.0001).
outputstringnoOptional output path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.fill_depressions_planchon_and_darboux(
    dem,
    flat_increment=1.0,
    output_path="result.tif",
)

fill_depressions_wang_and_liu

fill_depressions_wang_and_liu(dem, fix_flats=True, flat_increment=0.0001, output=None)

Wang-and-Liu-compatible interface using the shared optimized fill backend.

Algorithm notes:

  • Compatibility-oriented interface for the Wang and Liu priority-queue depression-filling method.
  • Processes cells by spill elevation and is historically important, but is not the preferred default in this port.
  • Best used when reproducing older Wang-and-Liu-based workflows or published methods.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
fix_flatsboolnoIf true, impose a small gradient across filled flats.
flat_incrementfloat|NonenoFlat increment (default 0.0001).
outputstringnoOptional output path.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.fill_depressions_wang_and_liu(
    dem,
    flat_increment=1.0,
    output_path="result.tif",
)

fill_pits

fill_pits(dem, output=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

Fills single-cell pits by raising pit cells to the minimum neighboring elevation plus a small increment.

Algorithm notes:

  • Only removes isolated one-cell pits.
  • Leaves larger depressions unchanged.
  • Minimal and fast, but much less complete than full depression filling or breaching.

When to use:

  • Very lightweight preprocessing for obvious single-cell artifacts.
  • A quick first pass before running fill_depressions or breach_depressions_least_cost.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.fill_pits(
    dem,
    output_path="result.tif",
)

depth_in_sink

depth_in_sink(dem, zero_background=False, output_path=None, callback=None)

Measures the vertical depth of each cell within topographic depressions by differencing a depression-filled DEM and the original DEM.

Algorithm notes:

  • Internally generates a filled DEM surface and computes filled_dem - dem for each valid cell.
  • Positive values indicate depression depth.
  • Non-sink cells are assigned NoData by default, or 0.0 when zero_background=True.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
zero_backgroundboolnoIf true, assign 0.0 to cells outside sinks; otherwise assign NoData.
output_pathstringnoOptional output raster path.
callbackfunctionnoOptional progress callback.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.depth_in_sink(
    dem,
    output_path="result.tif",
)

sink

sink(dem, zero_background=False, output_path=None, callback=None)

Creates a binary raster identifying cells that belong to topographic depressions.

Algorithm notes:

  • Uses the same filled-vs-original DEM differencing approach as depth_in_sink.
  • Cells with positive depth are classified as sink cells (1).
  • Non-sink cells are assigned NoData by default, or 0.0 when zero_background=True.

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
zero_backgroundboolnoIf true, assign 0.0 to cells outside sinks; otherwise assign NoData.
output_pathstringnoOptional output raster path.
callbackfunctionnoOptional progress callback.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.hydrology.depressions_storage.sink(
    dem,
    output_path="result.tif",
)

GIS And Vector

GIS Tools

This document covers the GIS tools currently ported into the backend.

GIS Workflow Products (Pro)

These workflow methods expose higher-level environmental monitoring and siting products.

Workflow Product Index

  • wetland_hydrogeomorphic_classification
  • urban_expansion_impact_assessment
  • wind_turbine_siting
  • solar_site_suitability_analysis
  • corridor_mapping_intelligence
  • landslide_susceptibility_assessment
  • river_corridor_health_assessment

wetland_hydrogeomorphic_classification

wetland_hydrogeomorphic_classification(dem, wetland_mask, max_polygon_features=10000, output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
wetland_maskRasteryesInput raster for wetland_mask.
max_polygon_featuresintnoNumeric parameter for max_polygon_features.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (hgm_class_raster, wetland_polygons_vector, confidence_raster, summary_json_path).

Outputs

Returned as tuple[Raster, Vector, Raster, str] in this order:

  • cls: Raster
  • polys: Vector
  • conf: Raster
  • summary: str

Example:

hgm, polygons, confidence, summary = wbe.terrain.workflow_products.wetland_hydrogeomorphic_classification(
	dem=dem,
	wetland_mask=wetland_mask,
)

urban_expansion_impact_assessment

urban_expansion_impact_assessment(baseline_urban, scenario_urban, streams, habitat_sensitivity=None, output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
baseline_urbanRasteryesInput raster for baseline_urban.
scenario_urbanRasteryesInput raster for scenario_urban.
streamsVectoryesInput vector layer for streams.
habitat_sensitivityRasternoInput raster for habitat_sensitivity.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (impact_severity_raster, affected_streams_vector, habitat_loss_raster, summary_json_path).

Outputs

Returned as tuple[Raster, Vector, Raster, str] in this order:

  • impact: Raster
  • affected: Vector
  • habitat: Raster
  • summary: str

Example:

impact, streams_out, habitat_loss, summary = wbe.terrain.workflow_products.urban_expansion_impact_assessment(
	baseline_urban=urban_2020,
	scenario_urban=urban_2035,
	streams=streams,
	habitat_sensitivity=habitat_sensitivity,
)

wind_turbine_siting

wind_turbine_siting(dem, settlements, settlements_epsg=None, visibility_radius_meters=5000, min_slope_degrees=5.0, max_slope_degrees=35.0, profile="balanced", sweep_spec_json=None, output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
settlementsVectoryesInput vector layer for settlements.
settlements_epsgint |NonenoNumeric parameter for settlements_epsg.
visibility_radius_metersintnoNumeric parameter for visibility_radius_meters.
min_slope_degreesfloatnoNumeric parameter for min_slope_degrees.
max_slope_degreesfloatnoNumeric parameter for max_slope_degrees.
profilestringnoString parameter for profile.
sweep_spec_jsonstring |NonenoString parameter for sweep_spec_json.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (siting_score_raster, confidence_raster, summary_json_path).

When sweep_spec_json is provided, the runtime also emits run_matrix_summary, sensitivity_report, sensitivity_report_html, and stability_map outputs. The sensitivity report includes metrics.primary_metric, metrics.primary_relative_span, and metrics.stability_class (high, medium, low).

Outputs

Returned as tuple[Raster, Raster, str, str] in this order:

  • score: Raster
  • confidence: Raster
  • summary: str
  • threshold_sensitivity: str

Example:

score, confidence, summary = wbe.terrain.workflow_products.wind_turbine_siting(
	dem=dem,
	settlements=settlements,
	profile="balanced",
)

solar_site_suitability_analysis

solar_site_suitability_analysis(dem, candidate_threshold=0.7, max_candidate_sites=200, sweep_spec_json=None, output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
transmission_linesVectornoInput vector layer for transmission_lines.
substationsVectornoInput vector layer for substations.
road_networkVectornoInput vector layer for road_network.
infra_weight_profilestringyesString parameter for infra_weight_profile.
candidate_thresholdfloatnoNumeric parameter for candidate_threshold.
max_candidate_sitesintnoNumeric parameter for max_candidate_sites.
sweep_spec_jsonstring |NonenoString parameter for sweep_spec_json.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (suitability_score_raster, visual_impact_raster, candidate_sites_vector, summary_json_path).

When sweep_spec_json is provided, the runtime also emits run_matrix_summary, sensitivity_report, sensitivity_report_html, and stability_map outputs. The sensitivity report includes metrics.primary_metric, metrics.primary_relative_span, and metrics.stability_class (high, medium, low).

Outputs

Returned as tuple[Raster, Raster, Vector, str] in this order:

  • score: Raster
  • impact: Raster
  • sites: Vector
  • summary: str

Example:

score, impact, sites, summary = wbe.terrain.workflow_products.solar_site_suitability_analysis(
	dem=dem,
	candidate_threshold=0.7,
)

corridor_mapping_intelligence

corridor_mapping_intelligence(dem, start_features, end_features, constraints=None, cost_profile="slope_roughness", terminal_anchor_strategy="mixed", corridor_tolerance=0.15, output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
start_featuresVectoryesInput vector layer for start_features.
end_featuresVectoryesInput vector layer for end_features.
constraintsVectornoInput vector layer for constraints.
cost_profilestringnoString parameter for cost_profile.
terminal_anchor_strategystringnoString parameter for terminal_anchor_strategy.
corridor_tolerancefloatnoNumeric parameter for corridor_tolerance.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (cost_surface_raster, accumulated_cost_raster, optimal_route_vector, corridor_suitability_raster, summary_json_path).

Finds the terrain least-cost route and corridor suitability band for siting linear infrastructure (roads, pipelines, utility lines). start_features and end_features are vector layers containing point and/or polygon features. cost_profile is one of "slope_only", "slope_roughness" (default), or "conservative". terminal_anchor_strategy is one of "mixed" (default), "centroid_only", or "boundary_only". corridor_tolerance is the fractional cost margin above optimal for the suitability band (default 0.15).

Value proposition vs OSS least-cost building blocks:

  • This is an end-to-end workflow product rather than a low-level routing primitive.
  • It derives a terrain cost surface from DEM slope/roughness, runs least-cost routing, and emits both route geometry and corridor alternatives in one call.
  • It supports polygon exclusion constraints and returns a summary JSON contract for reporting/automation.

Endpoint modeling note:

  • Current API is vector-first for terminal modeling.
  • Point features are used directly as candidate anchors.
  • Polygon features contribute sampled boundary/centroid candidates, and the tool chooses a traversable anchor pair.
  • terminal_anchor_strategy controls polygon anchor candidate generation.
  • If start/end layers differ from DEM CRS, they are reprojected to the DEM CRS before routing.
  • If constraints differ from DEM CRS, they are reprojected to the DEM CRS before exclusion masking.
  • DEM, start/end layers, and optional constraints must include EPSG metadata for CRS harmonization.

QA-style outputs:

  • cost_surface_raster, accumulated_cost_raster, and corridor_suitability_raster provide inspectable diagnostic surfaces.
  • optimal_route_vector includes comparative route attributes (ROUTE_LEN_M, MEAN_SLOPE, ROUTE_COST, PROFILE).
  • summary_json_path stores reproducible run metadata and key metrics.

Outputs

Returned as tuple[Raster, Raster, Vector, Raster, str] in this order:

  • cost_surface: Raster
  • accumulated_cost: Raster
  • optimal_route: Vector
  • corridor_suitability: Raster
  • summary: str

Example:

cost, acc_cost, route, suitability, summary = wbe.terrain.workflow_products.corridor_mapping_intelligence(
	dem=dem,
	start_features=start_features,
	end_features=end_features,
	cost_profile="slope_roughness",
	terminal_anchor_strategy="mixed",
	corridor_tolerance=0.15,
	output_prefix="output/access_road",
)

landslide_susceptibility_assessment

landslide_susceptibility_assessment(dem, rainfall_intensity=None, profile="balanced", susceptibility_threshold=0.65, max_zone_features=5000, output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
rainfall_intensityRasternoInput raster for rainfall_intensity.
profilestringnoString parameter for profile.
susceptibility_thresholdfloatnoNumeric parameter for susceptibility_threshold.
max_zone_featuresintnoNumeric parameter for max_zone_features.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (susceptibility_raster, trigger_pressure_raster, confidence_raster, risk_zones_vector, summary_json_path).

Outputs

Returned as tuple[Raster, Raster, Raster, Vector, str] in this order:

  • susceptibility: Raster
  • trigger: Raster
  • confidence: Raster
  • zones: Vector
  • summary: str

Example:

sus, trigger, confidence, zones, summary = wbe.terrain.workflow_products.landslide_susceptibility_assessment(
	dem=dem,
	rainfall_intensity=rainfall,
	profile="balanced",
)

river_corridor_health_assessment

river_corridor_health_assessment(dem, streams, profile="balanced", output_prefix=None, callback=None)

Parameters

NameTypeRequiredDescription
demRasteryesInput DEM raster.
streamsVectoryesInput vector layer for streams.
profilestringnoString parameter for profile.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns (erosion_pressure_raster, corridor_confidence_raster, stream_health_score_raster, restoration_zones_vector, summary_json_path).

Outputs

Returned as tuple[Raster, Raster, Raster, Vector, str] in this order:

  • erosion: Raster
  • confidence: Raster
  • health: Raster
  • zones: Vector
  • summary: str

Example:

erosion, confidence, health, restoration, summary = wbe.terrain.workflow_products.river_corridor_health_assessment(
	dem=dem,
	streams=streams,
	profile="balanced",
)

GIS (Raster Overlay)

These tools compare or combine aligned raster stacks on a cell-by-cell basis. Use them when the rasters already share the same grid geometry and you want overlay-style summaries or index outputs.

Overlay Tool Index

  • average_overlay
  • count_if
  • highest_position
  • lowest_position
  • max_absolute_overlay
  • max_overlay
  • min_absolute_overlay
  • min_overlay
  • multiply_overlay
  • percent_equal_to
  • percent_greater_than
  • percent_less_than
  • pick_from_list
  • standard_deviation_overlay
  • sum_overlay
  • weighted_overlay
  • weighted_sum

GIS (Raster Aggregation and Point-Block Rasterization)

These tools are GIS raster utilities but are not raster overlay operations. They aggregate rasters, create synthetic rasters, find extrema, interpolate from points, rasterize point blocks, or derive footprint geometries.

Aggregation and Block Tool Index

  • aggregate_raster
  • buffer_raster
  • centroid_raster
  • clump
  • create_plane
  • find_lowest_or_highest_points
  • heat_map
  • hexagonal_grid_from_raster_base
  • hexagonal_grid_from_vector_base
  • idw_interpolation
  • layer_footprint_raster
  • layer_footprint_vector
  • map_features
  • rectangular_grid_from_raster_base
  • rectangular_grid_from_vector_base
  • natural_neighbour_interpolation
  • nearest_neighbour_interpolation
  • modified_shepard_interpolation
  • radial_basis_function_interpolation
  • raster_cell_assignment
  • nibble
  • sieve
  • tin_interpolation
  • block_maximum
  • block_minimum

find_lowest_or_highest_points

find_lowest_or_highest_points(input, output_type="lowest", output_path=None, callback=None)

Finds the lowest and/or highest raster cell locations and outputs them as vector points.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
output_typestringnoOne of lowest, highest, or both.
output_pathstringnoOptional output vector path. If omitted, an auto-derived GeoJSON path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.find_lowest_or_highest_points(
    input,
    output_type="value",
    output_path="result.tif",
)

aggregate_raster

aggregate_raster(input, aggregation_factor=2, aggregation_type="mean", output_path=None, callback=None)

Reduces raster resolution by aggregating fixed-size source blocks using mean, sum, maximum, minimum, or range.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
aggregation_factorintnoInteger block size in source cells.
aggregation_typestringnoAggregation statistic to compute.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.aggregate_raster(
    input,
    aggregation_factor=1,
    aggregation_type="value",
    output_path="result.tif",
)

create_plane

create_plane(base, gradient, aspect, constant, output_path=None, callback=None)

Creates a raster from a planar equation using a base raster for output geometry.

Parameters

NameTypeRequiredDescription
baseRasteryesBase raster providing output extent, resolution, and CRS.
gradientfloatyesPlane slope gradient in degrees.
aspectfloatyesPlane aspect in degrees.
constantfloatyesAdditive constant term.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.create_plane(
    base,
    gradient=1.0,
    aspect=1.0,
    constant=1.0,
    output_path="result.tif",
)

centroid_raster

centroid_raster(input, output_path=None, callback=None)

Calculates centroid cells for positive patch IDs in a raster and returns both output raster and a textual report.

Parameters

NameTypeRequiredDescription
inputRasteryesInput patch raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster, str] in this order:

  • result: Raster
  • string_2: str

WbEnvironment usage

raster_1, string_2 = wbe.raster.centroid_raster(
    input,
    output_path="result.tif",
)

buffer_raster

buffer_raster(input, buffer_size, grid_cell_units=False, output_path=None, callback=None)

Creates a binary buffer around non-zero, non-NoData raster cells.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster where non-zero cells are buffer targets.
buffer_sizefloatyesBuffer distance threshold.
grid_cell_unitsboolnoIf True, interprets buffer_size in grid-cell units instead of map units.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.distance_cost.buffer_raster(
    input,
    buffer_size=1.0,
    output_path="result.tif",
)

clump

clump(input, diag=False, zero_background=False, output_path=None, callback=None)

Groups contiguous equal-valued raster cells into unique patch IDs.

Parameters

NameTypeRequiredDescription
inputRasteryesInput categorical raster.
diagboolnoIf True, uses 8-neighbour connectivity; otherwise 4-neighbour.
zero_backgroundboolnoIf True, preserves zero-valued cells as background.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.clump(
    input,
    output_path="result.tif",
)

nibble

nibble(input, mask, use_nodata=False, nibble_nodata=True, output_path=None, callback=None)

Fills background regions in a raster by propagating values from nearest foreground cells, constrained by a mask raster.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster to fill.
maskRasteryesBinary mask raster (non-zero cells are preserved/eligible).
use_nodataboolnoIf True, treats input NoData as a class value during nibbling.
nibble_nodataboolnoIf True, restores NoData behavior for masked NoData regions.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.nibble(
    input,
    mask,
    output_path="result.tif",
)

sieve

sieve(input, threshold=1.0, zero_background=False, output_path=None, callback=None)

Removes small raster patches below a cell-count threshold by replacing them with neighbouring larger-patch values.

Parameters

NameTypeRequiredDescription
inputRasteryesInput categorical raster.
thresholdfloatnoMinimum patch size in grid cells to retain.
zero_backgroundboolnoIf True, preserves original zero-valued background as zero.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.sieve(
    input,
    threshold=1.0,
    output_path="result.tif",
)

heat_map

heat_map(points, bandwidth, field_name=None, cell_size=None, base_raster=None, kernel_function="quartic", output_path=None, callback=None)

Generates a kernel-density heat map raster from point occurrences.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestring|NonenoOptional numeric weight field; if omitted, each point contributes weight 1.
bandwidthfloatyesKernel bandwidth in map units.
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
kernel_functionstringnoKernel function type such as quartic, gaussian, triangular, or uniform.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.heat_map(
    points,
    bandwidth=1.0,
    field_name="value",
    cell_size=1.0,
    base_raster,
    kernel_function="value",
    output_path="result.tif",
)

idw_interpolation

idw_interpolation(points, field_name="FID", use_z=False, weight=2.0, radius=0.0, min_points=0, cell_size=None, base_raster=None, output_path=None, callback=None)

Interpolates a raster from point samples using inverse-distance weighting.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field; defaults to FID fallback.
use_zboolnoIf True, uses point Z values instead of attributes.
weightfloatnoIDW distance exponent.
radiusfloatnoOptional neighbourhood radius in map units.
min_pointsintnoMinimum number of neighbours to use.
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.idw_interpolation(
    points,
    field_name="value",
    weight=1.0,
    radius=1.0,
    min_points=1,
    cell_size=1.0,
    base_raster,
    output_path="result.tif",
)

layer_footprint_raster

layer_footprint_raster(input, output_path=None, callback=None)

Creates a rectangular polygon footprint from the full spatial extent of a raster.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
output_pathstringnoOptional output vector path. If omitted, an auto-derived GeoJSON path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.layer_footprint_raster(
    input,
    output_path="result.tif",
)

layer_footprint_vector

layer_footprint_vector(input, output_path=None, callback=None)

Creates a rectangular polygon footprint from the full bounding box of a vector layer.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.layer_footprint_vector(
    input,
    output_path="result.tif",
)

hexagonal_grid_from_raster_base

hexagonal_grid_from_raster_base(base, width, orientation="h", output_path=None, callback=None)

Creates a hexagonal polygon grid using the extent of a base raster.

Parameters

NameTypeRequiredDescription
baseRasteryesBase raster controlling output extent.
widthfloatyesHexagon width in map units.
orientationstringnoHexagon orientation ("h"/horizontal or "v"/vertical).
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.hexagonal_grid_from_raster_base(
    base,
    width=1.0,
    orientation="value",
    output_path="result.tif",
)

hexagonal_grid_from_vector_base

hexagonal_grid_from_vector_base(base, width, orientation="h", output_path=None, callback=None)

Creates a hexagonal polygon grid using the bounding extent of a base vector layer.

Parameters

NameTypeRequiredDescription
baseVectoryesBase vector layer controlling output extent.
widthfloatyesHexagon width in map units.
orientationstringnoHexagon orientation ("h"/horizontal or "v"/vertical).
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.hexagonal_grid_from_vector_base(
    base,
    width=1.0,
    orientation="value",
    output_path="result.tif",
)

rectangular_grid_from_raster_base

rectangular_grid_from_raster_base(base, width, height, x_origin=0.0, y_origin=0.0, output_path=None, callback=None)

Creates a rectangular polygon grid using the extent of a base raster.

Parameters

NameTypeRequiredDescription
baseRasteryesBase raster controlling output extent.
widthfloatyesGrid cell width in map units.
heightfloatyesGrid cell height in map units.
x_originfloatnoOptional x-origin used to align the grid.
y_originfloatnoOptional y-origin used to align the grid.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.rectangular_grid_from_raster_base(
    base,
    width=1.0,
    height=1.0,
    x_origin=1.0,
    y_origin=1.0,
    output_path="result.tif",
)

rectangular_grid_from_vector_base

rectangular_grid_from_vector_base(base, width, height, x_origin=0.0, y_origin=0.0, output_path=None, callback=None)

Creates a rectangular polygon grid using the bounding extent of a base vector layer.

Parameters

NameTypeRequiredDescription
baseVectoryesBase vector layer controlling output extent.
widthfloatyesGrid cell width in map units.
heightfloatyesGrid cell height in map units.
x_originfloatnoOptional x-origin used to align the grid.
y_originfloatnoOptional y-origin used to align the grid.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.rectangular_grid_from_vector_base(
    base,
    width=1.0,
    height=1.0,
    x_origin=1.0,
    y_origin=1.0,
    output_path="result.tif",
)

map_features

map_features(input, min_feature_height, min_feature_size=1, output_path=None, callback=None)

Labels discrete terrain features in a raster using descending-priority region growth and small-feature merging.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
min_feature_heightfloatyesMinimum vertical separation required for separate features.
min_feature_sizeintnoMinimum retained feature size in cells.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.map_features(
    input,
    min_feature_height=1.0,
    min_feature_size=1,
    output_path="result.tif",
)

natural_neighbour_interpolation

natural_neighbour_interpolation(points, field_name="FID", use_z=False, cell_size=None, base_raster=None, clip_to_hull=True, output_path=None, callback=None)

Interpolates a raster from point samples using Delaunay-neighbour weighted interpolation.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field; defaults to FID fallback.
use_zboolnoIf True, uses point Z values instead of attributes.
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
clip_to_hullboolnoIf True, limits interpolation to the points' convex hull.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.local_neighborhood.natural_neighbour_interpolation(
    points,
    field_name="value",
    cell_size=1.0,
    base_raster,
    output_path="result.tif",
)

nearest_neighbour_interpolation

nearest_neighbour_interpolation(points, field_name="FID", use_z=False, cell_size=None, base_raster=None, max_dist=None, output_path=None, callback=None)

Interpolates a raster from point samples using nearest-neighbour assignment.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field; defaults to FID fallback.
use_zboolnoIf True, uses point Z values instead of attributes.
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
max_distfloat|NonenoOptional maximum search distance in map units.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.local_neighborhood.nearest_neighbour_interpolation(
    points,
    field_name="value",
    cell_size=1.0,
    base_raster,
    max_dist=1.0,
    output_path="result.tif",
)

modified_shepard_interpolation

modified_shepard_interpolation(points, field_name="FID", use_z=False, weight=2.0, radius=0.0, min_points=8, use_quadratic_basis=False, cell_size=None, base_raster=None, use_data_hull=False, output_path=None, callback=None)

Interpolates a raster from point samples using modified Shepard weighting.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field; defaults to FID fallback.
use_zboolnoIf True, uses point Z values instead of attributes.
weightfloatnoShepard weight exponent.
radiusfloatnoOptional neighbourhood radius in map units.
min_pointsintnoMinimum number of neighbours to use.
use_quadratic_basisboolnoOptional local basis flag (reserved for parity refinement).
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
use_data_hullboolnoIf True, limits interpolation to the points' convex hull.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.modified_shepard_interpolation(
    points,
    field_name="value",
    weight=1.0,
    radius=1.0,
    min_points=1,
    cell_size=1.0,
    base_raster,
    output_path="result.tif",
)

radial_basis_function_interpolation

radial_basis_function_interpolation(points, field_name="FID", use_z=False, radius=0.0, min_points=16, cell_size=None, base_raster=None, func_type="thinplatespline", poly_order="none", weight=0.1, approximate_mode=True, output_path=None, callback=None)

Interpolates a raster from point samples using local radial-basis similarity weighting.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field; defaults to FID fallback.
use_zboolnoIf True, uses point Z values instead of attributes.
radiusfloatnoOptional neighbourhood radius in map units.
min_pointsintnoMinimum number of neighbours to use.
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
func_typeLiteral["thinplatespline", "polyharmonic", "gaussian", "multiquadric", "inversemultiquadric"]noBasis type (thinplatespline, polyharmonic, gaussian, multiquadric, inversemultiquadric).
poly_orderLiteral["none", "constant", "quadratic"]noPolynomial order hint (none, constant, quadratic).
weightfloatnoBasis shape/exponent parameter.
approximate_modeboolnoIf True, uses the NG approximate local neighborhood strategy; if False, uses legacy-style exhaustive evaluation.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.radial_basis_function_interpolation(
    points,
    field_name="value",
    radius=1.0,
    min_points=1,
    cell_size=1.0,
    base_raster,
    func_type,
    poly_order,
    weight=1.0,
    output_path="result.tif",
)

tin_interpolation

tin_interpolation(points, field_name="FID", use_z=False, cell_size=None, base_raster=None, max_triangle_edge_length=None, output_path=None, callback=None)

Interpolates a raster from point samples using Delaunay triangulation and planar interpolation within each triangle.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field; defaults to FID fallback.
use_zboolnoIf True, uses point Z values instead of attributes.
cell_sizefloat|NonenoOutput cell size when base_raster is not provided.
base_rasterRasternoOptional base raster controlling output geometry.
max_triangle_edge_lengthfloat|NonenoOptional maximum allowed triangle edge length in map units.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.tin_interpolation(
    points,
    field_name="value",
    cell_size=1.0,
    base_raster,
    max_triangle_edge_length=1.0,
    output_path="result.tif",
)

raster_cell_assignment

raster_cell_assignment(input, what_to_assign="column", output_path=None, callback=None)

Creates a raster from a base raster by assigning each cell its row number, column number, x coordinate, or y coordinate.

Parameters

NameTypeRequiredDescription
inputRasteryesInput base raster.
what_to_assignLiteral["column", "row", "x", "y"]noOne of column, row, x, or y.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.raster_cell_assignment(
    input,
    what_to_assign,
    output_path="result.tif",
)

block_maximum

block_maximum(points, field_name=None, use_z=False, cell_size=None, base_raster=None, output_path=None, callback=None)

Rasterizes point features by assigning the maximum observed value within each output cell.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field. If omitted or unavailable, the tool falls back to feature IDs.
use_zboolnoWhen True, use point Z values instead of attributes.
cell_sizefloatnoOutput cell size when base_raster is not supplied.
base_rasterRasternoOptional raster supplying output geometry.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.block_maximum(
    points,
    field_name="value",
    cell_size=1.0,
    base_raster,
    output_path="result.tif",
)

block_minimum

block_minimum(points, field_name=None, use_z=False, cell_size=None, base_raster=None, output_path=None, callback=None)

Rasterizes point features by assigning the minimum observed value within each output cell.

Parameters

NameTypeRequiredDescription
pointsVectoryesInput points vector layer.
field_namestringnoOptional numeric attribute field. If omitted or unavailable, the tool falls back to feature IDs.
use_zboolnoWhen True, use point Z values instead of attributes.
cell_sizefloatnoOutput cell size when base_raster is not supplied.
base_rasterRasternoOptional raster supplying output geometry.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

GIS (Bounding And Reclassification)

These tools create vector bounding geometries and reclassify labelled rasters.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.block_minimum(
    points,
    field_name="value",
    cell_size=1.0,
    base_raster,
    output_path="result.tif",
)

Bounding And Reclassification Tool Index

  • minimum_convex_hull
  • minimum_bounding_box
  • minimum_bounding_circle
  • minimum_bounding_envelope
  • medoid
  • reclass
  • reclass_equal_interval
  • filter_raster_features_by_area

medoid

medoid(input, output_path=None, callback=None)

Creates medoid point output from vector geometries; for point layers this returns one medoid for the full set, and for non-point layers one medoid per feature.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.medoid(
    input,
    output_path="result.tif",
)

minimum_convex_hull

minimum_convex_hull(input, individual_feature_hulls=True, output_path=None, callback=None)

Creates convex hull polygons around vector features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
individual_feature_hullsboolnoIf True, output one hull per input feature; if False, output one hull for the full layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.minimum_convex_hull(
    input,
    output_path="result.tif",
)

minimum_bounding_box

minimum_bounding_box(input, min_criteria="area", individual_feature_hulls=True, output_path=None, callback=None)

Creates oriented minimum bounding box polygons around vector features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
min_criteriaLiteral["area", "perimeter", "length", "width"]noOptimization target ("area", "perimeter", "length", or "width").
individual_feature_hullsboolnoIf True, output one box per input feature; if False, output one box for the full layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.minimum_bounding_box(
    input,
    min_criteria,
    output_path="result.tif",
)

minimum_bounding_circle

minimum_bounding_circle(input, individual_feature_hulls=True, output_path=None, callback=None)

Creates minimum enclosing circle polygons around vector features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
individual_feature_hullsboolnoIf True, output one circle per input feature; if False, output one circle for the full layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.minimum_bounding_circle(
    input,
    output_path="result.tif",
)

minimum_bounding_envelope

minimum_bounding_envelope(input, individual_feature_hulls=True, output_path=None, callback=None)

Creates axis-aligned minimum bounding envelope polygons around vector features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
individual_feature_hullsboolnoIf True, output one envelope per input feature; if False, output one envelope for the full layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.minimum_bounding_envelope(
    input,
    output_path="result.tif",
)

reclass

reclass(input, reclass_values, assign_mode=False, output_path=None, callback=None)

Reclassifies raster values using either value ranges or exact assignment pairs.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
reclass_valueslist[list[float]]yesReclassification rows. Use [new, from, to_less_than] for range mode, or [new, old] when assign_mode=True.
assign_modeboolnoIf True, interpret reclass_values rows as exact assignment pairs.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.reclass_mask.reclass(
    input,
    [reclass_values_1, reclass_values_2],
    output_path="result.tif",
)

reclass_equal_interval

reclass_equal_interval(input, interval_size, start_value=None, end_value=None, output_path=None, callback=None)

Reclassifies raster values into equal-width intervals.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
interval_sizefloatyesInterval width used for binning.
start_valuefloat|NonenoOptional lower bound of the reclassification range.
end_valuefloat|NonenoOptional upper bound of the reclassification range.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.reclass_mask.reclass_equal_interval(
    input,
    interval_size=1.0,
    start_value=1.0,
    end_value=1.0,
    output_path="result.tif",
)

filter_raster_features_by_area

filter_raster_features_by_area(input, threshold, zero_background=False, output_path=None, callback=None)

Removes integer-labelled raster features smaller than a cell-count threshold.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster containing integer-labelled features.
thresholdintyesMinimum feature size in cells to retain.
zero_backgroundboolnoIf True, removed features are assigned zero; otherwise they are assigned NoData.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

GIS (Vector Overlay And Linework)

These tools perform vector overlay, line splitting/merging, and polygon generation from linework.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.filter_raster_features_by_area(
    input,
    threshold=1,
    output_path="result.tif",
)

Vector Overlay And Linework Tool Index

  • centroid_vector
  • clip
  • difference
  • dissolve
  • eliminate_coincident_points
  • erase
  • extend_vector_lines
  • extract_by_attribute
  • snap_endnodes
  • smooth_vectors
  • split_vector_lines
  • extract_nodes
  • filter_vector_features_by_area
  • intersect
  • line_intersections
  • merge_line_segments
  • polygonize
  • split_with_lines
  • symmetrical_difference
  • union
  • voronoi_diagram
  • travelling_salesman_problem
  • construct_vector_tin
  • vector_hex_binning

extract_by_attribute

extract_by_attribute(input, statement, output_path=None, callback=None)

Extracts vector features whose attributes satisfy a boolean expression.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
statementstringyesBoolean expression evaluated against attribute field names.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.attribute_analysis.extract_by_attribute(
    input,
    statement="value",
    output_path="result.tif",
)

extract_raster_values_at_points

extract_raster_values_at_points(rasters, points, output_path=None, callback=None)

Samples one or more rasters at point locations and writes the values to new VALUE1, VALUE2, ... fields on the output point layer. Returns (vector, report_text).

Parameters

NameTypeRequiredDescription
rastersRasteryesList of input rasters to sample.
pointsVectoryesInput points vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Vector, str] in this order:

  • result: Vector
  • string_2: str

WbEnvironment usage

vector_1, string_2 = wbe.vector.sampling_gridding.extract_raster_values_at_points(
    rasters,
    points,
    output_path="result.tif",
)

centroid_vector

centroid_vector(input, output_path=None, callback=None)

Computes centroid points from vector features.

For point inputs, the output is one centroid point representing the mean location of all points. For non-point inputs, the output contains one centroid point per input feature.

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.centroid_vector(
    input,
    output_path="result.tif",
)

clip

clip(input, overlay, output_path=None, callback=None, snap_tolerance=None)

Clips input polygons to overlay polygon boundaries.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
overlayVectoryesOverlay polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional overlay snapping tolerance.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.clip(
    input,
    overlay,
    output_path="result.tif",
    snap_tolerance=1.0,
)

dissolve

dissolve(input, dissolve_field="", snap_tolerance=EPSILON, output_path=None, callback=None)

Removes shared polygon boundaries globally or within dissolve-field groups.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
dissolve_fieldstringnoOptional field name used to dissolve polygons within attribute groups.
snap_tolerancefloatnoSnapping tolerance used by topology operations.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.dissolve(
    input,
    dissolve_field="value",
    snap_tolerance=1.0,
    output_path="result.tif",
)

extract_nodes

extract_nodes(input, output_path=None, callback=None)

Converts polyline or polygon vertices into output point features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polyline or polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.extract_nodes(
    input,
    output_path="result.tif",
)

filter_vector_features_by_area

filter_vector_features_by_area(input, threshold, output_path=None, callback=None)

Removes polygon features smaller than the specified area threshold.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
thresholdfloatyesMinimum polygon area to retain.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.attribute_analysis.filter_vector_features_by_area(
    input,
    threshold=1.0,
    output_path="result.tif",
)

extend_vector_lines

extend_vector_lines(input, distance, extend_direction="both", output_path=None, callback=None)

Extends line features by moving the start endpoint, end endpoint, or both along the local line direction.

Parameters

NameTypeRequiredDescription
inputVectoryesInput line vector layer.
distancefloatyesExtension distance in map units.
extend_directionLiteral["both", "start", "end"]noOne of "both", "start", or "end".
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.extend_vector_lines(
    input,
    distance=1.0,
    extend_direction,
    output_path="result.tif",
)

smooth_vectors

smooth_vectors(input, filter_size=3, output_path=None, callback=None)

Smooths polyline and polygon geometries using an odd-sized moving-average window.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polyline or polygon vector layer.
filter_sizeintnoSmoothing window size (odd integer >= 3; even values are adjusted to the next odd value).
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.smooth_vectors(
    input,
    filter_size=1,
    output_path="result.tif",
)

split_vector_lines

split_vector_lines(input, segment_length, output_path=None, callback=None)

Divides polyline features into segments of a maximum specified length. Each output segment becomes a separate feature. The output attributes include FID, PARENT_ID (the 1-based index of the originating input feature), and all other input attributes.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polyline vector layer.
segment_lengthfloatyesMaximum segment length in map units (must be > 0).
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.split_vector_lines(
    input,
    segment_length=1.0,
    output_path="result.tif",
)

snap_endnodes

snap_endnodes(input, snap_tolerance=EPSILON, output_path=None, callback=None)

Snaps nearby polyline start/end nodes to shared coordinates within the specified tolerance.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polyline vector layer.
snap_tolerancefloatnoEndpoint snapping tolerance in map units.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.snap_endnodes(
    input,
    snap_tolerance=1.0,
    output_path="result.tif",
)

line_intersections

line_intersections(input1, input2, output_path=None, callback=None, snap_tolerance=None)

Finds intersection points between line or polygon boundaries in two input vector layers.

Parameters

NameTypeRequiredDescription
input1VectoryesFirst input vector layer.
input2VectoryesSecond input vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional intersection snapping tolerance.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.line_intersections(
    input1,
    input2,
    output_path="result.tif",
    snap_tolerance=1.0,
)

merge_line_segments

merge_line_segments(input, snap_tolerance=EPSILON, output_path=None, callback=None)

Merges connected line segments whose endpoints match within the snap tolerance.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polyline vector layer.
snap_tolerancefloatnoEndpoint snapping tolerance.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.merge_line_segments(
    input,
    snap_tolerance=1.0,
    output_path="result.tif",
)

polygonize

polygonize(input_layers, snap_tolerance=EPSILON, output_path=None, callback=None)

Creates polygons from closed rings in one or more input line layers.

Parameters

NameTypeRequiredDescription
input_layersVectoryesList of input line vector layers.
snap_tolerancefloatnoSnapping tolerance used while polygonizing.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.polygonize(
    input_layers,
    snap_tolerance=1.0,
    output_path="result.tif",
)

split_with_lines

split_with_lines(input, split_vector, snap_tolerance=EPSILON, output_path=None, callback=None)

Splits line features in the input layer at intersections with a split line layer.

Parameters

NameTypeRequiredDescription
inputVectoryesInput line vector layer to split.
split_vectorVectoryesLine vector layer defining split locations.
snap_tolerancefloatnoSnapping tolerance used during splitting.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.split_with_lines(
    input,
    split_vector,
    snap_tolerance=1.0,
    output_path="result.tif",
)

symmetrical_difference

symmetrical_difference(input, overlay, output_path=None, callback=None, snap_tolerance=None)

Computes non-overlapping polygon regions from the input and overlay layers.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
overlayVectoryesOverlay polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional overlay snapping tolerance.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.symmetrical_difference(
    input,
    overlay,
    output_path="result.tif",
    snap_tolerance=1.0,
)

voronoi_diagram

voronoi_diagram(input_points, output_path=None, callback=None)

Creates Voronoi (Thiessen) polygon cells from input point locations.

Parameters

NameTypeRequiredDescription
input_pointsVectoryesInput point or multipoint vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.voronoi_diagram(
    input_points,
    output_path="result.tif",
)

travelling_salesman_problem

travelling_salesman_problem(input, duration=60, output_path=None, callback=None)

Finds an approximate solution to the travelling salesman problem (TSP) for a set of points using 2-opt local search heuristics.

Parameters

NameTypeRequiredDescription
inputVectoryesInput point or multipoint vector layer.
durationintnoMaximum optimization duration in seconds (default: 60).
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Returns a polyline feature representing the optimal or near-optimal tour through the input points.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.network_analysis.travelling_salesman_problem(
    input,
    duration=1,
    output_path="result.tif",
)

construct_vector_tin

construct_vector_tin(input_points, field_name="FID", max_triangle_edge_length=-1.0, output_path=None, callback=None)

Constructs a triangular irregular network (TIN) from point features using Delaunay triangulation.

Parameters

NameTypeRequiredDescription
input_pointsVectoryesInput point or multipoint vector layer.
field_namestringnoNumeric field name used as the z-value source when filtering triangle edge lengths (default: "FID").
max_triangle_edge_lengthfloatnoMaximum allowable triangle edge length. Values <= 0 disable filtering.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.construct_vector_tin(
    input_points,
    field_name="value",
    max_triangle_edge_length=1.0,
    output_path="result.tif",
)

vector_hex_binning

vector_hex_binning(vector_points, width, orientation="h", output_path=None, callback=None)

Bins point features into a generated hexagonal grid and writes per-cell point counts.

Parameters

NameTypeRequiredDescription
vector_pointsVectoryesInput point vector layer.
widthfloatyesHexagon width (distance between opposing sides).
orientationstringnoGrid orientation ("h" for horizontal/pointy-top, "v" for vertical/flat-top).
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.sampling_gridding.vector_hex_binning(
    vector_points,
    width=1.0,
    orientation="value",
    output_path="result.tif",
)

difference

difference(input, overlay, output_path=None, callback=None, snap_tolerance=None)

Removes overlay polygon areas from input polygons.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
overlayVectoryesOverlay polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional overlay snapping tolerance.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.difference(
    input,
    overlay,
    output_path="result.tif",
    snap_tolerance=1.0,
)

eliminate_coincident_points

eliminate_coincident_points(input, tolerance_dist, output_path=None, callback=None)

Removes duplicate and near-duplicate points that fall within a specified distance tolerance.

Parameters

NameTypeRequiredDescription
inputVectoryesInput point vector layer.
tolerance_distfloatyesDistance threshold used to treat points as coincident.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.geometry_processing.eliminate_coincident_points(
    input,
    tolerance_dist=1.0,
    output_path="result.tif",
)

erase

erase(input, overlay, output_path=None, callback=None, snap_tolerance=None)

Erases overlay polygon areas from input polygons while preserving input attributes.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
overlayVectoryesOverlay polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional overlay snapping tolerance.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.erase(
    input,
    overlay,
    output_path="result.tif",
    snap_tolerance=1.0,
)

intersect

intersect(input, overlay, output_path=None, callback=None, snap_tolerance=None)

Computes polygon intersections between input and overlay layers.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
overlayVectoryesOverlay polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional overlay snapping tolerance.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.intersect(
    input,
    overlay,
    output_path="result.tif",
    snap_tolerance=1.0,
)

union

union(input, overlay, output_path=None, callback=None, snap_tolerance=None)

Builds a unified polygon coverage from input and overlay layers.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
overlayVectoryesOverlay polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.
snap_tolerancefloat|NonenoOptional overlay snapping tolerance.

GIS (Raster Polygon Masking)

These tools use polygon vectors to clip or erase cells from raster inputs.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.overlay_analysis.union(
    input,
    overlay,
    output_path="result.tif",
    snap_tolerance=1.0,
)

Raster Polygon Masking Tool Index

  • clip_raster_to_polygon
  • erase_polygon_from_raster

clip_raster_to_polygon

clip_raster_to_polygon(input, polygons, maintain_dimensions=False, output_path=None, callback=None)

Clips a raster to polygon coverage, setting cells outside polygons to NoData.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
polygonsVectoryesInput polygon vector layer.
maintain_dimensionsboolnoIf True, keep original raster dimensions; otherwise crop to polygon extent.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.clip_raster_to_polygon(
    input,
    polygons,
    output_path="result.tif",
)

erase_polygon_from_raster

erase_polygon_from_raster(input, polygons, output_path=None, callback=None)

Sets raster cells inside polygons to NoData while preserving cells outside polygons.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
polygonsVectoryesInput polygon vector layer.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.erase_polygon_from_raster(
    input,
    polygons,
    output_path="result.tif",
)

average_overlay

average_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell average across a raster stack. NoData cells are ignored unless all inputs are NoData at that location.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.average_overlay(
    input_rasters,
    output_path="result.tif",
)

count_if

count_if(input_rasters, comparison_value, output_path=None, callback=None)

Counts how many rasters in the stack equal comparison_value at each cell. If all inputs are NoData at a cell, the output cell is NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
comparison_valuefloatyesNumeric value to count within the stack.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.count_if(
    input_rasters,
    comparison_value=1.0,
    output_path="result.tif",
)

highest_position

highest_position(input_rasters, output_path=None, callback=None)

Returns the zero-based input-stack index of the raster containing the highest value at each cell. If any input cell is NoData, the output cell is NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.highest_position(
    input_rasters,
    output_path="result.tif",
)

lowest_position

lowest_position(input_rasters, output_path=None, callback=None)

Returns the zero-based input-stack index of the raster containing the lowest value at each cell. If any input cell is NoData, the output cell is NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.lowest_position(
    input_rasters,
    output_path="result.tif",
)

max_overlay

max_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell maximum across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.max_overlay(
    input_rasters,
    output_path="result.tif",
)

max_absolute_overlay

max_absolute_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell maximum absolute value across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.max_absolute_overlay(
    input_rasters,
    output_path="result.tif",
)

min_overlay

min_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell minimum across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.min_overlay(
    input_rasters,
    output_path="result.tif",
)

min_absolute_overlay

min_absolute_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell minimum absolute value across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.min_absolute_overlay(
    input_rasters,
    output_path="result.tif",
)

multiply_overlay

multiply_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell product across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.multiply_overlay(
    input_rasters,
    output_path="result.tif",
)

percent_equal_to

percent_equal_to(input_rasters, comparison, output_path=None, callback=None)

Computes the fraction of rasters in the input stack whose values equal the comparison raster at each cell. Any NoData in the comparison raster or input stack causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
comparisonRasteryesComparison raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.percent_equal_to(
    input_rasters,
    comparison,
    output_path="result.tif",
)

percent_greater_than

percent_greater_than(input_rasters, comparison, output_path=None, callback=None)

Computes the fraction of rasters in the input stack whose values are greater than the comparison raster at each cell. Any NoData in the comparison raster or input stack causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
comparisonRasteryesComparison raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.percent_greater_than(
    input_rasters,
    comparison,
    output_path="result.tif",
)

percent_less_than

percent_less_than(input_rasters, comparison, output_path=None, callback=None)

Computes the fraction of rasters in the input stack whose values are less than the comparison raster at each cell. Any NoData in the comparison raster or input stack causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
comparisonRasteryesComparison raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.percent_less_than(
    input_rasters,
    comparison,
    output_path="result.tif",
)

sum_overlay

sum_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell sum across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.sum_overlay(
    input_rasters,
    output_path="result.tif",
)

pick_from_list

pick_from_list(input_rasters, pos_input, output_path=None, callback=None)

Selects per-cell values from an input raster stack using a zero-based position raster.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
pos_inputRasteryesRaster containing zero-based indices into the raster stack.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.pick_from_list(
    input_rasters,
    pos_input,
    output_path="result.tif",
)

weighted_overlay

weighted_overlay(factors, weights, cost=None, constraints=None, scale_max=1.0, output_path=None, callback=None)

Combines factor rasters using normalized weights, optional cost flags, and optional constraint rasters. Constraint cells with values less than or equal to zero force the output to zero.

Parameters

NameTypeRequiredDescription
factorsRasteryesInput factor raster stack as a Python list of rasters or raster paths.
weightslist[float]yesNumeric weights corresponding to each factor.
costlist[bool]|NonenoOptional list of booleans indicating whether each factor is a cost surface.
constraintsRasternoOptional list of raster constraints.
scale_maxfloatnoMaximum scaled suitability value after per-factor normalization.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.weighted_overlay(
    factors,
    [weights_1, weights_2],
    [cost_1, cost_2],
    constraints,
    scale_max=1.0,
    output_path="result.tif",
)

weighted_sum

weighted_sum(input_rasters, weights, output_path=None, callback=None)

Computes a weighted sum across a raster stack after normalizing weights so they sum to one.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
weightslist[float]yesNumeric weights corresponding to each input raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.weighted_sum(
    input_rasters,
    [weights_1, weights_2],
    output_path="result.tif",
)

standard_deviation_overlay

standard_deviation_overlay(input_rasters, output_path=None, callback=None)

Computes the per-cell standard deviation across a raster stack. Any NoData input cell causes the corresponding output cell to be NoData.

Parameters

NameTypeRequiredDescription
input_rastersRasteryesInput raster stack as a Python list of rasters or raster paths.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

GIS (Raster Value Updating)

These tools update raster values in-place by applying cell-wise value replacement logic between aligned rasters.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.standard_deviation_overlay(
    input_rasters,
    output_path="result.tif",
)

Value Update Tool Index

  • update_nodata_cells

update_nodata_cells

update_nodata_cells(input1, input2, output_path=None, callback=None)

Assigns NoData cells in input1 from corresponding valid cells in input2.

Parameters

NameTypeRequiredDescription
input1RasteryesPrimary raster to update.
input2RasteryesSecondary raster supplying replacement values.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

GIS (Distance And Cost Analysis)

These tools support Euclidean and friction/cost-based distance modelling workflows.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.overlay_math.update_nodata_cells(
    input1,
    input2,
    output_path="result.tif",
)

Distance and Cost Tool Index

  • cost_allocation
  • cost_distance
  • cost_pathway
  • euclidean_allocation
  • euclidean_distance

cost_distance

cost_distance(source, cost, output_path=None, backlink_output_path=None, callback=None)

Computes accumulated cost distance from source cells over a cost/friction raster and outputs both the cost-accumulation raster and a backlink raster.

Parameters

NameTypeRequiredDescription
sourceRasteryesSource raster with positive source cells.
costRasteryesCost/friction raster.
output_pathstringnoOptional cost-accumulation output path.
backlink_output_pathstringnoOptional backlink output path.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

Returned as tuple[Raster, Raster] in this order:

  • result: Raster
  • backlink: Raster

WbEnvironment usage

raster_1, raster_2 = wbe.raster.distance_cost.cost_distance(
    source,
    cost,
    output_path="result.tif",
    backlink_output="value",
)

cost_allocation

cost_allocation(source, backlink, output_path=None, callback=None)

Assigns each cell to a source region using backlink connectivity from cost_distance.

Parameters

NameTypeRequiredDescription
sourceRasteryesSource raster with positive source cells.
backlinkRasteryesBacklink raster from cost_distance.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.distance_cost.cost_allocation(
    source,
    backlink,
    output_path="result.tif",
)

cost_pathway

cost_pathway(destination, backlink, zero_background=False, output_path=None, callback=None)

Traces least-cost pathways from destination cells using backlink connectivity from cost_distance.

Parameters

NameTypeRequiredDescription
destinationRasteryesDestination raster with positive destination cells.
backlinkRasteryesBacklink raster from cost_distance.
zero_backgroundboolnoIf True, set non-path cells to zero instead of NoData.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.distance_cost.cost_pathway(
    destination,
    backlink,
    output_path="result.tif",
)

euclidean_distance

euclidean_distance(input, output_path=None, callback=None)

Computes Euclidean distance from each valid cell to the nearest non-zero target cell.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster with non-zero target cells.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.distance_cost.euclidean_distance(
    input,
    output_path="result.tif",
)

euclidean_allocation

euclidean_allocation(input, output_path=None, callback=None)

Assigns each valid cell the value of the nearest non-zero target cell.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster with non-zero target cells.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

GIS (Raster Polygon Metrics)

These tools estimate per-class polygon metrics from categorical rasters and write class totals back to each class cell.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.distance_cost.euclidean_allocation(
    input,
    output_path="result.tif",
)

Polygon Metric Tool Index

  • polygon_area
  • polygon_long_axis
  • polygon_perimeter
  • polygon_short_axis
  • raster_area
  • raster_perimeter

polygon_area

polygon_area(input, output_path=None, callback=None)

Calculates vector polygon area and appends an AREA field to the output.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.polygon_area(
    input,
    output_path="result.tif",
)

polygon_perimeter

polygon_perimeter(input, output_path=None, callback=None)

Calculates vector polygon perimeter and appends a PERIMETER field to the output.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.polygon_perimeter(
    input,
    output_path="result.tif",
)

polygon_short_axis

polygon_short_axis(input, output_path=None, callback=None)

Maps the short axis of each polygon's minimum bounding box to output line features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.polygon_short_axis(
    input,
    output_path="result.tif",
)

polygon_long_axis

polygon_long_axis(input, output_path=None, callback=None)

Maps the long axis of each polygon's minimum bounding box to output line features.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.polygon_long_axis(
    input,
    output_path="result.tif",
)

compactness_ratio

compactness_ratio(input, output_path=None, callback=None)

Computes compactness ratio for polygon features and appends COMPACTNESS.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.compactness_ratio(
    input,
    output_path="result.tif",
)

elongation_ratio

elongation_ratio(input, output_path=None, callback=None)

Computes polygon elongation ratio and appends ELONGATION.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.elongation_ratio(
    input,
    output_path="result.tif",
)

hole_proportion

hole_proportion(input, output_path=None, callback=None)

Computes polygon hole proportion and appends HOLE_PROP.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.hole_proportion(
    input,
    output_path="result.tif",
)

linearity_index

linearity_index(input, output_path=None, callback=None)

Computes linearity index and appends LINEARITY.

Parameters

NameTypeRequiredDescription
inputVectoryesInput line or polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.linearity_index(
    input,
    output_path="result.tif",
)

narrowness_index

narrowness_index(input, output_path=None, callback=None)

Computes raster narrowness index from each cell's local neighborhood.

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.narrowness_index(
    input,
    output_path="result.tif",
)

narrowness_index_vector

narrowness_index_vector(input, output_path=None, callback=None)

Computes narrowness index for polygon features and appends NARROWNESS.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.narrowness_index_vector(
    input,
    output_path="result.tif",
)

patch_orientation

patch_orientation(input, output_path=None, callback=None)

Computes patch orientation and appends ORIENT.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.patch_orientation(
    input,
    output_path="result.tif",
)

perimeter_area_ratio

perimeter_area_ratio(input, output_path=None, callback=None)

Computes perimeter-area ratio and appends P_A_RATIO.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.perimeter_area_ratio(
    input,
    output_path="result.tif",
)
related_circumscribing_circle(input, output_path=None, callback=None)

Computes the related circumscribing circle metric and appends RC_CIRCLE.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.related_circumscribing_circle(
    input,
    output_path="result.tif",
)

shape_complexity_index_vector

shape_complexity_index_vector(input, output_path=None, callback=None)

Computes vector shape complexity index and appends SCI.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.shape_complexity_index_vector(
    input,
    output_path="result.tif",
)

deviation_from_regional_direction

deviation_from_regional_direction(input, elongation_threshold=0.75, output_path=None, callback=None)

Computes polygon directional deviation from the regional direction and appends DEV_DIR.

Parameters

NameTypeRequiredDescription
inputVectoryesInput polygon vector layer.
elongation_thresholdfloatnoThreshold for including polygons in regional direction estimation.
output_pathstringnoOptional output vector path. If omitted, an auto-derived output path is used.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.vector.shape_metrics.deviation_from_regional_direction(
    input,
    elongation_threshold=1.0,
    output_path="result.tif",
)

boundary_shape_complexity

boundary_shape_complexity(input, output_path=None, callback=None)

Computes raster patch boundary-shape complexity.

Parameters

NameTypeRequiredDescription
inputRasteryesInput patch-ID raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.boundary_shape_complexity(
    input,
    output_path="result.tif",
)

edge_proportion

edge_proportion(input, output_path=None, callback=None)

Computes edge-cell proportion per raster patch.

Parameters

NameTypeRequiredDescription
inputRasteryesInput patch-ID raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.edge_proportion(
    input,
    output_path="result.tif",
)

find_patch_edge_cells

find_patch_edge_cells(input, output_path=None, callback=None)

Identifies edge cells for each raster patch.

Parameters

NameTypeRequiredDescription
inputRasteryesInput patch-ID raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.find_patch_edge_cells(
    input,
    output_path="result.tif",
)

radius_of_gyration

radius_of_gyration(input, output_path=None, callback=None)

Computes radius of gyration per raster patch.

Parameters

NameTypeRequiredDescription
inputRasteryesInput patch-ID raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.radius_of_gyration(
    input,
    output_path="result.tif",
)

shape_complexity_index_raster

shape_complexity_index_raster(input, output_path=None, callback=None)

Computes raster patch shape complexity index.

Parameters

NameTypeRequiredDescription
inputRasteryesInput patch-ID raster.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.shape_complexity_index_raster(
    input,
    output_path="result.tif",
)

raster_area

raster_area(input, units="map units", zero_background=False, output_path=None, callback=None)

Estimates per-class area from a categorical raster and assigns each class's total area to all cells of that class.

Parameters

NameTypeRequiredDescription
inputRasteryesInput categorical raster.
unitsstringnoArea units ("map units" or "grid cells").
zero_backgroundboolnoIf True, zero-valued cells are excluded.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.raster_area(
    input,
    units="value",
    output_path="result.tif",
)

raster_perimeter

raster_perimeter(input, units="map units", zero_background=False, output_path=None, callback=None)

Estimates per-class perimeter from a categorical raster using an anti-aliasing lookup-table method and assigns each class's total perimeter to all cells of that class.

Parameters

NameTypeRequiredDescription
inputRasteryesInput categorical raster.
unitsstringnoPerimeter units ("map units" or "grid cells").
zero_backgroundboolnoIf True, zero-valued cells are excluded.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

GIS (Raster Binary And Patch Tools)

These tools are used to derive binary proximity rasters and connected-component patch identifiers from categorical inputs.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.raster_perimeter(
    input,
    units="value",
    output_path="result.tif",
)

Binary and Patch Tool Index

  • clump

clump

clump(input, diag=False, zero_background=False, output_path=None, callback=None)

Groups contiguous equal-valued cells into unique patch identifiers.

Parameters

NameTypeRequiredDescription
inputRasteryesInput categorical raster.
diagboolnoIf True, include diagonal connectivity (8-neighbour); otherwise use 4-neighbour.
zero_backgroundboolnoIf True, keep zero-valued cells as background.
output_pathstringnoOptional output path. If omitted, returns an in-memory raster.
callbackfunctionnoOptional progress callback receiving JSON events.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.raster.clump(
    input,
    output_path="result.tif",
)

Remote Sensing

Whitebox Workflows for Python — Remote Sensing Tools

This document covers all Remote Sensing tools exposed through the WbEnvironment API. For common conventions, Raster I/O, and math operators see TOOLS.md.


Remote Sensing

These tools are grouped under the remote_sensing tool module in the backend. Image filters are currently the first subset documented here; additional non-filter remote sensing tools will be added to this same section as they are ported.

Tools (Alphabetical)

wbe.gaussian_filter

wbe.gaussian_filter(
    input,
    sigma=None,
    treat_as_rgb=False,
    assume_three_band_rgb=True,
    output_path=None,
    callback=None,
) -> Raster

Applies a Gaussian smoothing kernel to a raster image.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigmafloat | None0.75Gaussian standard deviation in pixels (0.5–20.0). Larger values produce a wider, smoother kernel
treat_as_rgbboolFalseForce packed-RGB processing in HSI intensity space. When false, packed RGB may still be auto-detected from raster metadata
assume_three_band_rgbboolTrueWhen True, 3-band uint8/uint16 rasters are treated as RGB if no explicit colour metadata is present. Set False for multispectral datasets
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

# Default smoothing
smoothed = wbe.gaussian_filter(image)

# Wider kernel
smoothed_wide = wbe.gaussian_filter(image, sigma=3.0, output_path='smoothed.tif')

# Disable 3-band RGB heuristic for a multispectral image
ms_smoothed = wbe.gaussian_filter(ms_image, sigma=1.5, assume_three_band_rgb=False)

wbe.bilateral_filter

wbe.bilateral_filter(
    input,
    sigma_dist=None,
    sigma_int=None,
    treat_as_rgb=False,
    assume_three_band_rgb=True,
    output_path=None,
    callback=None,
) -> Raster

Applies an edge-preserving bilateral smoothing filter. Nearby pixels that are similar in intensity are averaged together; pixels across edges (large intensity differences) are weighted much less, preserving sharp boundaries.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigma_distfloat | None0.75Spatial (distance) Gaussian standard deviation in pixels (0.5–20.0). Controls the filter radius
sigma_intfloat | None1.0Intensity Gaussian standard deviation in raster value units. Larger values reduce edge-preservation and approach a plain Gaussian blur
treat_as_rgbboolFalseForce packed-RGB processing in HSI intensity space
assume_three_band_rgbboolTrueWhen True, 3-band uint8/uint16 rasters are treated as RGB if no explicit colour metadata is present
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

# Default edge-preserving smoothing
smoothed = wbe.bilateral_filter(image)

# Stronger smoothing with larger kernels
smoothed_strong = wbe.bilateral_filter(
    image, sigma_dist=3.0, sigma_int=50.0, output_path='bilateral.tif'
)

# Disable the 3-band RGB heuristic for a multispectral image
ms_smoothed = wbe.bilateral_filter(
    ms_image, sigma_dist=1.5, sigma_int=25.0, assume_three_band_rgb=False
)

wbe.balance_contrast_enhancement

wbe.balance_contrast_enhancement(
    input,
    band_mean=None,
    output_path=None,
    callback=None,
) -> Raster

Reduces colour bias in a packed RGB raster using per-channel balance contrast enhancement.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput packed RGB raster
band_meanfloat | None100.0Desired output mean brightness for each colour channel
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

bce = wbe.balance_contrast_enhancement(rgb_image)
bce120 = wbe.balance_contrast_enhancement(rgb_image, band_mean=120.0)

wbe.change_vector_analysis

wbe.change_vector_analysis(
    date1,
    date2,
    magnitude_output=None,
    direction_output=None,
    callback=None,
) -> dict[str, Raster]

Performs change vector analysis on two-date multispectral datasets. Returns both vector magnitude and direction-code rasters.

date1 and date2 can be either string lists (comma/semicolon-delimited) or arrays of raster inputs, and must have equal lengths.

Parameters

NameTypeDefaultDescription
date1list[Raster] | strrequiredEarlier-date raster list
date2list[Raster] | strrequiredLater-date raster list in matching band order
magnitude_outputstr | NoneNoneOptional output path for CVA magnitude raster
direction_outputstr | NoneNoneOptional output path for CVA direction-code raster
callbackcallable | NoneNoneProgress/message event handler

Returns

A dict with keys "magnitude" and "direction" containing output rasters.

Examples

cva = wbe.change_vector_analysis(
    date1=[d1_red, d1_green, d1_blue],
    date2=[d2_red, d2_green, d2_blue],
)
mag = cva["magnitude"]
direction = cva["direction"]

wbe.remote_sensing_change_detection

wbe.remote_sensing_change_detection(
    baseline_red,
    baseline_nir,
    change_red,
    change_nir,
    intermediate_ndvi=None,
    profile="balanced",
    high_confidence_threshold=0.85,
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, str]

Runs workflow-grade NDVI change detection and returns a change raster, a confidence raster, and a summary JSON path.

Parameters

NameTypeDefaultDescription
baseline_redRasterrequiredBaseline-date red band
baseline_nirRasterrequiredBaseline-date NIR band
change_redRasterrequiredChange-date red band
change_nirRasterrequiredChange-date NIR band
intermediate_ndviRaster | NoneNoneOptional intermediate NDVI raster for temporal consistency
profilestr"balanced"One of "aggressive", "balanced", "conservative"
high_confidence_thresholdfloat0.85Threshold in [0, 1] used in summary metrics
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

change_map, confidence, summary = wbe.remote_sensing_change_detection(
    baseline_red=baseline_red,
    baseline_nir=baseline_nir,
    change_red=change_red,
    change_nir=change_nir,
    profile="balanced",
)

wbe.terrain_corrected_optical_analytics

wbe.terrain_corrected_optical_analytics(
    input_dem,
    safe_root=None,
    input_red=None,
    input_nir=None,
    input_green=None,
    input_blue=None,
    solar_mode="auto",
    solar_zenith_deg=40.0,
    solar_azimuth_deg=165.0,
    acquisition_datetime_utc=None,
    latitude=None,
    longitude=None,
    profile="balanced",
    cloud_threshold=None,
    shadow_threshold=None,
    qa_mask=None,
    qa_mask_format="auto",
    mask_strategy="auto",
    z_factor=1.0,
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, Raster | None, Raster | None, Raster, Raster, Raster, str]

Runs topographic C-correction for optical imagery and returns corrected red/NIR/(optional green)/(optional blue), cloud-shadow mask, correction factor, quality confidence, and summary JSON path.

Parameters

NameTypeDefaultDescription
input_demRasterrequiredInput DEM
safe_rootstr | NoneNoneOptional Sentinel-2 SAFE root; can auto-resolve B04/B08/B03/B02 and QA metadata
input_redRaster | NoneNoneInput red band (required unless safe_root resolves B04)
input_nirRaster | NoneNoneInput NIR band (required unless safe_root resolves B08)
input_greenRaster | NoneNoneOptional green band
input_blueRaster | NoneNoneOptional blue band
solar_modestr"auto"One of "auto", "manual", "metadata", "datetime_location"
solar_zenith_degfloat40.0Solar zenith angle in degrees
solar_azimuth_degfloat165.0Solar azimuth in degrees
acquisition_datetime_utcstr | NoneNoneRFC3339 UTC timestamp for datetime_location mode
latitudefloat | NoneNoneOptional latitude for datetime_location
longitudefloat | NoneNoneOptional longitude for datetime_location
profilestr"balanced"One of "conservative", "balanced", "fast"
cloud_thresholdfloat | NoneNoneOptional cloud threshold override in source units
shadow_thresholdfloat | NoneNoneOptional shadow threshold override in source units
qa_maskRaster | NoneNoneOptional QA mask raster
qa_mask_formatstr"auto"One of "auto", "landsat_qa_pixel", "sentinel2_scl", "sentinel2_qa60", "binary"
mask_strategystr"auto"One of "auto", "qa_only", "heuristic_only", "qa_plus_heuristic"
z_factorfloat1.0Vertical exaggeration for slope/aspect derivation
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

red_corr, nir_corr, green_corr, blue_corr, mask, correction_factor, quality, summary = wbe.terrain_corrected_optical_analytics(
    input_dem=dem,
    input_red=red_band,
    input_nir=nir_band,
    input_green=green_band,
    input_blue=blue_band,
    profile="balanced",
)

wbe.time_series_change_intelligence

wbe.time_series_change_intelligence(
    input_stack,
    qa_stack=None,
    algorithm_mode="fast",
    min_observations=24,
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, Raster, Raster, str]

Runs temporal trend and breakpoint workflow analysis on a stack-like raster input. Returns trend change, breakpoint count, breakpoint date, change confidence, and summary JSON path.

Parameters

NameTypeDefaultDescription
input_stackRasterrequiredInput temporal stack raster
qa_stackRaster | NoneNoneOptional QA stack used to screen low-quality observations
algorithm_modestr"fast"Algorithm mode (e.g. "fast", "iterative", "bfast")
min_observationsint24Minimum per-pixel observations needed for model fitting
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

trend, count, date, confidence, summary = wbe.time_series_change_intelligence(
    input_stack=time_stack,
    qa_stack=time_stack_qa,
    algorithm_mode="bfast",
    min_observations=24,
)

wbe.sar_coregistration

wbe.sar_coregistration(
    reference_sar,
    moving_sar,
    coreg_mode="translation",
    max_offset_px=24,
    decimation=4,
    min_overlap_fraction=0.20,
    resample_method="bilinear",
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, Raster, str, str]

Runs SAR pair coregistration and returns the aligned moving raster, x/y offset rasters, transform JSON path, and summary JSON path.

Parameters

NameTypeDefaultDescription
reference_sarRasterrequiredReference SAR raster
moving_sarRasterrequiredMoving SAR raster to align onto the reference grid
coreg_modestr"translation"Coregistration mode: translation, affine, or local_offset_grid
max_offset_pxint24Maximum absolute pixel offset searched during alignment
decimationint4Sampling stride used during global search
min_overlap_fractionfloat0.20Minimum valid sampled overlap fraction
resample_methodstr"bilinear"Output resampling mode: bilinear or nearest
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

aligned, offset_x, offset_y, transform_json, summary = wbe.sar_coregistration(
    reference_sar=reference,
    moving_sar=moving,
    coreg_mode="translation",
    max_offset_px=24,
)

wbe.sar_interferogram_coherence

wbe.sar_interferogram_coherence(
    reference_sar,
    moving_sar,
    auto_coregister_pair=False,
    assume_prealigned_pair=False,
    coreg_mode="translation",
    coreg_max_offset_px=24,
    coreg_decimation=4,
    coreg_min_overlap_fraction=0.20,
    performance_profile="balanced",
    coherence_decimation=1,
    coherence_window=7,
    write_interferogram=True,
    write_coherence=True,
    write_valid_mask=True,
    output_prefix=None,
    callback=None,
) -> tuple[Raster | None, Raster | None, Raster | None, str]

Runs the dedicated SAR interferogram/coherence workflow and returns optional interferogram, coherence, and valid-mask rasters plus the summary JSON path.

Parameters

NameTypeDefaultDescription
reference_sarRasterrequiredReference SAR raster
moving_sarRasterrequiredMoving SAR raster
auto_coregister_pairboolFalseInvoke internal coregistration when the pair is not already aligned
assume_prealigned_pairboolFalseAssert that the pair is already aligned and skip auto-coregistration
coreg_modestr"translation"Coregistration handoff mode
coreg_max_offset_pxint24Maximum absolute pixel offset searched during handoff
coreg_decimationint4Sampling stride used during handoff
coreg_min_overlap_fractionfloat0.20Minimum sampled overlap fraction required during handoff
performance_profilestr"balanced"Runtime profile: balanced or fast
coherence_decimationint1Optional coherence sampling stride
coherence_windowint7Odd-valued coherence window size
write_interferogramboolTrueWrite interferogram raster output
write_coherenceboolTrueWrite coherence raster output
write_valid_maskboolTrueWrite valid-mask raster output
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

interferogram, coherence, valid_mask, summary = wbe.sar_interferogram_coherence(
    reference_sar=reference,
    moving_sar=moving,
    assume_prealigned_pair=True,
    coherence_window=7,
)

wbe.sar_analysis_readiness

wbe.sar_analysis_readiness(
    input_sar,
    input_dem,
    pair_sar=None,
    speckle_window=5,
    z_factor=1.0,
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, Raster, Raster | None, str]

Runs SAR analysis-ready preprocessing and returns calibrated backscatter, speckle-filtered SAR, RTC factor, optional coherence-proxy raster, and summary JSON path.

Parameters

NameTypeDefaultDescription
input_sarRasterrequiredInput SAR raster
input_demRasterrequiredDEM used for terrain corrections
pair_sarRaster | NoneNoneOptional second SAR raster used for coherence-proxy output
speckle_windowint5Speckle filtering window size
z_factorfloat1.0Vertical exaggeration factor for terrain terms
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

calibrated, speckle, rtc, coherence_proxy, summary = wbe.sar_analysis_readiness(
    input_sar=sar_a,
    input_dem=dem,
    pair_sar=sar_b,
    speckle_window=5,
)

wbe.multi_sensor_fusion_monitoring

wbe.multi_sensor_fusion_monitoring(
    baseline_bundle,
    change_bundle,
    input_sar,
    input_dem,
    baseline_red_band_index=0,
    baseline_nir_band_index=1,
    change_red_band_index=0,
    change_nir_band_index=1,
    pair_sar=None,
    thermal_bundle=None,
    thermal_band_index=0,
    profile="balanced",
    harmonization_mode="robust",
    high_confidence_threshold=0.8,
    max_zone_features=25000,
    vector_output_format="gpkg",
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, Raster, Raster, Vector, str, str, str]

Runs multi-sensor disturbance fusion from optical change, SAR stability cues, and terrain context. Returns fused change probability, sensor agreement, terrain context, uncertainty inflation, high-confidence zones, thermal contract JSON path, modality diagnostics JSON path, and a summary JSON path.

Parameters

NameTypeDefaultDescription
baseline_bundleRasterrequiredBaseline-date multiband raster bundle
change_bundleRasterrequiredChange-date multiband raster bundle
input_sarRasterrequiredSAR raster for agreement/fusion cues
input_demRasterrequiredDEM used for terrain context
baseline_red_band_indexint0Baseline red-band index
baseline_nir_band_indexint1Baseline NIR-band index
change_red_band_indexint0Change red-band index
change_nir_band_indexint1Change NIR-band index
pair_sarRaster | NoneNoneOptional paired SAR raster for coherence-style cues
thermal_bundleRaster | NoneNoneOptional thermal raster used for three-modality fusion
thermal_band_indexint0Thermal band index in thermal_bundle
profilestr"balanced"One of "fast", "balanced", "conservative"
harmonization_modestr"robust"One of "off", "robust", "conservative"
high_confidence_thresholdfloat0.8Threshold in [0, 1] used to derive high-confidence zones
max_zone_featuresint25000Maximum number of output zone features
vector_output_formatstr"gpkg"One of "gpkg", "geojson", "shp"
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

fused, agreement, terrain, uncertainty, zones, thermal_contract, modality_diagnostics, summary = wbe.multi_sensor_fusion_monitoring(
    baseline_bundle=baseline_bundle,
    change_bundle=change_bundle,
    input_sar=sar_a,
    input_dem=dem,
    baseline_red_band_index=0,
    baseline_nir_band_index=1,
    change_red_band_index=0,
    change_nir_band_index=1,
    pair_sar=sar_b,
    thermal_bundle=thermal,
    thermal_band_index=0,
    profile="balanced",
    harmonization_mode="robust",
    vector_output_format="gpkg",
)

wbe.brdf_surface_reflectance_consistency

wbe.brdf_surface_reflectance_consistency(
    input_red,
    input_nir,
    input_dem,
    solar_zenith_deg,
    solar_azimuth_deg,
    input_green=None,
    profile="balanced",
    output_prefix=None,
    callback=None,
) -> tuple[Raster, Raster, Raster, str]

Runs BRDF/illumination consistency normalization and returns normalized reflectance, normalization delta, consistency confidence, and a summary JSON path.

Parameters

NameTypeDefaultDescription
input_redRasterrequiredInput red band
input_nirRasterrequiredInput NIR band
input_demRasterrequiredDEM used for terrain-aware normalization
solar_zenith_degfloatrequiredSolar zenith angle in degrees
solar_azimuth_degfloatrequiredSolar azimuth in degrees
input_greenRaster | NoneNoneOptional green band
profilestr"balanced"One of "fast", "balanced", "conservative"
output_prefixstr | NoneNonePrefix for generated outputs
callbackcallable | NoneNoneProgress/message event handler

Examples

normalized, delta, confidence, summary = wbe.brdf_surface_reflectance_consistency(
    input_red=red_band,
    input_nir=nir_band,
    input_dem=dem,
    solar_zenith_deg=40.0,
    solar_azimuth_deg=165.0,
    input_green=green_band,
    profile="balanced",
)

wbe.write_function_memory_insertion

wbe.write_function_memory_insertion(
    input1,
    input2,
    input3=None,
    output_path=None,
    callback=None,
) -> Raster

Creates a packed RGB change-visualization composite from two or three single-band dates.

When input3 is omitted, the second-date raster is used for both green and blue channels, producing the classic two-date red/cyan change visualization.

Parameters

NameTypeDefaultDescription
input1RasterrequiredFirst-date single-band raster (red channel)
input2RasterrequiredSecond-date single-band raster (green channel)
input3Raster | NoneNoneOptional third-date single-band raster (blue channel); defaults to input2
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

# Two-date mode (R=date1, G/B=date2)
wfmi2 = wbe.write_function_memory_insertion(date1, date2)

# Three-date mode (R=date1, G=date2, B=date3)
wfmi3 = wbe.write_function_memory_insertion(date1, date2, input3=date3)

wbe.closing

wbe.closing(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Performs a morphological closing using a rectangular structuring element.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

closed = wbe.closing(image)
closed5 = wbe.closing(image, filter_size_x=5, filter_size_y=5)

wbe.corner_detection

wbe.corner_detection(
    input,
    output_path=None,
    callback=None,
) -> Raster

Identifies corner patterns in binary rasters using hit-and-miss templates. Foreground cells are values greater than zero; zero and nodata are treated as background.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput binary raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

corners = wbe.corner_detection(binary_image)

wbe.create_colour_composite

wbe.create_colour_composite(
    red,
    green,
    blue,
    opacity=None,
    enhance=None,
    treat_zeros_as_nodata=None,
    output_path=None,
    callback=None,
) -> Raster

Creates a packed RGB colour composite from red, green, blue, and optional opacity rasters.

Parameters

NameTypeDefaultDescription
redRasterrequiredRed-band raster
greenRasterrequiredGreen-band raster
blueRasterrequiredBlue-band raster
opacityRaster | NoneNoneOptional opacity raster mapped into the alpha channel
enhancebool | NoneTrueApply balance contrast enhancement after composing
treat_zeros_as_nodatabool | NoneFalseTreat zero values in RGB inputs as background/nodata
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

rgb = wbe.create_colour_composite(red_band, green_band, blue_band)
rgba = wbe.create_colour_composite(
    red_band, green_band, blue_band, opacity=mask, enhance=False
)

wbe.anisotropic_diffusion_filter

wbe.anisotropic_diffusion_filter(
    input,
    iterations=None,
    kappa=None,
    lambda=None,
    output_path=None,
    callback=None,
) -> Raster

Perona-Malik anisotropic diffusion smoothing. This filter reduces noise while limiting diffusion across strong edges.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
iterationsint | None10Number of diffusion iterations
kappafloat | None20.0Edge sensitivity (higher values smooth across larger gradients)
lambdafloat | None0.2Diffusion time-step in (0, 0.25]
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

ad = wbe.anisotropic_diffusion_filter(image)
ad_strong = wbe.anisotropic_diffusion_filter(image, iterations=20, kappa=15.0, lambda=0.2)

wbe.gamma_correction

wbe.gamma_correction(
    input,
    gamma=None,
    output_path=None,
    callback=None,
) -> Raster

Applies gamma intensity correction where output values are computed as z_out = z_in^gamma.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
gammafloat | None0.5Gamma exponent in [0, 4]
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

gamma_light = wbe.gamma_correction(image, gamma=0.5)
gamma_dark = wbe.gamma_correction(image, gamma=2.0)

wbe.guided_filter

wbe.guided_filter(
    input,
    radius=None,
    epsilon=None,
    output_path=None,
    callback=None,
) -> Raster

Edge-preserving guided filter using local linear models and box-filtered statistics.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
radiusint | None4Local window radius in pixels
epsilonfloat | None0.01Regularization term for local variance
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

gf = wbe.guided_filter(image)
gf_tight = wbe.guided_filter(image, radius=8, epsilon=0.001)

wbe.wiener_filter

wbe.wiener_filter(
    input,
    radius=None,
    noise_variance=None,
    output_path=None,
    callback=None,
) -> Raster

Adaptive Wiener denoising filter based on local mean and variance statistics. If noise_variance is omitted, the filter estimates it from the image's local variance map.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
radiusint | None2Local window radius in pixels
noise_variancefloat | NoneestimatedOptional additive noise variance
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

wiener = wbe.wiener_filter(image)
wiener_known_noise = wbe.wiener_filter(image, radius=3, noise_variance=4.0)

wbe.non_local_means_filter

wbe.non_local_means_filter(
    input,
    search_radius=None,
    patch_radius=None,
    h=None,
    output_path=None,
    callback=None,
) -> Raster

Non-local means denoiser that averages similar patches within a search window.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
search_radiusint | None5Search window radius in pixels
patch_radiusint | None1Patch radius in pixels
hfloat | None10.0Filtering strength parameter
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

nlm = wbe.non_local_means_filter(image)
nlm_strong = wbe.non_local_means_filter(image, search_radius=7, patch_radius=1, h=15.0)

wbe.kuwahara_filter

wbe.kuwahara_filter(
    input,
    radius=None,
    output_path=None,
    callback=None,
) -> Raster

Edge-preserving Kuwahara filter that selects the lowest-variance quadrant mean for each pixel.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
radiusint | None2Quadrant radius in pixels
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

kuw = wbe.kuwahara_filter(image)
kuw_wide = wbe.kuwahara_filter(image, radius=3)

wbe.frost_filter

wbe.frost_filter(
    input,
    radius=None,
    damping_factor=None,
    output_path=None,
    callback=None,
) -> Raster

Adaptive Frost speckle filter with exponential distance weighting controlled by local statistics.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
radiusint | None2Local window radius in pixels
damping_factorfloat | None2.0Exponential damping factor
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

frost = wbe.frost_filter(image)
frost_strong = wbe.frost_filter(image, radius=3, damping_factor=3.0)

wbe.gamma_map_filter

wbe.gamma_map_filter(
    input,
    radius=None,
    enl=None,
    output_path=None,
    callback=None,
) -> Raster

Gamma-MAP speckle filter for radar imagery using local coefficient-of-variation regimes and ENL.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
radiusint | None2Local window radius in pixels
enlfloat | None1.0Equivalent number of looks
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

gmap = wbe.gamma_map_filter(image)
gmap_enl4 = wbe.gamma_map_filter(image, radius=3, enl=4.0)

wbe.kuan_filter

wbe.kuan_filter(
    input,
    radius=None,
    enl=None,
    output_path=None,
    callback=None,
) -> Raster

Kuan speckle filter for radar imagery using an adaptive linear combination of the center pixel and local mean.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
radiusint | None2Local window radius in pixels
enlfloat | None1.0Equivalent number of looks
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

kuan = wbe.kuan_filter(image)
kuan_enl4 = wbe.kuan_filter(image, radius=3, enl=4.0)

wbe.gabor_filter_bank

wbe.gabor_filter_bank(
    input,
    sigma=None,
    frequency=None,
    orientations=None,
    output_path=None,
    callback=None,
) -> Raster

Multi-orientation Gabor filter bank. The output is the maximum response across all tested orientations.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigmafloat | None2.0Gaussian envelope sigma in pixels
frequencyfloat | None0.2Sinusoid spatial frequency in cycles/pixel
orientationsint | None6Number of orientations in the filter bank
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

gabor = wbe.gabor_filter_bank(image)
gabor_dense = wbe.gabor_filter_bank(image, sigma=3.0, frequency=0.15, orientations=8)

wbe.frangi_filter

wbe.frangi_filter(
    input,
    scales=None,
    beta=None,
    c=None,
    output_path=None,
    callback=None,
) -> Raster

Multiscale Frangi vesselness enhancement filter for curvilinear feature emphasis.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
scaleslist[float] | None[1.0, 2.0, 3.0]Scale list used in multiscale response
betafloat | None0.5Blob suppression parameter
cfloat | None15.0Structure sensitivity parameter
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

frangi = wbe.frangi_filter(image)
frangi_multi = wbe.frangi_filter(image, scales=[1.0, 2.0, 4.0], beta=0.5, c=20.0)

wbe.savitzky_golay_2d_filter

wbe.savitzky_golay_2d_filter(
    input,
    window_size=None,
    output_path=None,
    callback=None,
) -> Raster

2D Savitzky-Golay smoothing filter. Current implementation supports window_size=5 (quadratic smoothing kernel).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
window_sizeint | None5Odd window size (currently fixed to 5)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sg = wbe.savitzky_golay_2d_filter(image)
sg5 = wbe.savitzky_golay_2d_filter(image, window_size=5)

wbe.fast_almost_gaussian_filter

wbe.fast_almost_gaussian_filter(
    input,
    sigma=None,
    output_path=None,
    callback=None,
) -> Raster

Fast approximation of Gaussian smoothing using repeated box filtering. This is typically best for larger kernels (sigma >= 1.8).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigmafloat | None1.8Target Gaussian sigma. Values below 1.8 are clamped to 1.8
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

smoothed = wbe.fast_almost_gaussian_filter(image)
smoothed_big = wbe.fast_almost_gaussian_filter(image, sigma=5.0)

wbe.edge_preserving_mean_filter

wbe.edge_preserving_mean_filter(
    input,
    filter_size=None,
    threshold=None,
    output_path=None,
    callback=None,
) -> Raster

Applies a thresholded local mean where only neighbors within threshold of the center value are included in the average.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_sizeint | None11Odd square neighborhood size in pixels
thresholdfloat | None15.0Max absolute neighbor difference allowed in local mean
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

epm = wbe.edge_preserving_mean_filter(image)
epm_tight = wbe.edge_preserving_mean_filter(image, filter_size=9, threshold=5.0)

wbe.unsharp_masking

wbe.unsharp_masking(
    input,
    sigma=None,
    amount=None,
    threshold=None,
    output_path=None,
    callback=None,
) -> Raster

Sharpens edges by subtracting a Gaussian blur from the source and adding a scaled residual back to the image.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigmafloat | None0.75Gaussian sigma for blur mask (0.5–20.0)
amountfloat | None100.0Residual multiplier for sharpening strength
thresholdfloat | None0.0Minimum absolute residual needed to sharpen
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sharp = wbe.unsharp_masking(image)
sharp_strong = wbe.unsharp_masking(image, sigma=1.5, amount=150.0, threshold=0.01)

wbe.diff_of_gaussians_filter

wbe.diff_of_gaussians_filter(
    input,
    sigma1=None,
    sigma2=None,
    output_path=None,
    callback=None,
) -> Raster

Difference-of-Gaussians (DoG) band-pass filter computed as blur(sigma1) - blur(sigma2).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigma1float | None2.0Smaller Gaussian sigma (0.25–20.0)
sigma2float | None4.0Larger Gaussian sigma (0.5–20.0). If reversed, values are swapped internally
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

dog = wbe.diff_of_gaussians_filter(image)
dog_custom = wbe.diff_of_gaussians_filter(image, sigma1=1.5, sigma2=3.0)

wbe.adaptive_filter

wbe.adaptive_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    threshold=None,
    output_path=None,
    callback=None,
) -> Raster

Adaptive smoothing that replaces only center cells whose local z-score exceeds threshold relative to neighborhood mean and variance.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
thresholdfloat | None2.0Absolute z-score threshold for replacement
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

adaptive = wbe.adaptive_filter(image)
adaptive_tight = wbe.adaptive_filter(image, filter_size_x=9, filter_size_y=9, threshold=1.5)

wbe.lee_filter

wbe.lee_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    sigma=None,
    m_value=None,
    output_path=None,
    callback=None,
) -> Raster

Lee sigma filter that averages in-range neighbors (z ± sigma) and falls back to immediate-neighbor averaging when in-range support is low.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
sigmafloat | None10.0Intensity inclusion half-width around center value
m_valuefloat | None5.0Minimum in-range sample count before fallback
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

lee = wbe.lee_filter(image)
lee_custom = wbe.lee_filter(image, filter_size_x=9, filter_size_y=9, sigma=6.0, m_value=4.0)

wbe.conservative_smoothing_filter

wbe.conservative_smoothing_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Conservative smoother that clips spike values to neighborhood extrema while preserving most non-outlier cells.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None3Odd neighborhood width
filter_size_yint | None3Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

cs = wbe.conservative_smoothing_filter(image)
cs_wide = wbe.conservative_smoothing_filter(image, filter_size_x=5, filter_size_y=5)

wbe.olympic_filter

wbe.olympic_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Mean-like smoother that drops the minimum and maximum values in each neighborhood before averaging.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

olympic = wbe.olympic_filter(image)
olympic_small = wbe.olympic_filter(image, filter_size_x=5, filter_size_y=5)

wbe.k_nearest_mean_filter

wbe.k_nearest_mean_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    k=None,
    output_path=None,
    callback=None,
) -> Raster

Edge-preserving smoother that averages only the k local neighbors most similar to the center value.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None3Odd neighborhood width
filter_size_yint | None3Odd neighborhood height
kint | None5Number of nearest neighbors to include in mean
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

knn_mean = wbe.k_nearest_mean_filter(image)
knn_mean_custom = wbe.k_nearest_mean_filter(image, filter_size_x=5, filter_size_y=5, k=8)

wbe.high_pass_median_filter

wbe.high_pass_median_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    sig_digits=None,
    output_path=None,
    callback=None,
) -> Raster

High-pass median filter that outputs center value minus local median using quantized histogram bins controlled by sig_digits.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
sig_digitsint | None2Significant digits used for quantization bins
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

hpm = wbe.high_pass_median_filter(image)
hpm_precise = wbe.high_pass_median_filter(image, filter_size_x=7, filter_size_y=7, sig_digits=3)

wbe.laplacian_of_gaussians_filter

wbe.laplacian_of_gaussians_filter(
    input,
    sigma=None,
    output_path=None,
    callback=None,
) -> Raster

Laplacian-of-Gaussians (LoG) edge-enhancement filter using a sigma-derived kernel footprint.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigmafloat | None0.75Gaussian sigma used by LoG kernel (0.5–20.0)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

log_img = wbe.laplacian_of_gaussians_filter(image)
log_wide = wbe.laplacian_of_gaussians_filter(image, sigma=2.0)

wbe.diversity_filter

wbe.diversity_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window diversity filter (count of unique values in each neighborhood).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

div = wbe.diversity_filter(image)
div5 = wbe.diversity_filter(image, filter_size_x=5, filter_size_y=5)

wbe.emboss_filter

wbe.emboss_filter(
    input,
    direction=None,
    clip_amount=None,
    output_path=None,
    callback=None,
) -> Raster

Directional emboss convolution filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
directionstr | None"n"Emboss direction: n, s, e, w, ne, nw, se, sw
clip_amountfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

emb = wbe.emboss_filter(image)
emb_ne = wbe.emboss_filter(image, direction='ne', clip_amount=1.0)

wbe.high_pass_filter

wbe.high_pass_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

High-pass filter using neighborhood mean subtraction.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

hp = wbe.high_pass_filter(image)
hp7 = wbe.high_pass_filter(image, filter_size_x=7, filter_size_y=7)

wbe.high_pass_bilateral_filter

wbe.high_pass_bilateral_filter(
    input,
    sigma_dist=None,
    sigma_int=None,
    treat_as_rgb=None,
    assume_three_band_rgb=None,
    output_path=None,
    callback=None,
) -> Raster

Computes a high-pass residual by subtracting bilateral smoothing from the input raster. This emphasizes local texture while reducing dominance of strong edges.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
sigma_distfloat | None0.75Spatial Gaussian standard deviation in pixels (0.5–20.0)
sigma_intfloat | None1.0Intensity Gaussian standard deviation in raster-value units
treat_as_rgbbool | NoneFalseForce packed RGB HSI-intensity processing
assume_three_band_rgbbool | NoneTrueEnable 3-band RGB heuristic when metadata is absent
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

hpb = wbe.high_pass_bilateral_filter(image)
hpb_tex = wbe.high_pass_bilateral_filter(image, sigma_dist=2.5, sigma_int=4.0)

wbe.laplacian_filter

wbe.laplacian_filter(
    input,
    variant=None,
    clip_amount=None,
    output_path=None,
    callback=None,
) -> Raster

Laplacian edge/sharpen filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
variantstr | None"3x3(1)"Kernel variant: 3x3(1), 3x3(2), 3x3(3), 3x3(4), 5x5(1), 5x5(2)
clip_amountfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

lap = wbe.laplacian_filter(image)
lap5 = wbe.laplacian_filter(image, variant='5x5(1)', clip_amount=1.0)

wbe.line_detection_filter

wbe.line_detection_filter(
    input,
    variant=None,
    abs_values=None,
    clip_tails=None,
    output_path=None,
    callback=None,
) -> Raster

Directional line-detection convolution filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
variantstr | None"v"Line direction variant: v, h, 45, 135
abs_valuesbool | NoneFalseIf True, return absolute response
clip_tailsfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

line_v = wbe.line_detection_filter(image)
line_45 = wbe.line_detection_filter(image, variant='45', abs_values=True)

wbe.line_thinning

wbe.line_thinning(
    input,
    output_path=None,
    callback=None,
) -> Raster

Performs iterative skeletonization, reducing connected binary features to one-cell-wide lines.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster; positive values are treated as foreground
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

skeleton = wbe.line_thinning(binary_image)

wbe.generalize_classified_raster

wbe.generalize_classified_raster(
    input,
    area_threshold=5,
    method="longest",
    output_path=None,
    callback=None,
) -> Raster

Generalizes a classified raster by reassigning small patches to neighboring classes. Use method="longest", "largest", or "nearest" depending on the desired merge behavior.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput classified raster
area_thresholdint5Minimum feature size (cells); smaller patches are reassigned
methodstr"longest"Merge strategy: longest, largest, or nearest
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

generalized = wbe.generalize_classified_raster(
    classes,
    area_threshold=15,
    method="largest",
)

wbe.majority_filter

wbe.majority_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window majority (mode) filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

maj = wbe.majority_filter(image)
maj3 = wbe.majority_filter(image, filter_size_x=3, filter_size_y=3)

wbe.maximum_filter

wbe.maximum_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window maximum filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

mx = wbe.maximum_filter(image)
mx7 = wbe.maximum_filter(image, filter_size_x=7, filter_size_y=7)

wbe.mean_filter

wbe.mean_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window mean filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

mn = wbe.mean_filter(image)
mn9 = wbe.mean_filter(image, filter_size_x=9, filter_size_y=9)

wbe.median_filter

wbe.median_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    sig_digits=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window median filter using quantization bins controlled by sig_digits.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
sig_digitsint | None2Significant digits used for quantized rank filtering
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

med = wbe.median_filter(image)
med_precise = wbe.median_filter(image, filter_size_x=7, filter_size_y=7, sig_digits=3)

wbe.minimum_filter

wbe.minimum_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window minimum filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

mn = wbe.minimum_filter(image)
mn5 = wbe.minimum_filter(image, filter_size_x=5, filter_size_y=5)

wbe.percentile_filter

wbe.percentile_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    sig_digits=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window percentile-rank filter using quantization bins controlled by sig_digits.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
sig_digitsint | None2Significant digits used for quantized rank filtering
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

pct = wbe.percentile_filter(image)
pct_precise = wbe.percentile_filter(image, filter_size_x=7, filter_size_y=7, sig_digits=3)

wbe.prewitt_filter

wbe.prewitt_filter(
    input,
    clip_tails=None,
    output_path=None,
    callback=None,
) -> Raster

Prewitt edge-detection filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
clip_tailsfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

prew = wbe.prewitt_filter(image)
prew_clip = wbe.prewitt_filter(image, clip_tails=1.0)

wbe.range_filter

wbe.range_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window range filter (max - min).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

rng = wbe.range_filter(image)
rng7 = wbe.range_filter(image, filter_size_x=7, filter_size_y=7)

wbe.remove_spurs

wbe.remove_spurs(
    input,
    max_iterations=None,
    output_path=None,
    callback=None,
) -> Raster

Removes small spur branches from binary raster features using iterative pruning templates.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster; positive values are treated as foreground
max_iterationsint | None10Maximum number of pruning iterations
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

pruned = wbe.remove_spurs(binary_image)
pruned_strict = wbe.remove_spurs(binary_image, max_iterations=20)

wbe.roberts_cross_filter

wbe.roberts_cross_filter(
    input,
    clip_amount=None,
    output_path=None,
    callback=None,
) -> Raster

Roberts Cross edge-detection filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
clip_amountfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

rob = wbe.roberts_cross_filter(image)
rob_clip = wbe.roberts_cross_filter(image, clip_amount=1.0)

wbe.scharr_filter

wbe.scharr_filter(
    input,
    clip_tails=None,
    output_path=None,
    callback=None,
) -> Raster

Scharr edge-detection filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
clip_tailsfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sch = wbe.scharr_filter(image)
sch_clip = wbe.scharr_filter(image, clip_tails=1.0)

wbe.sobel_filter

wbe.sobel_filter(
    input,
    variant=None,
    clip_tails=None,
    output_path=None,
    callback=None,
) -> Raster

Sobel edge-detection filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
variantstr | None"3x3"Kernel size variant: 3x3 or 5x5
clip_tailsfloat | None0.0Optional symmetric tail clipping percent (0-40)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sob = wbe.sobel_filter(image)
sob5 = wbe.sobel_filter(image, variant='5x5', clip_tails=1.0)

wbe.standard_deviation_filter

wbe.standard_deviation_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window standard deviation filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

std = wbe.standard_deviation_filter(image)
std5 = wbe.standard_deviation_filter(image, filter_size_x=5, filter_size_y=5)

wbe.total_filter

wbe.total_filter(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Moving-window total (sum) filter.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

tot = wbe.total_filter(image)
tot9 = wbe.total_filter(image, filter_size_x=9, filter_size_y=9)

wbe.user_defined_weights_filter

wbe.user_defined_weights_filter(
    input,
    weights,
    kernel_center=None,
    normalize_weights=None,
    output_path=None,
    callback=None,
) -> Raster

Applies a user-defined convolution kernel.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
weightslist[list[float]]required2D convolution kernel with equal row lengths
kernel_centerstr | None"center"Kernel center policy (center by default)
normalize_weightsbool | NoneFalseIf True, normalize kernel sum before convolution
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sharpen = wbe.user_defined_weights_filter(
    image,
    weights=[[0, -1, 0], [-1, 5, -1], [0, -1, 0]],
)

wbe.flip_image

wbe.flip_image(
    input,
    direction=None,
    output_path=None,
    callback=None,
) -> Raster

Flips an image vertically, horizontally, or both.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
directionstr | None"vertical"Flip direction: vertical, horizontal, or both
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

flip_v = wbe.flip_image(image)
flip_h = wbe.flip_image(image, direction='horizontal')
flip_b = wbe.flip_image(image, direction='both')

wbe.direct_decorrelation_stretch

wbe.direct_decorrelation_stretch(
    input,
    achromatic_factor=None,
    clip_percent=None,
    output_path=None,
    callback=None,
) -> Raster

Improves packed RGB image saturation by reducing the achromatic component and linearly stretching the result.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput packed RGB raster
achromatic_factorfloat | None0.5Grey-component reduction factor from 0 to 1
clip_percentfloat | None1.0Percent tail clipping used in the final linear stretch
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

dds = wbe.direct_decorrelation_stretch(rgb_image)
dds_strong = wbe.direct_decorrelation_stretch(rgb_image, achromatic_factor=0.7, clip_percent=2.0)

wbe.image_slider

wbe.image_slider(
    left_raster,
    right_raster,
    output_html_file=None,
    left_label="",
    right_label="",
    image_height=600,
    callback=None,
) -> str

Creates an interactive HTML swipe/slider view for two input rasters. The tool also writes PNG previews beside the HTML output.

Parameters

NameTypeDefaultDescription
left_rasterRasterrequiredLeft image input
right_rasterRasterrequiredRight image input
output_html_filestr | NoneNoneHTML output path; defaults to image_slider.html in the working directory
left_labelstr""Optional left-side label
right_labelstr""Optional right-side label
image_heightint600Slider height in pixels (minimum 50)
callbackcallable | NoneNoneProgress/message event handler

Examples

html = wbe.image_slider(
    left_raster=before,
    right_raster=after,
    left_label="Before",
    right_label="After",
    image_height=640,
    output_html_file="change_slider.html",
)

wbe.integral_image_transform

wbe.integral_image_transform(
    input,
    output_path=None,
    callback=None,
) -> Raster

Computes the summed-area table (integral image) transform for each raster band.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

ii = wbe.integral_image_transform(image)

wbe.opening

wbe.opening(
    input,
    filter_size_x=None,
    filter_size_y=None,
    output_path=None,
    callback=None,
) -> Raster

Performs a morphological opening using a rectangular structuring element.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

opened = wbe.opening(image)
opened7 = wbe.opening(image, filter_size_x=7, filter_size_y=7)

wbe.otsu_thresholding

wbe.otsu_thresholding(
    input,
    output_path=None,
    callback=None,
) -> Raster

Applies Otsu's automatic thresholding to produce a binary raster with values of 0 and 1.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

binary = wbe.otsu_thresholding(image)

wbe.normalized_difference_index

wbe.normalized_difference_index(
    input,
    band1=None,
    band2=None,
    output_path=None,
    callback=None,
) -> Raster

Computes a normalized difference index: (band1 - band2) / (band1 + band2).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput multiband raster
band1int | None1One-based index of first band
band2int | None2One-based index of second band
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

ndi = wbe.normalized_difference_index(multiband)
ndvi_like = wbe.normalized_difference_index(multiband, band1=5, band2=4)

wbe.histogram_equalization

wbe.histogram_equalization(
    input,
    num_tones=None,
    output_path=None,
    callback=None,
) -> Raster

Applies histogram equalization to improve image contrast.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
num_tonesint | None256Number of output tones
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

eq = wbe.histogram_equalization(input=image)
eq1024 = wbe.histogram_equalization(input=image, num_tones=1024)

wbe.histogram_matching

wbe.histogram_matching(
    input,
    histogram,
    is_cumulative=None,
    output_path=None,
    callback=None,
) -> Raster

Matches an image histogram to a user-supplied reference histogram.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
histogramlist[list[float]] | list[dict]requiredReference histogram as [[value, frequency], ...] or [{"x": value, "y": frequency}, ...]
is_cumulativebool | NoneFalseSet True if histogram frequencies are already cumulative
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

ref = [[0.0, 0.05], [64.0, 0.25], [128.0, 0.75], [255.0, 1.0]]
matched = wbe.histogram_matching(image, histogram=ref, is_cumulative=True)

wbe.histogram_matching_two_images

wbe.histogram_matching_two_images(
    input,
    reference,
    output_path=None,
    callback=None,
) -> Raster

Matches an input image histogram to the histogram of a reference image.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
referenceRasterrequiredReference raster whose distribution is used as the target
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

matched = wbe.histogram_matching_two_images(input=source_image, reference=reference_image)

wbe.gaussian_contrast_stretch

wbe.gaussian_contrast_stretch(
    input,
    num_tones=None,
    output_path=None,
    callback=None,
) -> Raster

Performs Gaussian contrast stretching by matching to a Gaussian reference histogram.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
num_tonesint | None256Number of output tones
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

gcs = wbe.gaussian_contrast_stretch(image)
gcs1024 = wbe.gaussian_contrast_stretch(image, num_tones=1024)

wbe.min_max_contrast_stretch

wbe.min_max_contrast_stretch(
    input,
    min_val,
    max_val,
    num_tones=None,
    output_path=None,
    callback=None,
) -> Raster

Linearly stretches values between user-provided minimum and maximum limits.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
min_valfloatrequiredLower bound for scaling
max_valfloatrequiredUpper bound for scaling
num_tonesint | None256Number of output tones
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

stretch = wbe.min_max_contrast_stretch(image, min_val=50.0, max_val=1500.0)

wbe.mosaic

wbe.mosaic(
    inputs,
    method=None,
    output_path=None,
    callback=None,
) -> Raster

Mosaics two or more rasters into a new output image spanning the combined extent of all input rasters.

Cells with overlap are resolved by input order, with later rasters in inputs taking precedence over earlier rasters.

Parameters

NameTypeDefaultDescription
inputslist[Raster]requiredInput rasters to mosaic (minimum 2)
methodstr | None"nn"Resampling method: "nn", "bilinear", or "cc"
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

mosaic = wbe.mosaic([tile1, tile2, tile3])
mosaic_smooth = wbe.mosaic([tile1, tile2], method="cc", output_path="mosaic.tif")

wbe.mosaic_with_feathering

wbe.mosaic_with_feathering(
    input1,
    input2,
    method=None,
    weight=None,
    output_path=None,
    callback=None,
) -> Raster

Mosaics two rasters and feather-blends overlap zones to reduce seam artifacts.

In overlapping areas, each raster contributes according to distance-to-edge weights, so cells further from source-image edges receive larger influence.

Parameters

NameTypeDefaultDescription
input1RasterrequiredFirst input raster
input2RasterrequiredSecond input raster
methodstr | None"cc"Resampling method: "nn", "bilinear", or "cc"
weightfloat | None4.0Distance-weight exponent used in overlap blending
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

feathered = wbe.mosaic_with_feathering(image1, image2)
feathered_soft = wbe.mosaic_with_feathering(
    image1,
    image2,
    method="bilinear",
    weight=2.0,
    output_path="mosaic_feathered.tif",
)

wbe.k_means_clustering

wbe.k_means_clustering(
    inputs,
    classes,
    max_iterations=None,
    class_change=None,
    initialize=None,
    min_class_size=None,
    out_html=None,
    output_path=None,
    callback=None,
) -> Raster

Performs k-means clustering on two or more input rasters (typically a multispectral stack) and returns a categorical class raster.

Parameters

NameTypeDefaultDescription
inputslist[Raster]requiredInput rasters (minimum 2)
classesintrequiredNumber of target classes
max_iterationsint | None10Maximum iteration count (2-250)
class_changefloat | None2.0Percent changed-cell stop threshold (0-25)
initializestr | None"diagonal"Initial centroid mode: "diagonal" or "random"
min_class_sizeint | None10Minimum class size used when updating centroids
out_htmlstr | NoneNoneOptional output HTML report path
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

classes = wbe.k_means_clustering(
    inputs=[b1, b2, b3],
    classes=10,
    initialize="random",
    out_html="kmeans_report.html",
)

wbe.modified_k_means_clustering

wbe.modified_k_means_clustering(
    inputs,
    merge_dist,
    start_clusters=None,
    max_iterations=None,
    class_change=None,
    out_html=None,
    output_path=None,
    callback=None,
) -> Raster

Runs a modified k-means workflow that begins with an overestimated cluster count and merges nearby centroids during iteration.

Parameters

NameTypeDefaultDescription
inputslist[Raster]requiredInput rasters (minimum 2)
merge_distfloatrequiredEuclidean centroid merge threshold
start_clustersint | None1000Initial cluster count before merging
max_iterationsint | None10Maximum iteration count (2-250)
class_changefloat | None2.0Percent changed-cell stop threshold (0-25)
out_htmlstr | NoneNoneOptional output HTML report path
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

mod_classes = wbe.modified_k_means_clustering(
    inputs=[b1, b2, b3],
    start_clusters=80,
    merge_dist=25.0,
    out_html="modified_kmeans_report.html",
)

wbe.correct_vignetting

wbe.correct_vignetting(
    input,
    pp,
    focal_length=None,
    image_width=None,
    n=None,
    output_path=None,
    callback=None,
) -> Raster

Corrects lens vignetting (darkening toward image edges) relative to a principal point using a cosine falloff model.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster image
ppVector | str | dictrequiredPoint vector layer (path or typed vector object) containing the principal point
focal_lengthfloat | None304.8Camera focal length in mm
image_widthfloat | None228.6Distance between left-right image edges in mm
nfloat | None4.0Vignetting model exponent
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

corrected = wbe.correct_vignetting(
    input=image,
    pp="principal_point.geojson",
    focal_length=304.8,
    image_width=228.6,
    n=4.0,
)

wbe.image_stack_profile

wbe.image_stack_profile(
    inputs,
    points,
    output_html=None,
    callback=None,
) -> dict

Extracts point signatures across an ordered stack of rasters and returns the profile values as structured output. An optional HTML report can also be generated.

points should reference a vector point layer. Each point geometry is mapped to pixel row/column locations using the first raster in inputs.

Parameters

NameTypeDefaultDescription
inputslist[Raster]requiredInput raster stack (minimum 2)
pointsVector | str | dictrequiredPoint vector layer (path or typed vector object) with sample locations
output_htmlstr | NoneNoneOptional HTML report output path
callbackcallable | NoneNoneProgress/message event handler

Examples

profiles = wbe.image_stack_profile(
    inputs=[image1, image2, image3],
    points="sample_points.geojson",
    output_html="stack_profile.html",
)

wbe.panchromatic_sharpening

wbe.panchromatic_sharpening(
    red=None,
    green=None,
    blue=None,
    composite=None,
    pan,
    method=None,
    output_mode=None,
    output_path=None,
    callback=None,
) -> Raster

Fuses multispectral and panchromatic rasters using either Brovey or IHS pan-sharpening.

Provide either separate red/green/blue rasters or a packed RGB composite raster.

output_mode controls output encoding:

  1. packed (default): single-band packed RGB raster
  2. bands: 3-band raster with explicit R, G, B channels

Parameters

NameTypeDefaultDescription
redRaster | NoneNoneRed-band raster (mutually exclusive with composite)
greenRaster | NoneNoneGreen-band raster (mutually exclusive with composite)
blueRaster | NoneNoneBlue-band raster (mutually exclusive with composite)
compositeRaster | NoneNonePacked RGB multispectral raster (mutually exclusive with red/green/blue)
panRasterrequiredPanchromatic raster
methodstr | None"brovey"Fusion method: "brovey" or "ihs"
output_modestr | None"packed"Output encoding: "packed" or "bands"
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

# Default packed RGB output
ps = wbe.panchromatic_sharpening(
    red=red_band, green=green_band, blue=blue_band, pan=pan_band
)

# 3-band RGB output mode
ps_bands = wbe.panchromatic_sharpening(
    composite=rgb_composite,
    pan=pan_band,
    method="ihs",
    output_mode="bands",
)

wbe.resample

wbe.resample(
    inputs,
    cell_size=None,
    base=None,
    method=None,
    output_path=None,
    callback=None,
) -> Raster

Resamples one or more source rasters into a destination grid defined by either an explicit cell_size or a base raster.

If both cell_size and base are provided, base determines the output extent and resolution. Cells with overlap are resolved by input order, with later rasters in inputs taking precedence.

Parameters

NameTypeDefaultDescription
inputslist[Raster]requiredInput rasters to resample (minimum 1)
cell_sizefloat | NoneNoneOutput cell size when base is not provided
baseRaster | NoneNoneBase raster defining output extent/grid (takes precedence over cell_size)
methodstr | None"cc"Resampling method: "nn", "bilinear", or "cc"
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

# Resample to a new cell size over combined input extent
resampled = wbe.resample([image1, image2], cell_size=10.0)

# Resample into an existing grid definition
resampled_to_base = wbe.resample([image1], base=target_grid, method="bilinear")

wbe.piecewise_contrast_stretch

wbe.piecewise_contrast_stretch(
    input,
    transformation_statement,
    num_greytones=1024,
    output_path=None,
    callback=None,
) -> Raster

Applies a piecewise linear contrast transfer function to raster brightness values. For packed RGB rasters, mapping is applied to HSI intensity and colour is preserved.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
transformation_statementstrrequiredBreakpoint statement like "(50,0.1);(120,0.6);(180,0.85)"
num_greytonesint1024Number of output tones for non-RGB output (minimum 32)
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

stretched = wbe.piecewise_contrast_stretch(
    image,
    transformation_statement="(80,0.2);(140,0.7);(200,0.92)",
    num_greytones=512,
)

wbe.percentage_contrast_stretch

wbe.percentage_contrast_stretch(
    input,
    clip=None,
    tail=None,
    num_tones=None,
    output_path=None,
    callback=None,
) -> Raster

Performs linear contrast stretching with percentile clipping.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
clipfloat | None1.0Percentile clip amount (0-50)
tailstr | None"both"Tail clipping mode: both, upper, or lower
num_tonesint | None256Number of output tones
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

stretched = wbe.percentage_contrast_stretch(image)
stretched_custom = wbe.percentage_contrast_stretch(image, clip=2.0, tail='upper', num_tones=512)

wbe.sigmoidal_contrast_stretch

wbe.sigmoidal_contrast_stretch(
    input,
    cutoff=None,
    gain=None,
    num_tones=None,
    output_path=None,
    callback=None,
) -> Raster

Performs a sigmoidal contrast stretch controlled by midpoint (cutoff) and slope (gain).

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
cutofffloat | None0.0Normalized sigmoid midpoint (clamped to 0.0-0.95)
gainfloat | None1.0Sigmoid gain/slope parameter
num_tonesint | None256Number of output tones
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sig = wbe.sigmoidal_contrast_stretch(image)
sig_strong = wbe.sigmoidal_contrast_stretch(image, cutoff=0.5, gain=10.0, num_tones=512)

wbe.standard_deviation_contrast_stretch

wbe.standard_deviation_contrast_stretch(
    input,
    clip=None,
    num_tones=None,
    output_path=None,
    callback=None,
) -> Raster

Performs a linear contrast stretch using clip bounds derived from the mean and standard deviation of the image.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
clipfloat | None2.0Standard deviation multiplier used to define lower and upper clip bounds
num_tonesint | None256Number of output tones
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

sds = wbe.standard_deviation_contrast_stretch(image)
sds3 = wbe.standard_deviation_contrast_stretch(image, clip=3.0, num_tones=512)

wbe.ihs_to_rgb

wbe.ihs_to_rgb(
    intensity,
    hue,
    saturation,
    red_output=None,
    green_output=None,
    blue_output=None,
    callback=None,
) -> dict[str, Raster]

Converts intensity, hue, and saturation band rasters back to red, green, and blue channels (0–255).

Parameters

NameTypeDefaultDescription
intensityRasterrequiredIntensity band raster (values in 0–1)
hueRasterrequiredHue band raster (radians, 0–2π)
saturationRasterrequiredSaturation band raster (values in 0–1)
red_outputstr | NoneNoneOutput file path for the red band; omit to keep in memory
green_outputstr | NoneNoneOutput file path for the green band; omit to keep in memory
blue_outputstr | NoneNoneOutput file path for the blue band; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Returns

A dict with keys "red", "green", "blue" each holding a single-band Raster with values in 0–255.

Examples

bands = wbe.ihs_to_rgb(intensity, hue, saturation)
red, green, blue = bands["red"], bands["green"], bands["blue"]

wbe.rgb_to_ihs

wbe.rgb_to_ihs(
    red=None,
    green=None,
    blue=None,
    composite=None,
    intensity_output=None,
    hue_output=None,
    saturation_output=None,
    callback=None,
) -> dict[str, Raster]

Transforms red, green, blue rasters (or a packed RGB composite) to intensity, hue, and saturation components using the HSI colour model.

Pass either three separate red/green/blue single-band rasters (each normalised to 0–1 per-band before conversion) or a single packed composite raster.

Parameters

NameTypeDefaultDescription
redRaster | NoneNoneRed-band raster (mutually exclusive with composite)
greenRaster | NoneNoneGreen-band raster (mutually exclusive with composite)
blueRaster | NoneNoneBlue-band raster (mutually exclusive with composite)
compositeRaster | NoneNonePacked RGB composite raster (mutually exclusive with red/green/blue)
intensity_outputstr | NoneNoneOutput file path for the intensity band
hue_outputstr | NoneNoneOutput file path for the hue band
saturation_outputstr | NoneNoneOutput file path for the saturation band
callbackcallable | NoneNoneProgress/message event handler

Returns

A dict with keys "intensity", "hue", "saturation" each holding a single-band Raster.

Examples

# From separate bands
ihs = wbe.rgb_to_ihs(red=red_band, green=green_band, blue=blue_band)

# From a packed composite
ihs = wbe.rgb_to_ihs(composite=rgb_image)
intensity = ihs["intensity"]

wbe.split_colour_composite

wbe.split_colour_composite(
    input,
    red_output=None,
    green_output=None,
    blue_output=None,
    callback=None,
) -> dict[str, Raster]

Splits a packed RGB colour composite into separate red, green, and blue single-band rasters.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput packed RGB raster
red_outputstr | NoneNoneOutput file path for the red band; omit to keep in memory
green_outputstr | NoneNoneOutput file path for the green band; omit to keep in memory
blue_outputstr | NoneNoneOutput file path for the blue band; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Returns

A dict with keys "red", "green", "blue" each holding a single-band Raster with values in 0–255.

Examples

bands = wbe.split_colour_composite(rgb_image)
red = bands["red"]
green = bands["green"]
blue = bands["blue"]

wbe.thicken_raster_line

wbe.thicken_raster_line(
    input,
    output_path=None,
    callback=None,
) -> Raster

Thickens diagonal single-cell raster line segments to prevent crossing between diagonal foreground cells.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster; positive values are treated as line foreground
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

thickened = wbe.thicken_raster_line(lines)

wbe.tophat_transform

wbe.tophat_transform(
    input,
    filter_size_x=None,
    filter_size_y=None,
    variant=None,
    output_path=None,
    callback=None,
) -> Raster

Performs either a white or black morphological top-hat transform.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_size_xint | None11Odd neighborhood width
filter_size_yint | None11Odd neighborhood height
variantstr | None"white"Transform variant: white or black
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

white_hat = wbe.tophat_transform(image)
black_hat = wbe.tophat_transform(image, filter_size_x=9, filter_size_y=9, variant='black')

wbe.canny_edge_detection

wbe.canny_edge_detection(
    input,
    sigma=0.5,
    low_threshold=0.05,
    high_threshold=0.15,
    add_back=False,
    output_path=None,
    callback=None,
) -> Raster

Applies Canny edge detection to a single-band or packed-RGB raster. The algorithm proceeds through four stages: Gaussian smoothing, Sobel gradient computation, non-maximum suppression, and double-threshold hysteresis.

Parameters

NameTypeDefaultDescription
inputRasterrequiredInput raster (single-band or packed RGB)
sigmafloat0.5Standard deviation (in pixels) of the Gaussian smoothing kernel (clamped to 0.15–20)
low_thresholdfloat0.05Low hysteresis threshold as a fraction (0–1) of the high threshold
high_thresholdfloat0.15High hysteresis threshold as a fraction (0–1) of the peak gradient magnitude
add_backboolFalseIf True, edge pixels are zeroed in the original image instead of producing a binary edge map
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

edges = wbe.canny_edge_detection(image)
edges = wbe.canny_edge_detection(image, sigma=1.0, low_threshold=0.05, high_threshold=0.15, output_path='edges.tif')

wbe.min_dist_classification

wbe.min_dist_classification(
    input_rasters,
    training_data,
    class_field_name,
    dist_threshold=None,
    output_path=None,
    callback=None,
) -> Raster

Performs a supervised minimum-distance classification on a stack of single-band rasters using polygon training data. Each unknown pixel is assigned to the class whose mean spectral vector is closest in Euclidean distance. An optional z-score threshold (dist_threshold) can be used to leave uncertain pixels unclassified. Output pixel values are 1-based class integers; unclassified pixels carry the nodata value (−32768).

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per spectral band
training_dataVectorrequiredPolygon vector containing labelled training areas
class_field_namestrrequiredAttribute field name identifying each polygon's class
dist_thresholdfloat | NoneNoneZ-score threshold; pixels whose Euclidean distance exceeds this threshold are left unclassified. Omit to classify all pixels.
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

training = wbe.Vector('training.shp')
classified = wbe.min_dist_classification([band1, band2, band3], training, 'class')
classified = wbe.min_dist_classification([band1, band2, band3], training, 'class', dist_threshold=3.0, output_path='classified.tif')

wbe.parallelepiped_classification

wbe.parallelepiped_classification(
    input_rasters,
    training_data,
    class_field_name,
    output_path=None,
    callback=None,
) -> Raster

Performs a supervised parallelepiped classification on a stack of single-band rasters using polygon training data. For each class, the minimum and maximum pixel values from the training areas define a multi-dimensional hyper-rectangular decision region (parallelepiped). A pixel is assigned to the first class (sorted by smallest spectral volume) whose parallelepiped contains the pixel's feature vector. Pixels that do not fall within any class parallelepiped are left unclassified (nodata = −32768).

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per spectral band
training_dataVectorrequiredPolygon vector containing labelled training areas
class_field_namestrrequiredAttribute field name identifying each polygon's class
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

training = wbe.Vector('training.shp')
classified = wbe.parallelepiped_classification([band1, band2, band3], training, 'class')
classified = wbe.parallelepiped_classification([band1, band2, band3], training, 'class', output_path='classified.tif')

wbe.evaluate_training_sites

wbe.evaluate_training_sites(
    input_rasters,
    training_data,
    class_field_name,
    output_path=None,
    callback=None,
) -> str

Evaluates class separability for polygon training sites across one or more spectral bands, and writes an HTML report containing per-class, per-band distribution statistics (sample count, min, quartiles, median, max, mean, and standard deviation).

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per spectral band
training_dataVectorrequiredPolygon vector containing labelled training areas
class_field_namestrrequiredAttribute field name identifying each polygon's class
output_pathstr | NoneNoneOutput HTML file path; default is training_sites_report.html in the working directory
callbackcallable | NoneNoneProgress/message event handler

Examples

training = wbe.Vector('training.shp')
report = wbe.evaluate_training_sites([band1, band2, band3], training, 'class')
report = wbe.evaluate_training_sites([band1, band2, band3], training, 'class', output_path='training_eval.html')

wbe.generalize_with_similarity

wbe.generalize_with_similarity(
    raster,
    similarity_rasters,
    min_size=5,
    output_path=None,
    callback=None,
) -> Raster

Generalizes a classified raster by identifying small contiguous patches and merging each into a neighboring patch with the most similar multi-band feature center in standardized similarity space.

Parameters

NameTypeDefaultDescription
rasterRasterrequiredInput classified raster
similarity_rastersList[Raster]requiredOne or more rasters used to compute inter-feature similarity
min_sizeint5Minimum feature size (pixels); smaller features are merged
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

generalized = wbe.generalize_with_similarity(classes, [band1, band2, band3])
generalized = wbe.generalize_with_similarity(classes, [band1, band2, band3], min_size=8, output_path='generalized_similarity.tif')

wbe.image_segmentation

wbe.image_segmentation(
    input_rasters,
    threshold=0.5,
    steps=10,
    min_area=4,
    output_path=None,
    callback=None,
) -> Raster

Segments a multi-band raster stack into contiguous, relatively homogeneous regions using seeded region growing in standardized feature space. An optional minimum-area post-process can merge undersized regions into similar neighbors.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per input band
thresholdfloat0.5Region-growing distance threshold in standardized feature space
stepsint10Number of seed-priority levels; higher values provide finer seed stratification
min_areaint4Minimum segment area in pixels; smaller segments are merged in cleanup
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

segments = wbe.image_segmentation([band1, band2, band3])
segments = wbe.image_segmentation([band1, band2, band3], threshold=0.45, steps=12, min_area=6, output_path='segments.tif')

wbe.fuzzy_knn_classification

wbe.fuzzy_knn_classification(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    k=5,
    m=2.0,
    output_path=None,
    probability_output_path=None,
    callback=None,
) -> Tuple[Raster, Raster]

Performs fuzzy k-nearest-neighbor classification and returns both a crisp class raster and a membership-probability raster (the winning-class membership per cell).

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
kint5Number of neighbors
mfloat2.0Fuzzy exponent parameter (> 1)
output_pathstr | NoneNoneOptional classified raster output path
probability_output_pathstr | NoneNoneOptional probability raster output path
callbackcallable | NoneNoneProgress/message event handler

Examples

classified, probability = wbe.fuzzy_knn_classification([band1, band2, band3], training, 'class')
classified, probability = wbe.fuzzy_knn_classification(
    [band1, band2, band3],
    training,
    'class',
    scaling_method='standardize',
    k=7,
    m=2.0,
    output_path='fuzzy_knn_classified.tif',
    probability_output_path='fuzzy_knn_probability.tif',
)

wbe.knn_classification

wbe.knn_classification(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    k=5,
    use_clipping=False,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised k-nearest-neighbor classification on a multi-band raster stack.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
kint5Number of neighbors
use_clippingboolFalseIf True, removes misclassified training samples using leave-one-out pre-clipping
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

classified = wbe.knn_classification([band1, band2, band3], training, 'class')
classified = wbe.knn_classification(
    [band1, band2, band3],
    training,
    'class',
    scaling_method='standardize',
    k=7,
    use_clipping=True,
    output_path='knn_classified.tif',
)

wbe.knn_regression

wbe.knn_regression(
    input_rasters,
    training_data,
    field_name,
    scaling_method="none",
    k=5,
    distance_weighting=False,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised k-nearest-neighbor regression using point-based training targets.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint training vector with numeric target values
field_namestrrequiredNumeric target field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
kint5Number of neighbors
distance_weightingboolFalseIf True, predictions use inverse-distance weighted averaging
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

pred = wbe.knn_regression([band1, band2, band3], training_points, 'value')
pred = wbe.knn_regression(
    [band1, band2, band3],
    training_points,
    'value',
    scaling_method='standardize',
    k=8,
    distance_weighting=True,
    output_path='knn_regression.tif',
)

wbe.logistic_regression

wbe.logistic_regression(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    alpha=0.0,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised logistic regression classification on multi-band predictors.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
alphafloat0.0L2 regularization weight
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

classified = wbe.logistic_regression([band1, band2, band3], training, 'class')
classified = wbe.logistic_regression(
    [band1, band2, band3],
    training,
    'class',
    scaling_method='standardize',
    alpha=0.1,
    output_path='logistic_regression.tif',
)

wbe.svm_classification

wbe.svm_classification(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    kernel="linear",
    c=1.0,
    gamma=None,
    epoch=2,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised support-vector-machine classification using one-vs-rest voting for multiclass labels.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
kernelstr"linear"SVM kernel: "linear" or "rbf"
cfloat1.0Regularization parameter
gammafloat | NoneNoneRBF gamma; defaults to 1 / n_features when omitted
epochint2Number of training epochs
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

classified = wbe.svm_classification([band1, band2, band3], training, 'class')
classified = wbe.svm_classification(
    [band1, band2, band3],
    training,
    'class',
    scaling_method='standardize',
    kernel='rbf',
    c=2.0,
    gamma=0.25,
    epoch=3,
    output_path='svm_classified.tif',
)

wbe.svm_regression

wbe.svm_regression(
    input_rasters,
    training_data,
    field_name,
    scaling_method="none",
    kernel="linear",
    c=1.0,
    gamma=None,
    eps=0.1,
    tol=1e-3,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised support-vector-machine regression on multi-band predictors.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint training vector with numeric target values
field_namestrrequiredNumeric target field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
kernelstr"linear"SVM kernel: "linear" or "rbf"
cfloat1.0Regularization parameter
gammafloat | NoneNoneRBF gamma; defaults to 1 / n_features when omitted
epsfloat0.1Epsilon-insensitive loss width
tolfloat1e-3Optimizer convergence tolerance
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

pred = wbe.svm_regression([band1, band2, band3], training_points, 'value')
pred = wbe.svm_regression(
    [band1, band2, band3],
    training_points,
    'value',
    scaling_method='standardize',
    kernel='rbf',
    c=2.0,
    gamma=0.25,
    eps=0.05,
    tol=1e-3,
    output_path='svm_regression.tif',
)

wbe.random_forest_classification

wbe.random_forest_classification(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    n_trees=200,
    min_samples_leaf=1,
    min_samples_split=2,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised random forest classification using point/polygon training data.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
n_treesint200Number of trees in the forest
min_samples_leafint1Minimum number of samples at each leaf
min_samples_splitint2Minimum number of samples to split a node
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

classified = wbe.random_forest_classification([band1, band2, band3], training, 'class')
classified = wbe.random_forest_classification(
    [band1, band2, band3],
    training,
    'class',
    scaling_method='standardize',
    n_trees=300,
    min_samples_leaf=1,
    min_samples_split=2,
    output_path='rf_classified.tif',
)

wbe.random_forest_regression

wbe.random_forest_regression(
    input_rasters,
    training_data,
    field_name,
    scaling_method="none",
    n_trees=200,
    min_samples_leaf=1,
    min_samples_split=2,
    output_path=None,
    callback=None,
) -> Raster

Performs supervised random forest regression using point training targets.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint training vector with numeric target values
field_namestrrequiredNumeric target field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
n_treesint200Number of trees in the forest
min_samples_leafint1Minimum number of samples at each leaf
min_samples_splitint2Minimum number of samples to split a node
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

pred = wbe.random_forest_regression([band1, band2, band3], training_points, 'value')
pred = wbe.random_forest_regression(
    [band1, band2, band3],
    training_points,
    'value',
    scaling_method='standardize',
    n_trees=300,
    min_samples_leaf=1,
    min_samples_split=2,
    output_path='rf_regression.tif',
)

wbe.random_forest_classification_fit

wbe.random_forest_classification_fit(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    split_criterion="gini",
    n_trees=200,
    min_samples_leaf=1,
    min_samples_split=2,
    test_proportion=0.2,
    callback=None,
) -> List[int]

Fits a random forest classifier and returns serialized model bytes for later prediction.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
split_criterionstr"gini"Legacy split criterion argument for compatibility
n_treesint200Number of trees in the forest
min_samples_leafint1Minimum number of samples at each leaf
min_samples_splitint2Minimum number of samples to split a node
test_proportionfloat0.2Legacy compatibility parameter for train/test split workflows
callbackcallable | NoneNoneProgress/message event handler

Examples

model_bytes = wbe.random_forest_classification_fit([band1, band2, band3], training, 'class')

wbe.random_forest_classification_predict

wbe.random_forest_classification_predict(
    input_rasters,
    model_bytes,
    output_path=None,
    callback=None,
) -> Raster

Applies a fitted random forest classification model (byte-array payload) to predictor rasters.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
model_bytesList[int]requiredModel bytes returned by wbe.random_forest_classification_fit
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

model_bytes = wbe.random_forest_classification_fit([band1, band2, band3], training, 'class')
classified = wbe.random_forest_classification_predict([band1, band2, band3], model_bytes)

wbe.random_forest_regression_fit

wbe.random_forest_regression_fit(
    input_rasters,
    training_data,
    field_name,
    scaling_method="none",
    n_trees=200,
    min_samples_leaf=1,
    min_samples_split=2,
    test_proportion=0.2,
    callback=None,
) -> List[int]

Fits a random forest regressor and returns serialized model bytes for later prediction.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint training vector with numeric target values
field_namestrrequiredNumeric target field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
n_treesint200Number of trees in the forest
min_samples_leafint1Minimum number of samples at each leaf
min_samples_splitint2Minimum number of samples to split a node
test_proportionfloat0.2Legacy compatibility parameter for train/test split workflows
callbackcallable | NoneNoneProgress/message event handler

Examples

model_bytes = wbe.random_forest_regression_fit([band1, band2, band3], training_points, 'value')

wbe.random_forest_regression_predict

wbe.random_forest_regression_predict(
    input_rasters,
    model_bytes,
    output_path=None,
    callback=None,
) -> Raster

Applies a fitted random forest regression model (byte-array payload) to predictor rasters.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
model_bytesList[int]requiredModel bytes returned by wbe.random_forest_regression_fit
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

model_bytes = wbe.random_forest_regression_fit([band1, band2, band3], training_points, 'value')
pred = wbe.random_forest_regression_predict([band1, band2, band3], model_bytes)

wbe.nnd_classification

wbe.nnd_classification(
    input_rasters,
    training_data,
    class_field_name,
    scaling_method="none",
    z_threshold=1.96,
    outlier_is_zero=True,
    k=25,
    output_path=None,
    callback=None,
) -> Raster

Performs nearest-normalized-distance classification. For each class, distances are normalized by within-class distance statistics; optional thresholding can flag outliers.

Parameters

NameTypeDefaultDescription
input_rastersList[Raster]requiredOne single-band raster per feature band
training_dataVectorrequiredPoint/polygon training vector with class labels
class_field_namestrrequiredClass field name in training attributes
scaling_methodstr"none"Feature scaling mode: "none", "normalize", "standardize"
z_thresholdfloat1.96Outlier threshold in normalized-distance units
outlier_is_zeroboolTrueIf True, outliers are encoded as class 0; otherwise as nodata
kint25Neighborhood size used in class-distance estimates
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Examples

classified = wbe.nnd_classification([band1, band2, band3], training, 'class')
classified = wbe.nnd_classification(
    [band1, band2, band3],
    training,
    'class',
    scaling_method='standardize',
    z_threshold=2.0,
    outlier_is_zero=True,
    k=25,
    output_path='nnd_classified.tif',
)

Geomorphometry And Terrain Signatures

Whitebox Workflows for Python — Geomorphometry Tools

This document covers all Geomorphometry tools exposed through the WbEnvironment API. For common conventions, Raster I/O, and math operators see TOOLS.md.


Geomorphometry

Terrain analysis and land-surface form tools available on WbEnvironment.

Tools (Alphabetical)

  • wbe.accumulation_curvature
  • wbe.average_normal_vector_angular_deviation
  • wbe.aspect
  • wbe.assess_route
  • wbe.average_horizon_distance
  • wbe.breakline_mapping
  • wbe.casorati_curvature
  • wbe.circular_variance_of_aspect
  • wbe.contours_from_points
  • wbe.contours_from_raster
  • wbe.curvedness
  • wbe.convergence_index
  • wbe.dem_void_filling
  • wbe.deviation_from_mean_elevation
  • wbe.difference_curvature
  • wbe.difference_from_mean_elevation
  • wbe.directional_relief
  • wbe.downslope_index
  • wbe.edge_density
  • wbe.embankment_mapping
  • wbe.elev_above_pit
  • wbe.elev_above_pit_dist
  • wbe.elev_relative_to_min_max
  • wbe.elev_relative_to_watershed_min_max
  • wbe.elevation_percentile
  • wbe.exposure_towards_wind_flux
  • wbe.max_downslope_elev_change
  • wbe.max_upslope_elev_change
  • wbe.feature_preserving_smoothing
  • wbe.gaussian_curvature
  • wbe.fetch_analysis
  • wbe.fill_missing_data
  • wbe.find_ridges
  • wbe.geomorphons
  • wbe.generating_function
  • wbe.horizon_angle
  • wbe.horizon_area
  • wbe.hillshade
  • wbe.hypsometric_analysis
  • wbe.hypsometrically_tinted_hillshade
  • wbe.local_hypsometric_analysis
  • wbe.low_points_on_headwater_divides
  • wbe.map_off_terrain_objects
  • wbe.horizontal_excess_curvature
  • wbe.maximal_curvature
  • wbe.max_difference_from_mean
  • wbe.max_anisotropy_dev
  • wbe.max_anisotropy_dev_signature
  • wbe.max_branch_length
  • wbe.max_elevation_deviation
  • wbe.max_elev_dev_signature
  • wbe.mean_curvature
  • wbe.min_downslope_elev_change
  • wbe.minimal_curvature
  • wbe.multidirectional_hillshade
  • wbe.multiscale_curvatures
  • wbe.multiscale_elevated_index
  • wbe.multiscale_elevation_percentile
  • wbe.multiscale_low_lying_index
  • wbe.multiscale_roughness
  • wbe.multiscale_roughness_signature
  • wbe.multiscale_std_dev_normals
  • wbe.multiscale_std_dev_normals_signature
  • wbe.multiscale_topographic_position_class
  • wbe.multiscale_topographic_position_image
  • wbe.num_downslope_neighbours
  • wbe.num_upslope_neighbours
  • wbe.openness
  • wbe.pennock_landform_classification
  • wbe.plan_curvature
  • wbe.percent_elev_range
  • wbe.principal_curvature_direction
  • wbe.profile
  • wbe.profile_curvature
  • wbe.relative_aspect
  • wbe.relative_topographic_position
  • wbe.remove_off_terrain_objects
  • wbe.relative_stream_power_index
  • wbe.ring_curvature
  • wbe.rotor
  • wbe.ruggedness_index
  • wbe.sediment_transport_index
  • wbe.shape_index
  • wbe.soil_landscape_classification
  • wbe.spherical_std_dev_of_normals
  • wbe.sky_view_factor
  • wbe.shadow_animation
  • wbe.shadow_image
  • wbe.skyline_analysis
  • wbe.smooth_vegetation_residual
  • wbe.slope
  • wbe.slope_vs_aspect_plot
  • wbe.slope_vs_elev_plot
  • wbe.standard_deviation_of_slope
  • wbe.surface_area_ratio
  • wbe.tangential_curvature
  • wbe.time_in_daylight
  • wbe.topographic_hachures
  • wbe.topographic_position_animation
  • wbe.topo_render
  • wbe.total_curvature
  • wbe.unsphericity
  • wbe.visibility_index
  • wbe.vertical_excess_curvature
  • wbe.viewshed
  • wbe.wetness_index

Basic terrain tools

wbe.slope

wbe.slope(input, units='degrees', z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates slope gradient for each cell in a DEM.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
unitsstr'degrees'Output units: 'degrees', 'radians', or 'percent'
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.aspect

wbe.aspect(input, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates slope aspect (orientation, degrees clockwise from north) for each cell in a DEM. Flat surfaces return −1.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.convergence_index

wbe.convergence_index(input, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates the convergence/divergence index based on neighbour aspects relative to the center cell.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.hillshade

wbe.hillshade(input, azimuth=315.0, altitude=30.0, z_factor=1.0, output_path=None, callback=None) -> Raster

Produces a shaded-relief image from a DEM. Output values are scaled 0–32767.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
azimuthfloat315.0Illumination azimuth, degrees clockwise from north (0–360)
altitudefloat30.0Illumination altitude above horizon, degrees (0–90)
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Single-scale curvature signature

wbe.multidirectional_hillshade

wbe.multidirectional_hillshade(input, altitude=30.0, z_factor=1.0, full_360_mode=False, output_path=None, callback=None) -> Raster

Produces a weighted multi-azimuth shaded-relief image. In the default 4-direction mode illumination azimuths of 225°, 270°, 315°, and 360° are combined with weights 0.1, 0.4, 0.4, 0.1. In 360-degree mode eight evenly spaced azimuths are used. Output values are scaled 0–32767.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
altitudefloat30.0Illumination altitude above horizon, degrees (0–90)
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
full_360_modeboolFalseUse 8 azimuths (360°) instead of 4
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.ruggedness_index

wbe.ruggedness_index(input, output_path=None, callback=None) -> Raster

Calculates the terrain ruggedness index (TRI) after Riley et al. (1999). Each cell value is the root-mean-square deviation of the 8 surrounding elevation differences from the centre cell.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.surface_area_ratio

wbe.surface_area_ratio(input, output_path=None, callback=None) -> Raster

Calculates the ratio of 3D surface area to planimetric cell area using the Jenness (2004) triangular-facet method. Values ≥ 1; flat terrain returns 1.0. Geographic (lat/lon) rasters apply per-row cosine scaling.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.elev_relative_to_min_max

wbe.elev_relative_to_min_max(input, output_path=None, callback=None) -> Raster

Expresses each elevation as a percentage (0–100) of the raster's global elevation range: (z − min) / (max − min) × 100.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.wetness_index

wbe.wetness_index(sca, slope, output_path=None, callback=None) -> Raster

Calculates the topographic wetness index (TWI): ln(SCA / tan(slope)). Cells where slope ≤ 0° or SCA ≤ 0 are output as nodata.

NameTypeDefaultDescription
scaRasterrequiredSpecific catchment area raster
slopeRasterrequiredSlope raster in degrees
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.relative_stream_power_index

wbe.relative_stream_power_index(sca, slope, exponent=1.0, output_path=None, callback=None) -> Raster

Calculates the relative stream power index: SCA^p * tan(slope), where slope is in degrees and p is a user-controlled exponent.

NameTypeDefaultDescription
scaRasterrequiredSpecific catchment area raster
slopeRasterrequiredSlope raster in degrees
exponentfloat1.0Specific catchment area exponent p
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.sediment_transport_index

wbe.sediment_transport_index(sca, slope, sca_exponent=0.4, slope_exponent=1.3, output_path=None, callback=None) -> Raster

Calculates the sediment transport index (LS factor): (n + 1) * (SCA / 22.13)^n * (sin(slope) / 0.0896)^m, where slope is in degrees, n is sca_exponent, and m is slope_exponent.

NameTypeDefaultDescription
scaRasterrequiredSpecific catchment area raster
slopeRasterrequiredSlope raster in degrees
sca_exponentfloat0.4Specific catchment area exponent n
slope_exponentfloat1.3Slope exponent m
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.elev_relative_to_watershed_min_max

wbe.elev_relative_to_watershed_min_max(dem, watersheds, output_path=None, callback=None) -> Raster

Expresses each DEM elevation as a percentage (0-100) of the min-max range within its watershed zone.

NameTypeDefaultDescription
demRasterrequiredInput DEM raster
watershedsRasterrequiredWatershed ID raster
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.percent_elev_range

wbe.percent_elev_range(input, filter_size_x=11, filter_size_y=None, output_path=None, callback=None) -> Raster

Computes local topographic position as a percent of neighbourhood elevation range.

wbe.relative_topographic_position

wbe.relative_topographic_position(input, filter_size_x=11, filter_size_y=None, output_path=None, callback=None) -> Raster

Computes relative topographic position using neighbourhood min, mean, and max, scaled to [-1, 1].

wbe.num_downslope_neighbours

wbe.num_downslope_neighbours(input, output_path=None, callback=None) -> Raster

Counts the number of 8-neighbour cells that are lower than each DEM cell.

wbe.num_upslope_neighbours

wbe.num_upslope_neighbours(input, output_path=None, callback=None) -> Raster

Counts the number of 8-neighbour cells that are higher than each DEM cell.

wbe.max_downslope_elev_change

wbe.max_downslope_elev_change(input, output_path=None, callback=None) -> Raster

Computes the maximum elevation drop from each cell to any lower neighbour.

wbe.max_upslope_elev_change

wbe.max_upslope_elev_change(input, output_path=None, callback=None) -> Raster

Computes the maximum elevation gain from each cell to any higher neighbour.

wbe.min_downslope_elev_change

wbe.min_downslope_elev_change(input, output_path=None, callback=None) -> Raster

Computes the minimum non-negative elevation drop from each cell to neighbours.

wbe.elevation_percentile

wbe.elevation_percentile(input, filter_size_x=11, filter_size_y=None, sig_digits=2, output_path=None, callback=None) -> Raster

Computes the local percentile rank (0-100) of each elevation value within a moving neighbourhood.

wbe.downslope_index

wbe.downslope_index(input, vertical_drop=2.0, output_type='tangent', output_path=None, callback=None) -> Raster

Computes the Hjerdt et al. downslope index using a D8 flow path to the first point that reaches the requested vertical drop.

wbe.elev_above_pit

wbe.elev_above_pit(input, output_path=None, callback=None) -> Raster

Calculates each cell elevation above the nearest downslope pit (or edge sink).

wbe.elev_above_pit_dist

wbe.elev_above_pit_dist(input, output_path=None, callback=None) -> Raster

Compatibility alias of wbe.elev_above_pit.

wbe.circular_variance_of_aspect

wbe.circular_variance_of_aspect(input, filter=11, output_path=None, callback=None) -> Raster

Calculates local circular variance of aspect (0 = uniform aspect, 1 = highly variable aspect).

wbe.hypsometric_analysis

wbe.hypsometric_analysis(inputs, watershed=None, output_path=None, callback=None) -> str

Creates an HTML hypsometric curve report for one or more DEMs, with optional watershed grouping.

wbe.profile

wbe.profile(lines_vector, surface, output_path=None, callback=None) -> str

Creates an HTML profile plot of elevation versus distance sampled along one or more input polyline features.

NameTypeDefaultDescription
lines_vectorVectorrequiredInput polyline vector containing profile lines
surfaceRasterrequiredInput surface raster sampled along each line
output_pathstr | NoneNoneOutput HTML report path
callbackcallable | NoneNoneProgress/message event handler

wbe.hypsometrically_tinted_hillshade

wbe.hypsometrically_tinted_hillshade(input, solar_altitude=45.0, hillshade_weight=0.5, brightness=0.5, atmospheric_effects=0.0, palette='atlas', reverse_palette=False, full_360_mode=False, z_factor=1.0, output_path=None, callback=None) -> Raster

Creates a Swiss-style terrain rendering by blending hypsometric tint with multi-azimuth hillshade and optional atmospheric haze effects.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
solar_altitudefloat45.0Illumination altitude in degrees [0, 90]
hillshade_weightfloat0.5Relative hillshade contribution in [0, 1]
brightnessfloat0.5Brightness tuning in [0, 1]
atmospheric_effectsfloat0.0Atmospheric haze amount in [0, 1]
palettestr'atlas'Hypsometric palette name
reverse_paletteboolFalseReverse palette ordering
full_360_modeboolFalseUse 8-direction illumination (true) instead of 4-direction mode
z_factorfloat1.0Vertical scaling factor for elevations
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.local_hypsometric_analysis

wbe.local_hypsometric_analysis(input, min_scale=4, step_size=1, num_steps=10, step_nonlinearity=1.0, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes local hypsometric integral (HI) across a nonlinearly sampled range of neighbourhood scales and returns two rasters: the minimum HI value found at each cell and the scale (filter size) where that minimum occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint4Minimum half-window radius in cells
step_sizeint1Base step for scale sampling
num_stepsint10Number of sampled scales
step_nonlinearityfloat1.0Nonlinearity exponent for scale spacing
output_pathstr | NoneNoneOptional path for HI-minimum magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.low_points_on_headwater_divides

wbe.low_points_on_headwater_divides(dem, streams, output_path=None, callback=None) -> Vector

Locates low pass points on divides between neighboring headwater subbasins using a DEM-derived D8 flow network and an input streams raster.

NameTypeDefaultDescription
demRasterrequiredInput depressionless DEM raster
streamsRasterrequiredInput stream raster (positive cells are channels)
output_pathstr | NoneNoneOutput vector path; omit to use a temporary file
callbackcallable | NoneNoneProgress/message event handler

wbe.slope_vs_aspect_plot

wbe.slope_vs_aspect_plot(input, aspect_bin_size=2.0, min_slope=0.1, z_factor=1.0, output_path=None, callback=None) -> str

Creates an HTML radial slope-vs-aspect plot showing 25th/50th/75th percentile slope by aspect bin.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
aspect_bin_sizefloat2.0Aspect bin width in degrees
min_slopefloat0.1Minimum slope threshold (degrees) included in analysis
z_factorfloat1.0Vertical scaling factor for elevations
output_pathstr | NoneNoneOutput HTML path
callbackcallable | NoneNoneProgress/message event handler

wbe.slope_vs_elev_plot

wbe.slope_vs_elev_plot(inputs, watershed=None, output_path=None, callback=None) -> str

Creates an HTML slope-vs-elevation plot for one or more DEMs, with optional watershed grouping per DEM.

NameTypeDefaultDescription
inputslist[Raster]requiredOne or more input DEM rasters
watershedlist[Raster] | NoneNoneOptional watershed rasters matching each DEM
output_pathstr | NoneNoneOutput HTML path
callbackcallable | NoneNoneProgress/message event handler

wbe.directional_relief

wbe.directional_relief(input, azimuth=0.0, max_dist=None, output_path=None, callback=None) -> Raster

Calculates directional relief as the difference between each cell and the mean elevation sampled along a ray in the specified azimuth.

wbe.exposure_towards_wind_flux

wbe.exposure_towards_wind_flux(input, azimuth=0.0, max_dist=None, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates exposure of each terrain cell to a dominant wind direction by combining local slope/aspect with the upwind horizon angle.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
azimuthfloat0.0Dominant wind azimuth in degrees clockwise from north
max_distfloat | NoneNoneOptional maximum search distance for horizon-angle tracing
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.fetch_analysis

wbe.fetch_analysis(input, azimuth=0.0, hgt_inc=0.05, output_path=None, callback=None) -> Raster

Computes upwind distance to the nearest topographic obstacle; edge-truncated fetch values are negative.

wbe.relative_aspect

wbe.relative_aspect(input, azimuth=0.0, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates aspect relative to a specified azimuth; output ranges from 0° (aligned) to 180° (opposed).

wbe.edge_density

wbe.edge_density(input, filter_size=11, norm_diff=5.0, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates local density (0–1) of breaks-in-slope based on normal-vector angular differences.

wbe.find_ridges

wbe.find_ridges(input, line_thin=True, output_path=None, callback=None) -> Raster

Identifies potential ridge and peak cells, with optional post-processing line thinning.

wbe.breakline_mapping

wbe.breakline_mapping(dem, threshold=0.8, min_length=3, output_path=None, callback=None) -> Vector

Maps breaklines by thresholding log-transformed curvedness and vectorizing connected, thinned high-curvature line features.

NameTypeDefaultDescription
demRasterrequiredInput DEM raster
thresholdfloat0.8Minimum log-curvedness threshold
min_lengthint3Minimum output line length in grid cells
output_pathstr | NoneNoneOutput vector path; omit to use a temporary file
callbackcallable | NoneNoneProgress/message event handler

wbe.assess_route

wbe.assess_route(routes, dem, segment_length=100.0, search_radius=15, output_path=None, callback=None) -> Vector

Splits polyline routes into equal-length segments and computes per-segment metrics including average slope, relief, sinuosity, breaks-in-slope, and maximum local openness visibility.

NameTypeDefaultDescription
routesVectorrequiredInput polyline routes vector
demRasterrequiredInput projected DEM raster
segment_lengthfloat100.0Target segment length in map units
search_radiusint15Visibility search radius in grid cells (minimum effective value is 4)
output_pathstr | NoneNoneOutput vector path; omit to use a temporary file
callbackcallable | NoneNoneProgress/message event handler

wbe.contours_from_raster

wbe.contours_from_raster(input, contour_interval=10.0, base_contour=0.0, smoothing_filter_size=9, deflection_tolerance=10.0, output_path=None, callback=None) -> Vector

Creates vector contour polylines from a raster surface using contour interval and base elevation controls. Optional smoothing and deflection-based simplification reduce vertex density.

NameTypeDefaultDescription
inputRasterrequiredInput raster surface (e.g., DEM)
contour_intervalfloat10.0Contour interval
base_contourfloat0.0Base contour value
smoothing_filter_sizeint9Smoothing filter size (odd integer preferred)
deflection_tolerancefloat10.0Minimum bend angle (degrees) retained during simplification
output_pathstr | NoneNoneOutput vector path; defaults to contours_from_raster.shp in working directory
callbackcallable | NoneNoneProgress/message event handler

wbe.contours_from_points

wbe.contours_from_points(input, field_name=None, use_z_values=False, max_triangle_edge_length=None, contour_interval=10.0, base_contour=0.0, smoothing_filter_size=9, output_path=None, callback=None) -> Vector

Creates vector contour polylines from point elevations by building a Delaunay triangulation and extracting contour intersections through each triangle.

NameTypeDefaultDescription
inputVectorrequiredInput point or multipoint vector
field_namestr | NoneNoneNumeric elevation field; required when use_z_values=False unless a numeric field can be auto-selected
use_z_valuesboolFalseUse geometry Z values for elevations
max_triangle_edge_lengthfloat | NoneNoneOptional maximum triangle edge length used in contouring
contour_intervalfloat10.0Contour interval
base_contourfloat0.0Base contour value
smoothing_filter_sizeint9Smoothing filter size (odd integer preferred)
output_pathstr | NoneNoneOutput vector path; defaults to contours_from_points.shp in working directory
callbackcallable | NoneNoneProgress/message event handler

wbe.topographic_hachures

wbe.topographic_hachures(dem, contour_interval=10.0, base_contour=0.0, deflection_tolerance=10.0, filter_size=9, separation=2.0, distmin=0.5, distmax=2.0, discretization=0.5, turnmax=45.0, slopemin=0.5, depth=16, output_path=None, callback=None) -> Vector

Creates topographic hachure polylines from a DEM by extracting contours and tracing slope-following flowlines between and across contour levels. This OSS port preserves the legacy authorship note for the original implementation because it was not authored by John Lindsay.

NameTypeDefaultDescription
demRasterrequiredInput DEM raster
contour_intervalfloat10.0Contour interval
base_contourfloat0.0Base contour value
deflection_tolerancefloat10.0Minimum bend angle retained when simplifying contour seeds
filter_sizeint9Contour smoothing filter size
separationfloat2.0Nominal hachure seed spacing in average-cell units
distminfloat0.5Minimum spacing multiplier used to truncate nearby hachures
distmaxfloat2.0Maximum spacing multiplier used to insert additional hachures
discretizationfloat0.5Flowline step size in average-cell units
turnmaxfloat45.0Maximum allowed turn angle in traced hachures
slopeminfloat0.5Minimum slope angle required for continued tracing
depthint16Recursive infill depth for divergence areas
output_pathstr | NoneNoneOutput vector path; defaults to topographic_hachures.shp in working directory
callbackcallable | NoneNoneProgress/message event handler

wbe.topographic_position_animation

wbe.topographic_position_animation(input, palette='soft', min_scale=1, num_steps=10, step_nonlinearity=1.0, image_height=600, delay=250, label='', use_dev_max=False, output_path=None, callback=None) -> tuple[str, str]

Creates an animated multiscale topographic position visualization, returning the generated HTML viewer path and GIF path.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
palettestr'soft'Palette name used for the DEV animation
min_scaleint1Minimum analysis scale in cells
num_stepsint10Number of animation frames/scales
step_nonlinearityfloat1.0Nonlinear exponent controlling scale spacing
image_heightint600Output animation height in pixels
delayint250GIF frame delay in milliseconds
labelstr''Optional label drawn in the animation viewer
use_dev_maxboolFalseUse cumulative maximum absolute DEV instead of per-step DEV
output_pathstr | NoneNoneOutput HTML path; the GIF is written beside it
callbackcallable | NoneNoneProgress/message event handler

wbe.geomorphons

wbe.geomorphons(input, search_distance=50, flatness_threshold=1.0, flatness_distance=0, skip_distance=0, output_forms=True, analyze_residuals=False, output_path=None, callback=None) -> Raster

Classifies landforms using the geomorphons line-of-sight method. For each direction, the tool compares zenith and nadir angle magnitudes using a ternary rule: positive (2) when the zenith-nadir difference exceeds the flatness threshold, negative (0) when it is below the negative threshold, and flat (1) otherwise. When output_forms=True, outputs the 10 common landform classes; otherwise outputs raw ternary geomorphon codes ordered counter-clockwise from east.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
search_distanceint50Maximum look-up distance in cells per direction (endpoint cell is included)
flatness_thresholdfloat1.0Flatness threshold angle in degrees, applied to the zenith-nadir angle difference
flatness_distanceint0Distance in cells after which the flatness threshold tapers with horizon distance
skip_distanceint0Distance in cells skipped before beginning line-of-sight evaluation
output_formsboolTrueOutput 10 common landform classes instead of raw ternary geomorphon codes
analyze_residualsboolFalseDetrend the DEM with a fitted linear plane before classification
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

search_distance and flatness_distance are interpreted in cell steps (not a fixed map-unit radius), which keeps directional scanning behavior consistent for rasters with non-square pixel sizes. Horizon angles are still computed from true map-space distances.

Common landform classes when output_forms=True:

1   Flat
2   Peak
3   Ridge
4   Shoulder
5   Spur
6   Slope
7   Hollow
8   Footslope
9   Valley
10  Pit

wbe.pennock_landform_classification

wbe.pennock_landform_classification(input, slope_threshold=3.0, prof_curv_threshold=0.1, plan_curv_threshold=0.0, z_factor=1.0, output_path=None, callback=None) -> tuple[Raster, str]

Classifies each DEM cell into one of seven Pennock et al. (1987) landform classes using slope, plan curvature, and profile curvature thresholds.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
slope_thresholdfloat3.0Slope threshold in degrees used to separate level terrain
prof_curv_thresholdfloat0.1Profile curvature threshold (degrees)
plan_curv_thresholdfloat0.0Plan curvature threshold (degrees)
z_factorfloat1.0Vertical scaling factor; if negative and CRS is geographic, an approximate value is inferred from latitude
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Returns a (Raster, str) tuple where the string is a human-readable classification key:

1  Convergent Footslope
2  Divergent Footslope
3  Convergent Shoulder
4  Divergent Shoulder
5  Convergent Backslope
6  Divergent Backslope
7  Level

wbe.soil_landscape_classification

wbe.soil_landscape_classification(
    input,
    flat_slope_threshold=3.0,
    profile_curvature_threshold=0.01,
    plan_curvature_threshold=0.01,
    fine_scale=2.0,
    coarse_scale=8.0,
    z_factor=1.0,
    output_prefix=None,
    landform_polygons_output=None,
    callback=None,
) -> tuple[Raster, Raster, Vector, str]

Runs the workflow soil-landscape classifier and returns:

  • landform-units raster
  • multiscale-signature raster
  • landform polygons vector
  • summary JSON path
NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
flat_slope_thresholdfloat3.0Slope threshold in degrees for flat/summit/depression separation
profile_curvature_thresholdfloat0.01Absolute threshold for profile-curvature convex/concave separation
plan_curvature_thresholdfloat0.01Absolute threshold for plan-curvature convergent/divergent separation
fine_scalefloat2.0Fine-scale smoothing radius
coarse_scalefloat8.0Coarse-scale smoothing radius
z_factorfloat1.0Vertical exaggeration factor
output_prefixstr | NoneNonePrefix for generated outputs
landform_polygons_outputstr | NoneNoneOptional explicit polygon output path
callbackcallable | NoneNoneProgress/message event handler

wbe.spherical_std_dev_of_normals

wbe.spherical_std_dev_of_normals(input, filter_size=11, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates spherical standard deviation (degrees) of local surface-normal vectors.

wbe.average_normal_vector_angular_deviation

wbe.average_normal_vector_angular_deviation(input, filter_size=11, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates local mean angular deviation (degrees) between original and smoothed DEM normals.

wbe.openness

wbe.openness(input, dist=20, pos_output_path=None, neg_output_path=None, callback=None) -> tuple[Raster, Raster]

Computes Yokoyama et al. (2002) topographic openness using 8-directional horizon angles. Returns positive openness (high on convex landforms like ridges) and negative openness (high on concave landforms like valleys). Both values are in degrees (0–90).

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
distint20Search distance in cells
pos_output_pathstr | NoneNoneOptional output file path for positive openness
neg_output_pathstr | NoneNoneOptional output file path for negative openness
callbackcallable | NoneNoneProgress/message event handler

Tier: Pro

wbe.difference_from_mean_elevation

wbe.difference_from_mean_elevation(input, filter_size_x=11, filter_size_y=None, output_path=None, callback=None) -> Raster

Calculates the difference between each elevation and the mean elevation of its local neighbourhood. This is a local-relief measure and is implemented using summed-area tables for efficient large-window filtering.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
filter_size_xint11Filter width in cells; values are coerced to odd sizes >= 3
filter_size_yint | NoneNoneFilter height in cells; defaults to filter_size_x
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.deviation_from_mean_elevation

wbe.deviation_from_mean_elevation(input, filter_size_x=11, filter_size_y=None, output_path=None, callback=None) -> Raster

Calculates the local elevation z-score (z - mean) / std_dev using a moving neighbourhood. This normalizes the local relief by local roughness and uses summed-area tables for filter-size-invariant performance.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
filter_size_xint11Filter width in cells; values are coerced to odd sizes >= 3
filter_size_yint | NoneNoneFilter height in cells; defaults to filter_size_x
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.standard_deviation_of_slope

wbe.standard_deviation_of_slope(input, filter_size=11, z_factor=1.0, output_path=None, callback=None) -> Raster

Calculates the local standard deviation of slope as a roughness measure. Slope is derived from the DEM (Horn kernel), then neighbourhood standard deviation is computed with summed-area tables.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
filter_sizeint11Neighbourhood width/height in cells; coerced to odd sizes >= 3
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.feature_preserving_smoothing

wbe.feature_preserving_smoothing(input, filter_size=11, normal_diff_threshold=8.0, iterations=3, max_elevation_diff=None, z_factor=1.0, output_path=None, callback=None) -> Raster

Smooths DEM roughness while preserving terrain breaks-in-slope by filtering and applying a smoothed normal-vector field over iterative updates.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
filter_sizeint11Odd neighbourhood size for normal-field smoothing
normal_diff_thresholdfloat8.0Maximum angular normal difference (degrees) included in smoothing
iterationsint3Number of elevation update iterations
max_elevation_difffloat | NoneNoneMaximum allowed absolute change from original elevation per cell
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.fill_missing_data

wbe.fill_missing_data(input, filter_size=11, weight=2.0, exclude_edge_nodata=False, output_path=None, callback=None) -> Raster

Fills NoData gaps using inverse-distance weighting of valid cells on the edge of data holes.

NameTypeDefaultDescription
inputRasterrequiredInput raster
filter_sizeint11Search radius in grid cells
weightfloat2.0Inverse-distance power exponent
exclude_edge_nodataboolFalseExclude NoData regions connected to raster edges
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.remove_off_terrain_objects

wbe.remove_off_terrain_objects(input, filter_size=11, slope_threshold=15.0, output_path=None, callback=None) -> Raster

Creates a bare-earth DEM from a surface DEM by detecting steep off-terrain objects (e.g., buildings and canopy residuals) after white top-hat normalization, then backfilling and interpolating the removed regions.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
filter_sizeint11Maximum expected object size in cells; coerced to odd size >= 3
slope_thresholdfloat15.0Minimum OTO edge slope (degrees) used in backfill rule
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.map_off_terrain_objects

wbe.map_off_terrain_objects(input, max_slope=90.0, min_feature_size=0, output_path=None, callback=None) -> Raster

Maps connected off-terrain object segments in a DSM using slope-constrained region growing; small mapped segments can be merged into a background class.

NameTypeDefaultDescription
inputRasterrequiredInput DSM/DEM raster
max_slopefloat90.0Maximum connecting slope in degrees; lower values separate steeper objects
min_feature_sizeint0Minimum retained segment size in cells; smaller segments are assigned to background class
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.embankment_mapping

wbe.embankment_mapping(dem, roads_vector, search_dist=2.5, min_road_width=6.0, typical_embankment_width=30.0, typical_embankment_max_height=2.0, embankment_max_width=60.0, max_upwards_increment=0.05, spillout_slope=4.0, remove_embankments=False, output_path=None, output_dem_path=None, callback=None) -> Tuple[Raster, Raster | None]

Maps transportation embankment cells using road-constrained seed growth and morphometric criteria; optionally outputs an embankment-removed DEM interpolated from embankment-edge elevations.

NameTypeDefaultDescription
demRasterrequiredInput DEM raster
roads_vectorVectorrequiredInput polyline road/transportation network
search_distfloat2.5Seed repositioning distance in map units
min_road_widthfloat6.0Minimum road-width mapping distance in map units
typical_embankment_widthfloat30.0Typical embankment width in map units
typical_embankment_max_heightfloat2.0Typical embankment maximum height
embankment_max_widthfloat60.0Maximum embankment width in map units
max_upwards_incrementfloat0.05Maximum upward increment allowed during growth
spillout_slopefloat4.0Maximum spillout slope (degrees) for uphill transitions
remove_embankmentsboolFalseAlso create embankment-removed DEM output
output_pathstr | NoneNoneOutput embankment mask raster path
output_dem_pathstr | NoneNoneOutput embankment-removed DEM path when enabled
callbackcallable | NoneNoneProgress/message event handler

wbe.smooth_vegetation_residual

wbe.smooth_vegetation_residual(input, max_scale=30, dev_threshold=1.0, scale_threshold=5, output_path=None, callback=None) -> Raster

Suppresses residual vegetation roughness in DEMs by identifying cells with high local standardized elevation deviation (DEV) at small scales and re-interpolating masked cells from nearby non-masked neighbours.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
max_scaleint30Maximum DEV half-window radius in cells
dev_thresholdfloat1.0Minimum DEV value used to flag roughness cells
scale_thresholdint5Maximum scale considered vegetation roughness
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.dem_void_filling

wbe.dem_void_filling(input, fill, mean_plane_dist=20, edge_treatment='dem', weight_value=2.0, output_path=None, callback=None) -> Raster

Fills voids in an input DEM by fusing elevations from a secondary fill DEM. The method computes a DEM-of-difference in overlap areas and interpolates near-edge offsets so void fills transition seamlessly.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster containing voids
fillRasterrequiredFill DEM raster used to populate void cells
mean_plane_distint20Distance in cells from void edge beyond which offsets are set to mean overlap offset
edge_treatmentstr'dem'Void-edge handling: 'dem', 'fill', or 'average'
weight_valuefloat2.0IDW power for offset interpolation near void edges
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.max_branch_length

wbe.max_branch_length(input, log_transform=False, output_path=None, callback=None) -> Raster

Calculates the maximum branch length (Bmax) between each cell's D8 flowpath and the flowpaths of its right and lower neighbours. High values often occur near drainage divides.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
log_transformboolFalseApply natural-log transform to positive output values
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

wbe.max_difference_from_mean

wbe.max_difference_from_mean(input, min_scale=1, max_scale=100, step_size=1, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes difference-from-mean over multiple neighbourhood scales and returns two rasters: maximum signed magnitude and the scale (half-window radius) where that maximum absolute response occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint1Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint1Scale increment
output_pathstr | NoneNoneOptional path for magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.max_elevation_deviation

wbe.max_elevation_deviation(input, min_scale=1, max_scale=100, step_size=1, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes standardized elevation deviation over multiple neighbourhood scales and returns two rasters: maximum signed DEV magnitude and the scale (half-window radius) where that maximum absolute response occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint1Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint1Scale increment
output_pathstr | NoneNoneOptional path for DEVmax magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.max_anisotropy_dev

wbe.max_anisotropy_dev(input, min_scale=3, max_scale=100, step_size=2, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes the anisotropy of standardized elevation deviation over multiple neighbourhood scales and returns two rasters: maximum anisotropy magnitude and the scale (half-window radius) where that maximum response occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint3Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint2Scale increment
output_pathstr | NoneNoneOptional path for anisotropy magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.max_elev_dev_signature

wbe.max_elev_dev_signature(input, points, min_scale=1, max_scale=100, step_size=10, output_path=None, callback=None) -> str

Generates an HTML report containing multiscale elevation-deviation (DEV) signatures for each input point site.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
pointsVectorrequiredInput point or multipoint vector
min_scaleint1Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint10Scale increment
output_pathstr | NoneNoneOptional HTML output path
callbackcallable | NoneNoneProgress/message event handler

wbe.max_anisotropy_dev_signature

wbe.max_anisotropy_dev_signature(input, points, min_scale=1, max_scale=100, step_size=1, output_path=None, callback=None) -> str

Generates an HTML report containing multiscale anisotropy signatures for each input point site.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
pointsVectorrequiredInput point or multipoint vector
min_scaleint1Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint1Scale increment
output_pathstr | NoneNoneOptional HTML output path
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_topographic_position_image

wbe.multiscale_topographic_position_image(local, meso, broad, hillshade=None, lightness=1.2, output_path=None, callback=None) -> Raster

Creates a packed RGB multiscale topographic-position image from local, meso, and broad DEVmax rasters. Optionally modulates colours using a hillshade raster.

NameTypeDefaultDescription
localRasterrequiredLocal-scale DEVmax raster (mapped to blue channel)
mesoRasterrequiredMeso-scale DEVmax raster (mapped to green channel)
broadRasterrequiredBroad-scale DEVmax raster (mapped to red channel)
hillshadeRaster | NoneNoneOptional hillshade raster for illumination modulation
lightnessfloat1.2Logistic lightness scaling factor
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_topographic_position_class

wbe.multiscale_topographic_position_class(input, local_min_scale=5, local_max_scale=80, local_step_size=1, broad_min_scale=500, broad_max_scale=2000, broad_step_size=20, local_threshold=0.5, broad_threshold=0.5, min_patch_size=0, output_path=None, output_confidence_path=None, callback=None) -> Raster

Builds local- and broad-scale DEVmax responses internally from a DEM and combines them into a nine-class categorical landform raster. Broad-scale classes are lowland, intermediate, and upland; local classes are hollow, mid-position, and knoll. Class values are fixed as 0 = Lowland hollow, 1 = Lowland mid-position, 2 = Lowland knoll, 3 = Intermediate hollow, 4 = Intermediate mid-position, 5 = Intermediate knoll, 6 = Upland hollow, 7 = Upland mid-position, 8 = Upland knoll.

If output_confidence_path is supplied, the tool also writes a separate confidence raster with values in the range [0, 1]. The returned object is always the categorical class raster; the confidence raster is written only to the requested output path.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
local_min_scaleint5Minimum half-window radius in cells for the local DEVmax scale range
local_max_scaleint80Maximum half-window radius in cells for the local DEVmax scale range
local_step_sizeint1Scale increment for the local DEVmax range
broad_min_scaleint500Minimum half-window radius in cells for the broad DEVmax scale range
broad_max_scaleint2000Maximum half-window radius in cells for the broad DEVmax scale range
broad_step_sizeint20Scale increment for the broad DEVmax range
local_thresholdfloat0.5Ternary threshold for local hollow / mid-position / knoll classification
broad_thresholdfloat0.5Ternary threshold for broad lowland / intermediate / upland classification
min_patch_sizeint0Optional minimum mapped patch size in cells; 0 disables patch filtering
output_pathstr | NoneNoneOptional path for the categorical class raster
output_confidence_pathstr | NoneNoneOptional path for the confidence raster in [0, 1]
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_elevation_percentile

wbe.multiscale_elevation_percentile(input, min_scale=4, max_scale=100, step_size=1, sig_digits=2, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes local elevation percentile across a range of neighbourhood scales and returns two rasters: the most extreme percentile magnitude (furthest from 50) and the scale where that response occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint4Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint1Scale increment
sig_digitsint2Significant decimal digits preserved during percentile binning
output_pathstr | NoneNoneOptional path for percentile magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_elevated_index

wbe.multiscale_elevated_index(input, min_scale=2, step_size=1, num_steps=100, step_nonlinearity=1.1, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes a standardized multiscale elevated index using Gaussian scale-space smoothing. Returns two rasters: the maximum positive standardized residual magnitude and the scale where that maximum occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint2Minimum half-window radius in cells
step_sizeint1Base step for scale sampling
num_stepsint100Number of sampled scales
step_nonlinearityfloat1.1Nonlinearity exponent for scale spacing
output_pathstr | NoneNoneOptional path for magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_low_lying_index

wbe.multiscale_low_lying_index(input, min_scale=2, step_size=1, num_steps=100, step_nonlinearity=1.1, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes a standardized multiscale low-lying index using Gaussian scale-space smoothing. Returns two rasters: the maximum negative standardized residual magnitude (reported as positive values) and the scale where that maximum occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint2Minimum half-window radius in cells
step_sizeint1Base step for scale sampling
num_stepsint100Number of sampled scales
step_nonlinearityfloat1.1Nonlinearity exponent for scale spacing
output_pathstr | NoneNoneOptional path for magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_roughness

wbe.multiscale_roughness(input, min_scale=1, max_scale=100, step_size=1, z_factor=1.0, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes multiscale roughness from local angular differences between DEM surface normals and scale-smoothed normals. Returns maximum roughness magnitude and the scale where it occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint1Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint1Scale increment
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOptional path for roughness magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_std_dev_normals

wbe.multiscale_std_dev_normals(input, min_scale=1, step=1, num_steps=10, step_nonlinearity=1.0, z_factor=1.0, output_path=None, output_scale_path=None, callback=None) -> tuple[Raster, Raster]

Computes the maximum spherical standard deviation of surface normals over a nonlinearly sampled set of scales. Returns magnitude and the scale where that maximum occurs.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
min_scaleint1Minimum half-window radius in cells
stepint1Base step used by nonlinear scale schedule
num_stepsint10Number of sampled scales
step_nonlinearityfloat1.0Nonlinearity exponent for scale schedule
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOptional path for magnitude raster
output_scale_pathstr | NoneNoneOptional path for scale raster
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_std_dev_normals_signature

wbe.multiscale_std_dev_normals_signature(input, points, min_scale=1, step=1, num_steps=10, step_nonlinearity=1.0, z_factor=1.0, output_path=None, callback=None) -> str

Generates an HTML report containing spherical-standard-deviation signatures across nonlinearly sampled scales for each input point site.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
pointsVectorrequiredInput point or multipoint vector
min_scaleint1Minimum half-window radius in cells
stepint1Base step used by nonlinear scale schedule
num_stepsint10Number of sampled scales
step_nonlinearityfloat1.0Nonlinearity exponent for scale schedule
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOptional HTML output path
callbackcallable | NoneNoneProgress/message event handler

wbe.multiscale_roughness_signature

wbe.multiscale_roughness_signature(input, points, min_scale=1, max_scale=100, step_size=1, z_factor=1.0, output_path=None, callback=None) -> str

Generates an HTML report containing multiscale roughness signatures for each input point site.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
pointsVectorrequiredInput point or multipoint vector
min_scaleint1Minimum half-window radius in cells
max_scaleint100Maximum half-window radius in cells
step_sizeint1Scale increment
z_factorfloat1.0Z conversion factor when vertical and horizontal units differ
output_pathstr | NoneNoneOptional HTML output path
callbackcallable | NoneNoneProgress/message event handler

wbe.horizon_angle

wbe.horizon_angle(input, azimuth=0.0, max_dist=None, output_path=None, callback=None) -> Raster

Computes horizon angle (maximum slope) along a specified azimuth direction.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
azimuthfloat0.0Azimuth in degrees [0, 360)
max_distfloat | NoneNoneMaximum search distance in map units
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.sky_view_factor

wbe.sky_view_factor(input, az_fraction=5.0, max_dist=None, observer_hgt_offset=0.05, output_path=None, callback=None) -> Raster

Computes sky-view factor as the proportion of visible sky from each cell.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
az_fractionfloat5.0Azimuth sampling increment in degrees [1, 45]
max_distfloat | NoneNoneMaximum search distance in map units
observer_hgt_offsetfloat0.05Observer height offset above terrain
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.horizon_area

wbe.horizon_area(input, az_fraction=5.0, max_dist=None, observer_hgt_offset=0.05, output_path=None, callback=None) -> Raster

Computes area enclosed by the horizon polygon for each cell.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
az_fractionfloat5.0Azimuth sampling increment in degrees [1, 45]
max_distfloat | NoneNoneMaximum search distance in map units
observer_hgt_offsetfloat0.05Observer height offset above terrain
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.average_horizon_distance

wbe.average_horizon_distance(input, az_fraction=5.0, max_dist=None, observer_hgt_offset=0.05, output_path=None, callback=None) -> Raster

Computes average distance to the horizon across sampled azimuth directions.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
az_fractionfloat5.0Azimuth sampling increment in degrees [1, 45]
max_distfloat | NoneNoneMaximum search distance in map units
observer_hgt_offsetfloat0.05Observer height offset above terrain
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.skyline_analysis

wbe.skyline_analysis(input, points, max_dist=None, observer_hgt_offset=0.05, output_as_polygons=True, az_fraction=1.0, output_path=None, report_path=None, callback=None) -> (Vector, str)

Computes skyline/horizon characteristics from observer point locations. Returns a horizon vector layer (polygon or line output) and an HTML report path.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
pointsVectorrequiredInput point or multipoint observer locations
max_distfloat | NoneNoneMaximum horizon search distance in map units
observer_hgt_offsetfloat0.05Observer height offset above terrain
output_as_polygonsboolTrueOutput polygon horizon footprints when true, otherwise line strings
az_fractionfloat1.0Azimuth sampling increment in degrees [0.01, 45]
output_pathstr | NoneNoneOutput vector file path
report_pathstr | NoneNoneOutput HTML report path
callbackcallable | NoneNoneProgress/message event handler

wbe.time_in_daylight

wbe.time_in_daylight(input, az_fraction=5.0, max_dist=None, latitude=None, longitude=None, utc_offset=None, start_day=1, end_day=365, start_time='sunrise', end_time='sunset', output_path=None, callback=None) -> Raster

Computes the proportion of daytime that each cell is illuminated (not shadowed), based on sampled solar positions through the specified date and time windows. Latitude/longitude are optional overrides; when omitted they are inferred automatically from the input DEM CRS and extent center. utc_offset is also optional; when omitted it is estimated from the inferred/overridden center longitude.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
az_fractionfloat5.0Azimuth bin size in degrees (0, 360)
max_distfloat | NoneNoneMaximum horizon search distance in map units
latitudefloat | NoneNoneOptional latitude override in degrees
longitudefloat | NoneNoneOptional longitude override in degrees
utc_offsetstr | NoneNoneOptional UTC offset used for almanac generation; inferred from longitude when omitted
start_dayint1Start day-of-year (1..366)
end_dayint365End day-of-year (1..366)
start_timestr'sunrise'Start time HH:MM:SS or 'sunrise'
end_timestr'sunset'End time HH:MM:SS or 'sunset'
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.shadow_image

wbe.shadow_image(input, palette='soft', max_dist=None, date='21/06/2021', time='13:00', location='43.5448/-80.2482/-4', output_path=None, callback=None) -> Raster

Generates a terrain shadow-intensity image for a specified local date/time and location using horizon-angle shadowing and solar position. The palette parameter controls hypsometric tinting before shadow modulation; use white or none for grayscale intensity-only output.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
palettestr'soft'Hypsometric palette name (atlas, high_relief, arid, earthtones, soft, muted, light_quant, turbo, purple, viridis, green_yellow, pink_yellow_green, blue_yellow_red, deep, imhof, blue_green_yellow, dem, grey, white/none)
max_distfloat | NoneNoneMaximum horizon search distance in map units
datestr'21/06/2021'Date in DD/MM/YYYY format
timestr'13:00'Local time in HH:MM or HH:MMAM/PM format
locationstr'43.5448/-80.2482/-4'LAT/LON/UTC_OFFSET string
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.shadow_animation

wbe.shadow_animation(input, date='21/06/2021', time_interval=30, location='43.5448/-80.2482/-4', palette='soft', max_dist=None, image_height=600, delay=250, label='', output_path=None, callback=None) -> tuple[str, str]

Creates an interactive terrain-shadow animation for a specified date and location, returning the generated HTML viewer path and GIF path.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
datestr'21/06/2021'Date in DD/MM/YYYY format
time_intervalint30Frame interval in minutes
locationstr'43.5448/-80.2482/-4'LAT/LON/UTC_OFFSET string
palettestr'soft'Hypsometric palette name used in the rendered frames
max_distfloat | NoneNoneMaximum horizon search distance in map units
image_heightint600Output animation height in pixels
delayint250GIF frame delay in milliseconds
labelstr''Optional label drawn in the animation viewer
output_pathstr | NoneNoneOutput HTML path; the GIF is written beside it
callbackcallable | NoneNoneProgress/message event handler

wbe.topo_render

wbe.topo_render(input, palette='soft', reverse_palette=False, azimuth=315.0, altitude=30.0, clipping_polygon=None, background_hgt_offset=10.0, background_clr=(255, 255, 255, 255), attenuation_parameter=0.3, ambient_light=0.2, z_factor=1.0, max_dist=None, output_path=None, callback=None) -> Raster

Creates a pseudo-3D rendered topographic image using hypsometric tinting, hillshade, horizon-based shadowing, and distance attenuation.

NameTypeDefaultDescription
inputRasterrequiredInput DEM/DSM raster
palettestr'soft'Hypsometric palette name (atlas, high_relief, arid, earthtones, soft, muted, light_quant, turbo, purple, viridis, green_yellow, pink_yellow_green, blue_yellow_red, deep, imhof, blue_green_yellow, dem, grey, white/none)
reverse_paletteboolFalseReverse palette ordering
azimuthfloat315.0Light-source azimuth in degrees [0, 360]
altitudefloat30.0Light-source altitude in degrees [0, 90]
clipping_polygonVector | NoneNoneOptional polygon vector mask; only DEM cells inside polygon(s) are rendered
background_hgt_offsetfloat10.0Vertical offset from minimum DEM elevation to background plane
background_clrtuple[int,int,int,int](255, 255, 255, 255)Background colour as RGBA
attenuation_parameterfloat0.3Distance attenuation exponent
ambient_lightfloat0.2Ambient light amount in [0, 1]
z_factorfloat1.0Vertical exaggeration multiplier
max_distfloat | NoneNoneMaximum horizon search distance in map units
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

wbe.visibility_index

wbe.visibility_index(input, station_height=2.0, resolution_factor=8, max_dist=None, output_path=None, callback=None) -> Raster

Computes a terrain visibility index using sampled viewsheds.

wbe.viewshed

wbe.viewshed(input, stations, height=2.0, output_path=None, callback=None) -> Raster

Computes per-cell visibility counts from one or more viewing stations in a point vector layer.

NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
station_heightfloat2.0Observer station height above terrain
resolution_factorint8Sampling resolution factor in [1, 25]
max_distfloat | NoneNoneMaximum search distance in map units; omit for full extent
output_pathstr | NoneNoneOutput file path
callbackcallable | NoneNoneProgress/message event handler

Single-scale curvature signature

All single-scale curvature tools share this signature:

wbe.<tool>(input, z_factor=1.0, log_transform=False, output_path=None, callback=None) -> Raster
NameTypeDefaultDescription
inputRasterrequiredInput DEM raster
z_factorfloat1.0Z conversion factor
log_transformboolFalseApply log transform to output values
output_pathstr | NoneNoneOutput file path; omit to keep in memory
callbackcallable | NoneNoneProgress/message event handler

Tier map

MethodTool IDTier
wbe.slope(...)slopeOSS
wbe.aspect(...)aspectOSS
wbe.convergence_index(...)convergence_indexOSS
wbe.contours_from_points(...)contours_from_pointsOSS
wbe.contours_from_raster(...)contours_from_rasterOSS
wbe.dem_void_filling(...)dem_void_fillingPro
wbe.max_branch_length(...)max_branch_lengthOSS
wbe.hillshade(...)hillshadeOSS
wbe.multidirectional_hillshade(...)multidirectional_hillshadeOSS
wbe.ruggedness_index(...)ruggedness_indexOSS
wbe.surface_area_ratio(...)surface_area_ratioOSS
wbe.elev_relative_to_min_max(...)elev_relative_to_min_maxOSS
wbe.wetness_index(...)wetness_indexOSS
wbe.relative_stream_power_index(...)relative_stream_power_indexOSS
wbe.sediment_transport_index(...)sediment_transport_indexOSS
wbe.elev_relative_to_watershed_min_max(...)elev_relative_to_watershed_min_maxOSS
wbe.percent_elev_range(...)percent_elev_rangeOSS
wbe.relative_topographic_position(...)relative_topographic_positionOSS
wbe.num_downslope_neighbours(...)num_downslope_neighboursOSS
wbe.num_upslope_neighbours(...)num_upslope_neighboursOSS
wbe.max_downslope_elev_change(...)max_downslope_elev_changeOSS
wbe.max_upslope_elev_change(...)max_upslope_elev_changeOSS
wbe.min_downslope_elev_change(...)min_downslope_elev_changeOSS
wbe.elevation_percentile(...)elevation_percentileOSS
wbe.downslope_index(...)downslope_indexOSS
wbe.elev_above_pit(...)elev_above_pitOSS
wbe.elev_above_pit_dist(...)elev_above_pit_distOSS
wbe.circular_variance_of_aspect(...)circular_variance_of_aspectOSS
wbe.hypsometric_analysis(...)hypsometric_analysisOSS
wbe.profile(...)profileOSS
wbe.hypsometrically_tinted_hillshade(...)hypsometrically_tinted_hillshadeOSS
wbe.slope_vs_aspect_plot(...)slope_vs_aspect_plotOSS
wbe.slope_vs_elev_plot(...)slope_vs_elev_plotOSS
wbe.directional_relief(...)directional_reliefOSS
wbe.exposure_towards_wind_flux(...)exposure_towards_wind_fluxOSS
wbe.fetch_analysis(...)fetch_analysisOSS
wbe.relative_aspect(...)relative_aspectOSS
wbe.edge_density(...)edge_densityOSS
wbe.find_ridges(...)find_ridgesOSS
wbe.assess_route(...)assess_routeOSS
wbe.breakline_mapping(...)breakline_mappingOSS
wbe.geomorphons(...)geomorphonsOSS
wbe.pennock_landform_classification(...)pennock_landform_classificationOSS
wbe.spherical_std_dev_of_normals(...)spherical_std_dev_of_normalsOSS
wbe.average_normal_vector_angular_deviation(...)average_normal_vector_angular_deviationOSS
wbe.difference_from_mean_elevation(...)difference_from_mean_elevationOSS
wbe.deviation_from_mean_elevation(...)deviation_from_mean_elevationOSS
wbe.standard_deviation_of_slope(...)standard_deviation_of_slopeOSS
wbe.feature_preserving_smoothing(...)feature_preserving_smoothingOSS
wbe.fill_missing_data(...)fill_missing_dataOSS
wbe.remove_off_terrain_objects(...)remove_off_terrain_objectsOSS
wbe.low_points_on_headwater_divides(...)low_points_on_headwater_dividesOSS
wbe.map_off_terrain_objects(...)map_off_terrain_objectsOSS
wbe.embankment_mapping(...)embankment_mappingOSS
wbe.local_hypsometric_analysis(...)local_hypsometric_analysisOSS
wbe.smooth_vegetation_residual(...)smooth_vegetation_residualOSS
wbe.max_difference_from_mean(...)max_difference_from_meanOSS
wbe.max_anisotropy_dev(...)max_anisotropy_devOSS
wbe.max_anisotropy_dev_signature(...)max_anisotropy_dev_signatureOSS
wbe.max_elevation_deviation(...)max_elevation_deviationOSS
wbe.max_elev_dev_signature(...)max_elev_dev_signatureOSS
wbe.multiscale_elevated_index(...)multiscale_elevated_indexOSS
wbe.multiscale_elevation_percentile(...)multiscale_elevation_percentileOSS
wbe.multiscale_low_lying_index(...)multiscale_low_lying_indexOSS
wbe.multiscale_roughness(...)multiscale_roughnessOSS
wbe.multiscale_roughness_signature(...)multiscale_roughness_signatureOSS
wbe.multiscale_std_dev_normals(...)multiscale_std_dev_normalsOSS
wbe.multiscale_std_dev_normals_signature(...)multiscale_std_dev_normals_signatureOSS
wbe.multiscale_topographic_position_class(...)multiscale_topographic_position_classOSS
wbe.multiscale_topographic_position_image(...)multiscale_topographic_position_imageOSS
wbe.horizon_angle(...)horizon_angleOSS
wbe.sky_view_factor(...)sky_view_factorOSS
wbe.horizon_area(...)horizon_areaOSS
wbe.average_horizon_distance(...)average_horizon_distanceOSS
wbe.skyline_analysis(...)skyline_analysisOSS
wbe.time_in_daylight(...)time_in_daylightOSS
wbe.shadow_image(...)shadow_imageOSS
wbe.shadow_animation(...)shadow_animationOSS
wbe.topographic_hachures(...)topographic_hachuresOSS
wbe.topographic_position_animation(...)topographic_position_animationOSS
wbe.topo_render(...)topo_renderOSS
wbe.visibility_index(...)visibility_indexOSS
wbe.viewshed(...)viewshedOSS
wbe.plan_curvature(...)plan_curvatureOSS
wbe.profile_curvature(...)profile_curvatureOSS
wbe.tangential_curvature(...)tangential_curvatureOSS
wbe.total_curvature(...)total_curvatureOSS
wbe.mean_curvature(...)mean_curvatureOSS
wbe.gaussian_curvature(...)gaussian_curvatureOSS
wbe.minimal_curvature(...)minimal_curvatureOSS
wbe.maximal_curvature(...)maximal_curvatureOSS
wbe.shape_index(...)shape_indexOSS
wbe.curvedness(...)curvednessOSS
wbe.unsphericity(...)unsphericityOSS
wbe.ring_curvature(...)ring_curvatureOSS
wbe.rotor(...)rotorOSS
wbe.difference_curvature(...)difference_curvatureOSS
wbe.horizontal_excess_curvature(...)horizontal_excess_curvatureOSS
wbe.vertical_excess_curvature(...)vertical_excess_curvatureOSS
wbe.accumulation_curvature(...)accumulation_curvatureOSS
wbe.generating_function(...)generating_functionOSS
wbe.principal_curvature_direction(...)principal_curvature_directionOSS
wbe.casorati_curvature(...)casorati_curvatureOSS
wbe.openness(...)opennessOSS

wbe.multiscale_curvatures

wbe.multiscale_curvatures(
    input,
    curv_type='profile',
    min_scale=4,
    step=1,
    num_steps=10,
    step_nonlinearity=1.0,
    log_transform=True,
    standardize=False,
    output_path=None,
    callback=None,
) -> Raster

Tier: OSS

multiscale_curvatures always uses Gaussian scale-space smoothing by default. There is no hidden runtime switch to toggle to box smoothing.

Example

ms = wbe.multiscale_curvatures(
    dem,
    curv_type='shape_index',
    min_scale=1,
    step=2,
    num_steps=8,
    step_nonlinearity=1.0,
)

Basic terrain examples

slope_deg  = wbe.slope(dem)                             # degrees
slope_pct  = wbe.slope(dem, units='percent')
asp        = wbe.aspect(dem)
hs         = wbe.hillshade(dem, azimuth=315.0, altitude=30.0)
hs_steep   = wbe.hillshade(dem, azimuth=270.0, altitude=45.0, z_factor=2.0)
mhs        = wbe.multidirectional_hillshade(dem, altitude=30.0)
mhs_360    = wbe.multidirectional_hillshade(dem, altitude=30.0, full_360_mode=True)
tri        = wbe.ruggedness_index(dem)
sar        = wbe.surface_area_ratio(dem)
elev_pct   = wbe.elev_relative_to_min_max(dem)
twi        = wbe.wetness_index(sca, slope_deg)
rsp        = wbe.relative_stream_power_index(sca, slope_deg)
sti        = wbe.sediment_transport_index(sca, slope_deg)
erwm       = wbe.elev_relative_to_watershed_min_max(dem, watersheds)
per        = wbe.percent_elev_range(dem, filter_size_x=11)
rtp        = wbe.relative_topographic_position(dem, filter_size_x=11)
n_dn       = wbe.num_downslope_neighbours(dem)
max_drop   = wbe.max_downslope_elev_change(dem)
min_drop   = wbe.min_downslope_elev_change(dem)
diff_mean  = wbe.difference_from_mean_elevation(dem, filter_size_x=11)
dev_mean   = wbe.deviation_from_mean_elevation(dem, filter_size_x=11)
std_slope  = wbe.standard_deviation_of_slope(dem, filter_size=11)
pos_open, neg_open = wbe.openness(dem, dist=20)  # Pro: positive and negative openness
max_diff, max_scale = wbe.max_difference_from_mean(dem, min_scale=1, max_scale=100, step_size=2)
max_dev, dev_scale = wbe.max_elevation_deviation(dem, min_scale=1, max_scale=100, step_size=2)
mep, mep_scale = wbe.multiscale_elevation_percentile(dem, min_scale=4, max_scale=100, step_size=2, sig_digits=2)
# local_dev, meso_dev, and broad_dev are DEVmax rasters computed for distinct scale ranges.
mtp        = wbe.multiscale_topographic_position_image(local_dev, meso_dev, broad_dev)
svf        = wbe.sky_view_factor(dem, az_fraction=5.0)
hzn_ang    = wbe.horizon_angle(dem, azimuth=315.0)
hzn_area   = wbe.horizon_area(dem)
hzn_dist   = wbe.average_horizon_distance(dem)
vis_idx    = wbe.visibility_index(dem, station_height=2.0)

Openness tuple workflow

# 1) Compute positive and negative openness.
pos_open, neg_open = wbe.openness(dem, dist=20)

# 2) Visualize positive openness (ridges/peaks).
pos_hs = wbe.hillshade(pos_open, azimuth=315.0, altitude=30.0)

# 3) Visualize negative openness (valleys/basins).
neg_hs = wbe.hillshade(neg_open, azimuth=315.0, altitude=30.0)

max_difference_from_mean tuple workflow

# 1) Compute multiscale local-relief response.
max_diff, max_scale = wbe.max_difference_from_mean(
    dem,
    min_scale=1,
    max_scale=75,
    step_size=2,
)

# 2) Use magnitude for visualization or thresholding.
max_diff_hs = wbe.hillshade(max_diff, azimuth=315.0, altitude=35.0)

# 3) Use the scale raster to inspect dominant feature size.
#    Larger values indicate broader landform scale.
max_scale.write("dominant_scale.tif")

Returns:

  • first raster: maximum signed difference-from-mean magnitude.
  • second raster: half-window radius (cells) at which the maximum absolute response occurs.

max_elevation_deviation tuple workflow

# 1) Compute multiscale standardized local-relief response (DEVmax).
max_dev, dev_scale = wbe.max_elevation_deviation(
    dem,
    min_scale=1,
    max_scale=75,
    step_size=2,
)

# 2) Visualize magnitude response.
max_dev_hs = wbe.hillshade(max_dev, azimuth=315.0, altitude=35.0)

# 3) Use scale raster to inspect dominant topographic-position scale.
dev_scale.write("dominant_dev_scale.tif")

Returns:

  • first raster: maximum signed standardized deviation magnitude.
  • second raster: half-window radius (cells) at which the maximum absolute response occurs.

DEVmax-to-MTP workflow (concrete scale ranges)

# Build three DEVmax rasters using distinct neighbourhood-scale ranges.
# Example ranges:
#   local = 1..8 cells
#   meso  = 9..32 cells
#   broad = 33..128 cells
local_dev, local_scale = wbe.max_elevation_deviation(
    dem,
    min_scale=1,
    max_scale=8,
    step_size=1,
)
meso_dev, meso_scale = wbe.max_elevation_deviation(
    dem,
    min_scale=9,
    max_scale=32,
    step_size=2,
)
broad_dev, broad_scale = wbe.max_elevation_deviation(
    dem,
    min_scale=33,
    max_scale=128,
    step_size=4,
)

# Optional illumination surface for visual clarity.
shade = wbe.multidirectional_hillshade(dem, altitude=35.0, full_360_mode=True)

# Compose the multiscale topographic position image.
mtp = wbe.multiscale_topographic_position_image(
    local_dev,
    meso_dev,
    broad_dev,
    hillshade=shade,
    lightness=1.2,
    output_path="mtp_local_meso_broad.tif",
)

Interpretation guide:

  • blue-dominant areas: strongest topographic prominence at local scales
  • green-dominant areas: strongest topographic prominence at meso scales
  • red-dominant areas: strongest topographic prominence at broad scales
# Classify topographic position directly from the DEM using separate local and
# broad DEVmax scale ranges, and persist an optional confidence raster.
mstp = wbe.multiscale_topographic_position_class(
    dem,
    local_min_scale=5,
    local_max_scale=80,
    local_step_size=1,
    broad_min_scale=500,
    broad_max_scale=2000,
    broad_step_size=20,
    local_threshold=0.5,
    broad_threshold=0.5,
    output_path="mstp_class_map.tif",
    output_confidence_path="mstp_class_confidence.tif",
)

Interpretation guide:

  • 0-2: lowland settings, from hollow to knoll
  • 3-5: intermediate settings, from hollow to knoll
  • 6-8: upland settings, from hollow to knoll
  • mstp_class_confidence.tif: optional confidence raster in the range [0, 1]

multiscale_elevation_percentile tuple workflow

# 1) Compute multiscale elevation percentile response.
mep, mep_scale = wbe.multiscale_elevation_percentile(
    dem,
    min_scale=4,
    max_scale=100,
    step_size=2,
    sig_digits=2,
)

# 2) Visualize extreme percentile magnitude.
mep_hs = wbe.hillshade(mep, azimuth=315.0, altitude=35.0)

# 3) Inspect the scale of strongest percentile response.
mep_scale.write("multiscale_elevation_percentile_scale.tif")

Returns:

  • first raster: most extreme elevation percentile (furthest from 50).
  • second raster: half-window radius (cells) where that extreme percentile occurs.

Single-scale examples

plan = wbe.plan_curvature(dem, z_factor=1.0)
mean = wbe.mean_curvature(dem, z_factor=1.0, log_transform=False)
minc = wbe.minimal_curvature(dem, z_factor=1.0)
genf = wbe.generating_function(dem, z_factor=1.0)
pcd = wbe.principal_curvature_direction(dem, z_factor=1.0)

Precision Agriculture

Whitebox Workflows for Python — Precision Agriculture Tools

This document covers Precision Agriculture workflows exposed through the WbEnvironment API. For common conventions, Raster I/O, and math operators see TOOLS.md.


Precision Agriculture

Precision agriculture in the Python API is exposed as a packaged Pro workflow. The former standalone helper methods are intentionally not exposed in the public Python surface.

Workflow Product Index

  • wbe.yield_data_conditioning_and_qa
  • wbe.precision_irrigation_optimization
  • wbe.precision_ag_yield_zone_intelligence

wbe.yield_data_conditioning_and_qa

yield_data_conditioning_and_qa(
    input: Vector,
    output_prefix: str = "yield_pipeline",
    yield_field_name: str = "YIELD",
    profile: str = "balanced",
    swath_width: float = 6.096,
    edge_radius: float | None = None,
    reconcile_radius: float | None = None,
    normalization_radius: float | None = None,
    z_score_threshold: float | None = None,
    min_yield: float | None = None,
    max_yield: float | None = None,
    mean_tonnage: float | None = None,
    header_field_name: str = "HEADER",
    use_field_aliases: bool = True,
    moisture_field_name: str | None = None,
    target_moisture_pct: float = 15.5,
    speed_field_name: str | None = None,
    heading_field_name: str | None = None,
    min_speed_kmh: float = 1.0,
    max_speed_kmh: float = 18.0,
    max_heading_change_deg: float = 35.0,
    lag_correction_mode: str = "none",
    lag_distance_m: float = 0.0,
    filtering_mode: str = "standard",
    robust_mad_threshold: float = 3.0,
    standardize: bool = False,
    ignore_zeros: bool = False,
    max_change_in_heading: float = 25.0,
    callback: callable | None = None,
) -> tuple[Vector, Vector, Vector, Vector, str]

Returns a 5-tuple in this order:

  1. qa_flags_vector
  2. clean_points_vector
  3. clean_map_vector
  4. confidence_points_vector
  5. summary_json_path

Example

qa_flags, clean_points, clean_map, confidence_points, summary_json = wbe.yield_data_conditioning_and_qa(
    input=yield_points,
    output_prefix='output/yield_pipeline',
    profile='balanced',
    use_field_aliases=True,
    filtering_mode='robust',
)

wbe.precision_irrigation_optimization

precision_irrigation_optimization(
    dem: Raster,
    field_boundary: Vector,
    output_prefix: str = "irrigation_opt",
    profile: str = "balanced",
    callback: callable | None = None,
) -> tuple[Raster, Raster, Vector, str]

Returns a 4-tuple in this order:

  1. irrigation_demand_raster
  2. stress_risk_raster
  3. management_zones_vector
  4. summary_json_path

Example

demand, stress, zones, summary = wbe.precision_irrigation_optimization(
    dem=dem,
    field_boundary=field_boundary,
    profile='balanced',
)

wbe.precision_ag_yield_zone_intelligence

precision_ag_yield_zone_intelligence(
    dem: Raster,
    field_boundary: Vector,
    output_prefix: str = "yield_zone_intelligence",
    callback: callable | None = None,
) -> tuple[Raster, Raster, Vector, str]

Returns a 4-tuple in this order:

  1. yield_stability_raster
  2. nutrient_transport_raster
  3. management_zones_vector
  4. summary_json_path

Example

stability, nutrient, zones, summary = wbe.precision_ag_yield_zone_intelligence(
    dem=dem,
    field_boundary=field_boundary,
)

LiDAR Processing

LiDAR Processing Tools

This document defines the LiDAR processing porting roadmap and CRS requirements for the backend migration. Tool-level API reference entries will be added here as each tool is ported.

For shared conventions (paths, callback payloads, optional output_path behavior), see TOOLS.md.

Overview

LiDAR processing tools consume point-cloud datasets (LAS/LAZ/COPC/PLY/E57 via wblidar) and produce one or more of:

  • LiDAR outputs (filtered/modified point clouds)
  • Raster outputs (grids, interpolations, density, DSM/DTM-style derivatives)
  • Vector outputs (contours, footprints, TIN-based products)
  • Diagnostic products (metadata/statistics)

Implementation Priorities

  • Phase 1: LiDAR-to-raster interpolation and gridding tools.
  • Phase 2: LiDAR-to-LiDAR processing tools.
  • Phase 3: LiDAR-to-vector and specialized diagnostics/analysis tools.

Current migration status and canonical API guidance are tracked in v2_migration_guide.md and internal/wbw_py_wbw_r_parity_ledger.md.

CRS Policy (Required)

These requirements are mandatory for all new LiDAR ports.

  1. LiDAR-to-raster outputs must inherit CRS metadata from input LiDAR.
  • If source has EPSG, set raster CRS EPSG.
  • If source has WKT only, set raster CRS WKT.
  • If both exist, preserve both.
  1. Multi-input LiDAR tools must run in a single reference CRS.
  • If all inputs already match, proceed directly.
  • If inputs differ but are transformable, reproject to a common reference CRS before interpolation/aggregation.
  • If CRS cannot be resolved, fail fast with a clear validation error.
  1. LiDAR-to-vector outputs must carry LiDAR CRS.
  • Output vector layer CRS must be assigned from source/reference LiDAR CRS.
  1. Tests are required for CRS behavior.
  • EPSG-only input
  • WKT-only input
  • Mismatched multi-input CRS
  • Missing CRS metadata failure mode

First Batch Targets

  • lidar_nearest_neighbour_gridding
  • lidar_idw_interpolation
  • lidar_tin_gridding
  • lidar_radial_basis_function_interpolation
  • lidar_sibson_interpolation

Rationale:

  • high user impact
  • representative interpolation pathways
  • establishes reusable CRS propagation/alignment patterns for all other LiDAR-to-raster tools

Current Python API

The following convenience methods are available on WbEnvironment:

  1. lidar_nearest_neighbour_gridding(input=None, resolution=1.0, search_radius=2.5, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  2. lidar_idw_interpolation(input=None, resolution=1.0, weight=1.0, search_radius=2.5, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, min_points=1, output_path=None, callback=None)
  3. lidar_tin_gridding(input=None, resolution=1.0, max_triangle_edge_length=inf, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  4. lidar_radial_basis_function_interpolation(input=None, resolution=1.0, num_points=15, search_radius=0.0, func_type="thinplatespline", poly_order="none", weight=0.1, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  5. lidar_sibson_interpolation(input=None, resolution=1.0, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  6. lidar_block_maximum(input=None, resolution=1.0, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  7. lidar_block_minimum(input=None, resolution=1.0, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  8. lidar_point_density(input=None, resolution=1.0, search_radius=2.5, returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  9. lidar_digital_surface_model(input=None, resolution=1.0, search_radius=0.5, min_elev=None, max_elev=None, max_triangle_edge_length=inf, output_path=None, callback=None)
  10. lidar_hillshade(input=None, resolution=1.0, search_radius=-1.0, azimuth=315.0, altitude=30.0, returns_included="all", excluded_classes=None, min_elev=None, max_elev=None, output_path=None, callback=None)
  11. filter_lidar_classes(input=None, excluded_classes=None, output_path=None, callback=None)
  12. lidar_shift(input=None, x_shift=0.0, y_shift=0.0, z_shift=0.0, output_path=None, callback=None)
  13. remove_duplicates(input=None, include_z=False, output_path=None, callback=None)
  14. filter_lidar_scan_angles(input=None, threshold=0, output_path=None, callback=None)
  15. filter_lidar_noise(input=None, output_path=None, callback=None)
  16. lidar_thin(input=None, resolution=1.0, method="first", save_filtered=False, output_path=None, filtered_output_path=None, callback=None)
  17. lidar_elevation_slice(input=None, minz=-inf, maxz=inf, classify=False, in_class_value=2, out_class_value=1, output_path=None, callback=None)
  18. lidar_join(inputs, output_path=None, callback=None)
  19. lidar_thin_high_density(input=None, density=1.0, resolution=1.0, save_filtered=False, output_path=None, filtered_output_path=None, callback=None)
  20. lidar_tile(input, tile_width=1000.0, tile_height=1000.0, origin_x=0.0, origin_y=0.0, min_points_in_tile=2, output_laz_format=True, output_directory=None, callback=None)
  21. sort_lidar(sort_criteria, input=None, output_path=None, callback=None)
  22. filter_lidar_by_percentile(input=None, percentile=0.0, block_size=1.0, output_path=None, callback=None)
  23. split_lidar(split_criterion, input=None, interval=5.0, min_pts=5, output_directory=None, callback=None)
  24. lidar_remove_outliers(input=None, search_radius=2.0, elev_diff=50.0, use_median=False, classify=False, output_path=None, callback=None)
  25. normalize_lidar(input, dtm, no_negatives=False, output_path=None, callback=None)
  26. height_above_ground(input, output_path=None, callback=None)
  27. lidar_ground_point_filter(input=None, search_radius=2.0, min_neighbours=0, slope_threshold=45.0, height_threshold=1.0, classify=False, height_above_ground=False, output_path=None, callback=None)
  28. filter_lidar(statement, input=None, output_path=None, callback=None)
  29. modify_lidar(statement, input=None, output_path=None, callback=None)
  30. filter_lidar_by_reference_surface(input, ref_surface, query="within", threshold=0.0, classify=False, true_class_value=2, false_class_value=1, preserve_classes=False, output_path=None, callback=None)
  31. classify_lidar(input=None, search_radius=2.5, grd_threshold=0.1, oto_threshold=1.0, linearity_threshold=0.5, planarity_threshold=0.85, num_iter=30, facade_threshold=0.5, output_path=None, callback=None)
  32. classify_buildings_in_lidar(in_lidar, building_footprints, output_path=None, callback=None)
  33. ascii_to_las(input_ascii_files, pattern, epsg_code=4326, output_directory=None, callback=None)
  34. las_to_ascii(input=None, output_path=None, callback=None)
  35. select_tiles_by_polygon(input_directory, output_directory, polygons, callback=None)
  36. lidar_info(input, output_path=None, show_point_density=True, show_vlrs=True, show_geokeys=True, callback=None)
  37. lidar_histogram(input, output_path=None, parameter="elevation", clip_percent=1.0, callback=None)
  38. lidar_point_stats(input=None, resolution=1.0, num_points=False, num_pulses=False, avg_points_per_pulse=False, z_range=False, intensity_range=False, predominant_class=False, output_directory=None, callback=None)
  39. lidar_contour(input=None, contour_interval=10.0, base_contour=0.0, smooth=5, interpolation_parameter="elevation", returns_included="all", excluded_classes=None, min_elev=-inf, max_elev=inf, max_triangle_edge_length=inf, output_path=None, callback=None)
  40. lidar_tile_footprint(input=None, output_hulls=False, output_path=None, callback=None)
  41. las_to_shapefile(input=None, output_multipoint=False, output_path=None, callback=None)
  42. lidar_construct_vector_tin(input=None, returns_included="all", excluded_classes=None, min_elev=-inf, max_elev=inf, max_triangle_edge_length=inf, output_path=None, callback=None)
  43. lidar_hex_bin(input, width, orientation="h", output_path=None, callback=None)
  44. lidar_point_return_analysis(input, create_output=False, output_path=None, report_path=None, callback=None)
  45. flightline_overlap(input=None, resolution=1.0, output_path=None, callback=None)
  46. recover_flightline_info(input, max_time_diff=5.0, pt_src_id=False, user_data=False, rgb=False, output_path=None, callback=None)
  47. find_flightline_edge_points(input, output_path=None, callback=None)
  48. lidar_tophat_transform(input, search_radius, output_path=None, callback=None)
  49. normal_vectors(input, search_radius=-1.0, output_path=None, callback=None)
  50. lidar_kappa(classification_lidar, reference_lidar, report_path, resolution=1.0, output_class_accuracy=False, output_path=None, callback=None)
  51. lidar_eigenvalue_features(input=None, num_neighbours=None, search_radius=None, output_path=None, callback=None)
  52. lidar_ransac_planes(input, search_radius=2.0, num_iterations=50, num_samples=10, inlier_threshold=0.15, acceptable_model_size=30, max_planar_slope=75.0, classify=False, only_last_returns=False, output_path=None, callback=None)
  53. lidar_rooftop_analysis(lidar_inputs, building_footprints, search_radius=2.0, num_iterations=50, num_samples=10, inlier_threshold=0.15, acceptable_model_size=30, max_planar_slope=75.0, norm_diff_threshold=2.0, azimuth=180.0, altitude=30.0, output_path=None, callback=None)
  54. lidar_qa_and_confidence(input, profile="balanced", block_size=1.0, max_building_size=150.0, slope_threshold=15.0, elev_threshold=0.15, high_confidence_threshold=0.8, output_prefix=None, output_path=None, callback=None)
  55. lidar_terrain_product_suite(input, profile="balanced", block_size=1.0, max_building_size=150.0, slope_threshold=15.0, elev_threshold=0.15, z_factor=1.0, hillshade_azimuth=315.0, hillshade_altitude=45.0, high_confidence_threshold=0.8, output_prefix=None, output_path=None, callback=None)
  56. utility_corridor_encroachment_intelligence(input, corridors, profile="balanced", resolution=2.0, risk_height_threshold=3.0, corridor_influence_distance=60.0, priority_zone_threshold=None, max_zone_features=5000, output_prefix=None, callback=None)
  57. forestry_structure_and_biomass_intelligence(input, profile="balanced", resolution=2.0, stand_block_cells=12, biomass_cap=25.0, output_prefix=None, callback=None)

Notes:

  • returns_included supports all, first, and last.
  • interpolation_parameter supports elevation, intensity, class, return_number, number_of_returns, scan_angle, time, rgb, and user_data.
  • excluded_classes accepts integer classes (e.g., [7, 18] in Python).
  • Backend tools now support legacy-style batch mode when input is omitted for all currently ported LiDAR raster tools.
  • In batch mode, the backend scans the current working directory for supported LiDAR formats (LAS, LAZ, COPC, PLY, E57), processes tiles in parallel, and writes per-tile GeoTIFF outputs with tool-specific suffixes.
  • For interpolation tools, batch mode also includes points from neighboring batch tiles when processing each target tile, which helps reduce interpolation edge effects at tile boundaries.
  • Python convenience methods now accept input=None to trigger backend batch mode.
  • In batch mode, the returned Python Raster is a placeholder pointing to the first written output tile; all batch outputs are written directly to disk and not retained as in-memory raster objects.
  • For LiDAR-to-LiDAR tools in batch mode, the returned Python Lidar is similarly a placeholder path to the first written output tile, while all batch outputs are written directly to disk.

Per-Tool Parameter Notes

lidar_nearest_neighbour_gridding

  • Use when preserving local point values is preferred over smoothing.
  • search_radius controls nodata behavior away from points.
  • Backend batch-mode suffix: _nn.tif.
  • In backend batch mode, each target tile can include neighboring tile points for edge-effect reduction.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_nearest_neighbour_gridding(
    input="value",
    resolution=1.0,
    search_radius=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
search_radiusfloatnoNumeric parameter for search_radius.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_idw_interpolation

  • weight controls distance decay. Higher values emphasize closer points.
  • search_radius <= 0 triggers k-nearest fallback; min_points controls k.
  • Backend batch-mode suffix: _idw.tif.
  • In backend batch mode, each target tile can include neighboring tile points for edge-effect reduction.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_idw_interpolation(
    input="value",
    resolution=1.0,
    weight=1.0,
    search_radius=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    min_points=1,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
weightfloatnoNumeric parameter for weight.
search_radiusfloatnoNumeric parameter for search_radius.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
min_pointsintnoNumeric parameter for min_points.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_tin_gridding

  • Uses Delaunay triangles with barycentric interpolation.
  • max_triangle_edge_length <= 0 means no edge-length limit.
  • Backend batch-mode suffix: _tin.tif.
  • In backend batch mode, each target tile can include neighboring tile points for edge-effect reduction.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_tin_gridding(
    input="value",
    resolution=1.0,
    max_triangle_edge_length=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    triangulation_backend,
    triangulation_auto_threshold=1,
    triangulation_epsilon=1.0,
    triangulation_thin_cell_size=1.0,
    triangulation_thin_method,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
max_triangle_edge_lengthfloatnoNumeric parameter for max_triangle_edge_length.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
triangulation_backendLiteral["auto", "delaunator", "wbtopology"]noOptional parameter triangulation_backend.
triangulation_auto_thresholdintnoNumeric parameter for triangulation_auto_threshold.
triangulation_epsilonfloatnoNumeric parameter for triangulation_epsilon.
triangulation_thin_cell_sizefloatnoNumeric parameter for triangulation_thin_cell_size.
triangulation_thin_methodLiteral["nearest_center", "min_value", "max_value"]noOptional parameter triangulation_thin_method.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_radial_basis_function_interpolation

  • num_points sets the local neighbourhood size.
  • func_type options: thinplatespline, polyharmonic, gaussian, multiquadric, inversemultiquadric.
  • poly_order controls local polynomial trend correction: none, constant, or quadratic.
  • Backend batch-mode suffix: _rbf.tif.
  • In backend batch mode, each target tile can include neighboring tile points for edge-effect reduction.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_radial_basis_function_interpolation(
    input="value",
    resolution=1.0,
    num_points=1,
    search_radius=1.0,
    func_type,
    poly_order,
    weight=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
num_pointsintnoNumeric parameter for num_points.
search_radiusfloatnoNumeric parameter for search_radius.
func_typeLiteral["thinplatespline", "polyharmonic", "gaussian", "multiquadric", "inversemultiquadric"]noOptional parameter func_type.
poly_orderLiteral["none", "constant", "quadratic"]noOptional parameter poly_order.
weightfloatnoNumeric parameter for weight.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_sibson_interpolation

  • True Sibson natural-neighbour interpolation intended for smooth terrain surfaces.
  • No explicit weight/radius tuning parameter is required for common use.
  • Backend batch-mode suffix: _sibson.tif.
  • In backend batch mode, each target tile can include neighboring tile points for edge-effect reduction.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_sibson_interpolation(
    input="value",
    resolution=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_block_maximum

  • Computes a cell-wise maximum from filtered LiDAR points for rapid surface approximation.
  • Backend batch-mode suffix: _block_max.tif.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_block_maximum(
    input="value",
    resolution=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_block_minimum

  • Computes a cell-wise minimum from filtered LiDAR points for rapid lower-envelope approximation.
  • Backend batch-mode suffix: _block_min.tif.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_block_minimum(
    input="value",
    resolution=1.0,
    interpolation_parameter=1,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
interpolation_parameterLiteral["elevation", "intensity", "class", "return_number", "number_of_returns", "scan_angle", "time", "rgb", "user_data"]noNumeric parameter for interpolation_parameter.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_point_density

  • Counts nearby points around each cell center within search_radius and reports density per area.
  • Backend batch-mode suffix: _density.tif.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_point_density(
    input="value",
    resolution=1.0,
    search_radius=1.0,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
search_radiusfloatnoNumeric parameter for search_radius.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_digital_surface_model

  • Uses local top-surface candidate filtering and TIN gridding for a DSM-style output.
  • Supports max_triangle_edge_length masking for long-edge facet suppression.
  • Backend batch-mode suffix: _dsm.tif.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_digital_surface_model(
    input="value",
    resolution=1.0,
    search_radius=1.0,
    min_elev=1.0,
    max_elev=1.0,
    max_triangle_edge_length=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
search_radiusfloatnoNumeric parameter for search_radius.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
max_triangle_edge_lengthfloatnoNumeric parameter for max_triangle_edge_length.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_hillshade

  • Derives a hillshade raster from LiDAR-derived local surface values.
  • Supports illumination controls via azimuth and altitude.
  • Supports optional search_radius compatibility parameter for legacy call-shape parity.
  • Backend batch-mode suffix: _hillshade.tif.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_hillshade(
    input="value",
    resolution=1.0,
    search_radius=1.0,
    azimuth=1.0,
    altitude=1.0,
    returns_included,
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
search_radiusfloatnoNumeric parameter for search_radius.
azimuthfloatnoNumeric parameter for azimuth.
altitudefloatnoNumeric parameter for altitude.
returns_includedLiteral["all", "first", "last"]noOptional parameter returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_contour

  • Builds contour lines from LiDAR points using TIN-based contouring.
  • Supports interval/base controls, interpolation parameter selection, returns/class filters, and optional triangle-edge-length masking.
  • In batch mode (input=None), processes all LiDAR files in the working directory and writes sibling contour shapefiles.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_contour(
    input="value",
    contour_interval=1.0,
    base_contour=1.0,
    smooth=1,
    interpolation_parameter="value",
    returns_included="value",
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    max_triangle_edge_length=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
contour_intervalfloatnoNumeric parameter for contour_interval.
base_contourfloatnoNumeric parameter for base_contour.
smoothintnoNumeric parameter for smooth.
interpolation_parameterstringnoString parameter for interpolation_parameter.
returns_includedstringnoString parameter for returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
max_triangle_edge_lengthfloatnoNumeric parameter for max_triangle_edge_length.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_tile_footprint

  • Generates polygon footprints per tile with summary attributes (LAS_NM, NUM_PNTS, Z_MIN, Z_MAX).
  • Writes bounding boxes by default; set output_hulls=True to write convex hull footprints.
  • In batch mode (input=None), writes a single combined footprint layer for all LiDAR tiles in the working directory.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_tile_footprint(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
output_hullsboolnoBoolean option for output_hulls.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

las_to_shapefile

  • Converts LiDAR points to vector output.
  • By default writes one point feature per LiDAR point with key attributes (Z, INTENSITY, CLASS, return fields).
  • If output_multipoint=True, writes a single multipoint feature instead.
  • In batch mode (input=None), writes one shapefile per LiDAR tile in the working directory.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.io_management.las_to_shapefile(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
output_multipointboolnoBoolean option for output_multipoint.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_construct_vector_tin

  • Builds a triangular mesh vector layer directly from LiDAR points using Delaunay triangulation.
  • Supports return filtering, class filtering, elevation limits, and optional max triangle-edge filtering.
  • In batch mode (input=None), writes one _tin.shp output per LiDAR tile in the working directory.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_construct_vector_tin(
    input="value",
    returns_included="value",
    [excluded_classes_1, excluded_classes_2],
    min_elev=1.0,
    max_elev=1.0,
    max_triangle_edge_length=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
returns_includedstringnoString parameter for returns_included.
excluded_classeslist[int] |NonenoList input for excluded_classes.
min_elevfloatnoNumeric parameter for min_elev.
max_elevfloatnoNumeric parameter for max_elev.
max_triangle_edge_lengthfloatnoNumeric parameter for max_triangle_edge_length.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_hex_bin

  • Bins LiDAR points to a hexagonal polygon grid and summarizes per-cell point count and min/max z/intensity.
  • width sets the distance between opposite hex sides.
  • orientation supports h (pointy-up) and v (flat-up).

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_hex_bin(
    input="value",
    width=1.0,
    orientation="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
widthfloatyesNumeric parameter for width.
orientationstringnoString parameter for orientation.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_point_return_analysis

  • Produces a return-sequence quality-control report (report_path) covering missing returns, duplicates, and r > n anomalies.
  • If create_output=True, also writes a classified QC LiDAR output (output) with class assignments for problematic return groups.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_point_return_analysis(
    input="value",
    output_path="result.tif",
    report_path="report.dat",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
create_outputboolnoBoolean option for create_output.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
report_pathstringnoPath value for report.
callbackfunctionnoOptional progress callback receiving JSON events.

flightline_overlap

  • Builds a raster whose cell values equal the number of distinct point_source_id values present in each cell.
  • In batch mode (input=None), scans the working directory for LiDAR tiles and writes one _flightline_overlap.tif raster per tile.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.flightline_overlap(
    input="value",
    resolution=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

recover_flightline_info

  • Sorts points by GPS time and starts a new inferred flightline when the time gap exceeds max_time_diff seconds.
  • Writes inferred flightline identifiers into any combination of point_source_id, user_data, and RGB.
  • If no output field flags are enabled, RGB output is enabled automatically.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.recover_flightline_info(
    input="value",
    max_time_diff=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
max_time_difffloatnoNumeric parameter for max_time_diff.
pt_src_idboolnoBoolean option for pt_src_id.
user_databoolnoBoolean option for user_data.
rgbboolnoBoolean option for rgb.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

find_flightline_edge_points

  • Filters the input LiDAR to only points carrying the LAS edge_of_flight_line flag.
  • Returns a LiDAR output containing just the edge points.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.analysis_metrics.find_flightline_edge_points(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_tophat_transform

  • Applies a white top-hat transform to point elevations by subtracting a locally opened surface from each point z value.
  • search_radius controls the XY neighbourhood used for the erosion and dilation steps.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.lidar_tophat_transform(
    input="value",
    search_radius=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
search_radiusfloatyesNumeric parameter for search_radius.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

normal_vectors

  • Estimates local plane normals from neighbouring points and writes a compatibility color encoding based on normal direction.
  • If search_radius <= 0, the backend estimates a nominal point spacing and derives a default neighbourhood size automatically.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.analysis_metrics.normal_vectors(
    input="value",
    search_radius=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_kappa

  • Compares classifications in two LiDAR datasets using nearest-point matching and writes an HTML agreement report.
  • Also writes a raster of per-cell classification agreement percentages at resolution.
  • output_class_accuracy is accepted for legacy call-shape parity; the class-agreement raster is produced regardless.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_kappa(
    classification_lidar="value",
    reference_lidar="value",
    report_path="report.dat",
    resolution=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
classification_lidarLidaryesInput LiDAR dataset for classification_lidar.
reference_lidarLidaryesInput LiDAR dataset for reference_lidar.
report_pathstringyesPath value for report.
resolutionfloatnoNumeric parameter for resolution.
output_class_accuracyboolnoBoolean option for output_class_accuracy.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_eigenvalue_features

  • Computes local PCA-based neighbourhood features and writes a binary .eigen output plus a JSON schema sidecar.
  • Supports single-file mode (input=...) and working-directory batch mode (input=None).
  • num_neighbours must be at least 7 when specified; search_radius can be used alone or together with neighbour-count limiting.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_eigenvalue_features(
    input="value",
    num_neighbours=1,
    search_radius=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
num_neighboursintnoNumeric parameter for num_neighbours.
search_radiusfloatnoNumeric parameter for search_radius.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_ransac_planes

  • Uses local RANSAC plane fitting to identify planar points.
  • If classify=False, non-planar points are filtered out; if classify=True, all points are retained and tagged as planar vs non-planar by class value.
  • only_last_returns=True restricts model fitting to late returns.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_ransac_planes(
    input="value",
    search_radius=1.0,
    num_iterations=1,
    num_samples=1,
    inlier_threshold=1.0,
    acceptable_model_size=1,
    max_planar_slope=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
num_iterationsintnoNumeric parameter for num_iterations.
num_samplesintnoNumeric parameter for num_samples.
inlier_thresholdfloatnoNumeric parameter for inlier_threshold.
acceptable_model_sizeintnoNumeric parameter for acceptable_model_size.
max_planar_slopefloatnoNumeric parameter for max_planar_slope.
classifyboolnoBoolean option for classify.
only_last_returnsboolnoBoolean option for only_last_returns.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_rooftop_analysis

  • Identifies rooftop facets inside building_footprints and writes polygon output with rooftop attributes such as MAX_ELEV, HILLSHADE, SLOPE, ASPECT, and AREA.
  • lidar_inputs accepts one or more LiDAR tiles covering the buildings of interest.
  • Current parity implementation outputs convex-hull roof facets per detected planar segment.

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_rooftop_analysis(
    [lidar_inputs_1, lidar_inputs_2],
    building_footprints,
    search_radius=1.0,
    num_iterations=1,
    num_samples=1,
    inlier_threshold=1.0,
    acceptable_model_size=1,
    max_planar_slope=1.0,
    norm_diff_threshold=1.0,
    azimuth=1.0,
    altitude=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
lidar_inputsLidaryesInput LiDAR dataset for lidar_inputs.
building_footprintsVectoryesInput vector layer for building_footprints.
search_radiusfloatnoNumeric parameter for search_radius.
num_iterationsintnoNumeric parameter for num_iterations.
num_samplesintnoNumeric parameter for num_samples.
inlier_thresholdfloatnoNumeric parameter for inlier_threshold.
acceptable_model_sizeintnoNumeric parameter for acceptable_model_size.
max_planar_slopefloatnoNumeric parameter for max_planar_slope.
norm_diff_thresholdfloatnoNumeric parameter for norm_diff_threshold.
azimuthfloatnoNumeric parameter for azimuth.
altitudefloatnoNumeric parameter for altitude.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_qa_and_confidence

  • Runs a QA workflow that classifies/filters ground points and produces DTM, confidence, uncertainty, QA flags, and summary outputs.
  • Returns a tuple of (classified_lidar, dtm, confidence, uncertainty, qa_flags, summary_path).
  • profile supports strict, balanced, and permissive.

Outputs

Returned as tuple[Lidar, Raster, Raster, Raster, Raster, str] in this order:

  • classified_lidar: Lidar
  • dtm: Raster
  • confidence: Raster
  • uncertainty: Raster
  • qa_flags: Raster
  • summary: str

WbEnvironment usage

classified_lidar, dtm, confidence, uncertainty, qa_flags, summary = wbe.lidar.workflow_products.lidar_qa_and_confidence(
    input,
    profile="value",
    block_size=1.0,
    max_building_size=1.0,
    slope_threshold=1.0,
    elev_threshold=1.0,
    high_confidence_threshold=1.0,
    output_prefix="output/result",
    output_path="output_path.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
profilestringyesString parameter for profile.
block_sizefloatyesNumeric parameter for block_size.
max_building_sizefloatyesNumeric parameter for max_building_size.
slope_thresholdfloatyesNumeric parameter for slope_threshold.
elev_thresholdfloatyesNumeric parameter for elev_threshold.
high_confidence_thresholdfloatyesNumeric parameter for high_confidence_threshold.
output_prefixstringnoOptional output prefix for multi-product outputs.
output_pathstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_terrain_product_suite

  • Runs an end-to-end terrain product workflow and outputs DTM, DSM, slope, hillshade, confidence, uncertainty, metadata summary, and optional classified lidar.
  • Returns (dtm, dsm, slope, hillshade, confidence, uncertainty, metadata_path, classified_lidar_optional).
  • profile supports strict, balanced, and permissive.

Outputs

Returned as tuple[Raster, Vector, Vector, Raster, str] in this order:

  • risk: Raster
  • zones: Vector
  • table: Vector
  • confidence: Raster
  • summary: str

WbEnvironment usage

risk, zones, table, confidence, summary = wbe.lidar.workflow_products.lidar_terrain_product_suite(
    input,
    profile="value",
    block_size=1.0,
    max_building_size=1.0,
    slope_threshold=1.0,
    elev_threshold=1.0,
    z_factor=1.0,
    hillshade_azimuth=1.0,
    hillshade_altitude=1.0,
    high_confidence_threshold=1.0,
    output_prefix="output/result",
    output_path="output_path.tif",
    ) -> PyResult<(Raster, Raster, Raster, Raster, Raster, Raster, String, Option<Lidar>)> {
        let mut args = serde_json,
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
profilestringyesString parameter for profile.
block_sizefloatyesNumeric parameter for block_size.
max_building_sizefloatyesNumeric parameter for max_building_size.
slope_thresholdfloatyesNumeric parameter for slope_threshold.
elev_thresholdfloatyesNumeric parameter for elev_threshold.
z_factorfloatyesNumeric parameter for z_factor.
hillshade_azimuthfloatyesNumeric parameter for hillshade_azimuth.
hillshade_altitudefloatyesNumeric parameter for hillshade_altitude.
high_confidence_thresholdfloatyesNumeric parameter for high_confidence_threshold.
output_prefixstringnoOptional output prefix for multi-product outputs.
output_pathstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.
`) -> PyResult<(Raster, Raster, Raster, Raster, Raster, Raster, String, Option)> {
let mut args = serde_json`functionnoInput raster for `) -> PyResult<(Raster, Raster, Raster, Raster, Raster, Raster, String, Option)> {
let mut args = serde_json`.

utility_corridor_encroachment_intelligence

  • Detects LiDAR-derived vegetation encroachment risk near utility corridor centerlines.
  • Returns (encroachment_risk_raster, corridor_priority_zones_vector, asset_risk_table_vector, classification_confidence_raster, summary_path).
  • profile supports fast, balanced, and strict; priority_zone_threshold and max_zone_features control zone selection density.
  • risk_height_threshold controls the canopy height where risk increases, and corridor_influence_distance controls proximity decay.

Outputs

Returned as tuple[Raster, Vector, Vector, Raster, str] in this order:

  • risk: Raster
  • zones: Vector
  • table: Vector
  • confidence: Raster
  • summary: str

WbEnvironment usage

risk, zones, table, confidence, summary = wbe.terrain.workflow_products.utility_corridor_encroachment_intelligence(
    input,
    corridors,
    profile="value",
    resolution=1.0,
    risk_height_threshold=1.0,
    corridor_influence_distance=1.0,
    priority_zone_threshold=1.0,
    max_zone_features=1,
    output_prefix="output/result",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
corridorsVectoryesInput vector layer for corridors.
profilestringyesString parameter for profile.
resolutionfloatyesNumeric parameter for resolution.
risk_height_thresholdfloatyesNumeric parameter for risk_height_threshold.
corridor_influence_distancefloatyesNumeric parameter for corridor_influence_distance.
priority_zone_thresholdfloatnoNumeric parameter for priority_zone_threshold.
max_zone_featuresintyesNumeric parameter for max_zone_features.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

forestry_structure_and_biomass_intelligence

  • Produces canopy metrics, vertical structure classes, stand units, biomass proxy, and confidence outputs from LiDAR.
  • Returns (canopy_height_metrics_raster, vertical_structure_class_raster, stand_structure_units_vector, biomass_proxy_raster, confidence_raster, summary_path).
  • profile supports fast, balanced, and strict; stand_block_cells controls stand-level aggregation size.
  • biomass_cap sets an upper bound for biomass proxy scaling.

Outputs

Returned as tuple[Raster, Raster, Vector, Raster, Raster, str] in this order:

  • canopy: Raster
  • class: Raster
  • stand: Vector
  • biomass: Raster
  • confidence: Raster
  • summary: str

WbEnvironment usage

canopy, class, stand, biomass, confidence, summary = wbe.terrain.workflow_products.forestry_structure_and_biomass_intelligence(
    input,
    profile="value",
    resolution=1.0,
    stand_block_cells=1,
    biomass_cap=1.0,
    terrain_adaptation="value",
    output_prefix="output/result",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
profilestringyesString parameter for profile.
resolutionfloatyesNumeric parameter for resolution.
stand_block_cellsintyesNumeric parameter for stand_block_cells.
biomass_capfloatyesNumeric parameter for biomass_cap.
terrain_adaptationstringyesString parameter for terrain_adaptation.
output_prefixstringnoOptional output prefix for multi-product outputs.
callbackfunctionnoOptional progress callback receiving JSON events.

filter_lidar_classes

  • Removes points whose classification is listed in excluded_classes.
  • Backend batch-mode suffix: _filtered_cls with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.filter_lidar_classes(
    input="value",
    [excluded_classes_1, excluded_classes_2],
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
excluded_classeslist[int] |NonenoList input for excluded_classes.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_shift

  • Applies additive x_shift, y_shift, and z_shift offsets to each point.
  • Backend batch-mode suffix: _shifted with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.lidar_shift(
    input="value",
    x_shift=1.0,
    y_shift=1.0,
    z_shift=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
x_shiftfloatnoNumeric parameter for x_shift.
y_shiftfloatnoNumeric parameter for y_shift.
z_shiftfloatnoNumeric parameter for z_shift.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

remove_duplicates

  • Removes duplicate points by x/y coordinates, optionally including z when include_z=True.
  • Backend batch-mode suffix: _dedup with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.remove_duplicates(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
include_zboolnoBoolean option for include_z.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

filter_lidar_scan_angles

  • Removes points with absolute scan angle greater than threshold.
  • threshold uses LAS scan-angle integer units (1 unit = 0.006°).
  • Backend batch-mode suffix: _scan_filtered with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.filter_lidar_scan_angles(
    input="value",
    threshold=1,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
thresholdintnoNumeric parameter for threshold.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

filter_lidar_noise

  • Removes points classified as low noise (class=7) or high noise (class=18).
  • Backend batch-mode suffix: _denoised with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.filter_lidar_noise(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_thin

  • Keeps at most one point per grid cell at resolution.
  • method supports first, last, lowest, highest, and nearest.
  • Backend batch-mode suffix: _thinned with LiDAR output extension.
  • If save_filtered=True, filtered-out points are also written and exposed as filtered_path in backend outputs (wrapper return remains the kept-point Lidar).

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_thin(
    input="value",
    resolution=1.0,
    method="value",
    output_path="result.tif",
    filtered_output="value",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
methodstringnoString parameter for method.
save_filteredboolnoBoolean option for save_filtered.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
filtered_outputstringnoString parameter for filtered_output.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_elevation_slice

  • In filter mode (classify=False), keeps only points with minz <= z <= maxz.
  • In classify mode (classify=True), keeps all points and reassigns class values using in_class_value and out_class_value.
  • Backend batch-mode suffix: _elev_slice with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.lidar_elevation_slice(
    input="value",
    minz=1.0,
    maxz=1.0,
    in_class_value=1,
    out_class_value=1,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
minzfloatnoNumeric parameter for minz.
maxzfloatnoNumeric parameter for maxz.
classifyboolnoBoolean option for classify.
in_class_valueintnoNumeric parameter for in_class_value.
out_class_valueintnoNumeric parameter for out_class_value.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_join

  • Merges multiple input LiDAR files into a single output point cloud.
  • Expects inputs to be a list of LiDAR objects/paths.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.lidar_join(
    [inputs_1, inputs_2],
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputsLidaryesInput LiDAR dataset for inputs.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_thin_high_density

  • Performs density-aware thinning by x/y blocks and z bins.
  • density sets target points-per-area threshold; areas above threshold are thinned.
  • If save_filtered=True, filtered points are also written and returned via backend filtered_path metadata.
  • Backend batch-mode suffix: _thinned_hd with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.interpolation_gridding.lidar_thin_high_density(
    input="value",
    density=1.0,
    resolution=1.0,
    output_path="result.tif",
    filtered_output="value",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
densityfloatnoNumeric parameter for density.
resolutionfloatnoNumeric parameter for resolution.
save_filteredboolnoBoolean option for save_filtered.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
filtered_outputstringnoString parameter for filtered_output.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_tile

  • Splits a single input LiDAR into row/column tile outputs using a regular grid.
  • Writes multiple files to output_directory (or <input_stem>/ by default) and returns a placeholder path to one written tile.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.lidar_tile(
    input="value",
    tile_width=1.0,
    tile_height=1.0,
    origin_x=1.0,
    origin_y=1.0,
    min_points_in_tile=1,
    output_directory="value",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
tile_widthfloatnoNumeric parameter for tile_width.
tile_heightfloatnoNumeric parameter for tile_height.
origin_xfloatnoNumeric parameter for origin_x.
origin_yfloatnoNumeric parameter for origin_y.
min_points_in_tileintnoNumeric parameter for min_points_in_tile.
output_laz_formatboolnoBoolean option for output_laz_format.
output_directorystringnoString parameter for output_directory.
callbackfunctionnoOptional progress callback receiving JSON events.

sort_lidar

  • Sorts points by one or more criteria (e.g., "x 100, y 100, z").
  • Supports optional bin sizes per criterion for grouped sorting.
  • Backend batch-mode suffix: _sorted with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.sort_lidar(
    sort_criteria="value",
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
sort_criteriastringyesString parameter for sort_criteria.
inputLidarnoInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

filter_lidar_by_percentile

  • Selects one representative point per grid block by elevation percentile.
  • percentile=0 selects local minima, 100 selects maxima, 50 approximates medians.
  • Excludes withheld and noise-classified points from percentile candidate sets.
  • Backend batch-mode suffix: _percentile with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.filter_lidar_by_percentile(
    input="value",
    percentile=1.0,
    block_size=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
percentilefloatnoNumeric parameter for percentile.
block_sizefloatnoNumeric parameter for block_size.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

split_lidar

  • Splits a LiDAR file into multiple outputs using a grouping criterion (num_pts, x, y, z, intensity, class, user_data, point_source_id, scan_angle, time).
  • interval controls bin width for numeric criteria and points-per-file when split_criterion="num_pts".
  • min_pts filters sparse split outputs.
  • In both single and batch mode, tool returns a placeholder path to one written split file plus backend output_count metadata.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.split_lidar(
    split_criterion="value",
    input="value",
    interval=1.0,
    min_pts=1,
    output_directory="value",
)

Parameters

NameTypeRequiredDescription
split_criterionstringyesString parameter for split_criterion.
inputLidarnoInput LiDAR dataset for input.
intervalfloatnoNumeric parameter for interval.
min_ptsintnoNumeric parameter for min_pts.
output_directorystringnoString parameter for output_directory.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_remove_outliers

  • Computes local elevation residuals from neighborhood mean/median and either filters or reclassifies outliers.
  • classify=False: removes outliers; classify=True: keeps all points and assigns low/high noise classes 7/18.
  • Backend batch-mode suffix: _outliers_removed (filter mode) or _outliers_classified (classify mode).

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.lidar_remove_outliers(
    input="value",
    search_radius=1.0,
    elev_diff=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
elev_difffloatnoNumeric parameter for elev_diff.
use_medianboolnoBoolean option for use_median.
classifyboolnoBoolean option for classify.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

normalize_lidar

  • Uses an input DTM raster to convert LiDAR elevations to height above terrain (z = z_lidar - z_dtm).
  • dtm may be provided as a path string or typed raster object.
  • If no_negatives=True, negative normalized values are clamped to 0.0.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.normalize_lidar(
    input="value",
    dtm,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
dtmRasteryesInput raster for dtm.
no_negativesboolnoBoolean option for no_negatives.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

height_above_ground

  • Converts each point elevation to height above the nearest ground-classified point (class=2).
  • Ground-classified points are assigned z=0.0 in output.
  • Fails with a validation/runtime error if there are no ground-classified points.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.height_above_ground(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_ground_point_filter

  • Applies a slope-and-height neighborhood test to identify off-terrain points.
  • classify=True writes classification labels (ground=2, off-terrain=1); otherwise off-terrain points are removed.
  • Supports optional height_above_ground=True output z normalization from local neighborhood minima.
  • Backend batch-mode suffix: _ground_filtered with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.remote_sensing.filters.lidar_ground_point_filter(
    input="value",
    search_radius=1.0,
    min_neighbours=1,
    slope_threshold=1.0,
    height_threshold=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
min_neighboursintnoNumeric parameter for min_neighbours.
slope_thresholdfloatnoNumeric parameter for slope_threshold.
height_thresholdfloatnoNumeric parameter for height_threshold.
classifyboolnoBoolean option for classify.
height_above_groundboolnoBoolean option for height_above_ground.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

filter_lidar

  • Filters points with a boolean statement evaluated against point attributes.
  • Supports core variables: coordinates (x,y,z), returns (ret,nret,is_late,...), class flags, scan metrics, color/time, and file min/mid/max stats.
  • Backend batch-mode suffix: _filtered with LiDAR output extension.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.filter_lidar(
    statement="value",
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
statementstringyesString parameter for statement.
inputLidarnoInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

modify_lidar

  • Applies assignment expressions to mutate LiDAR point attributes (e.g., z = z + 1, class = if(z > 10, 2, class), rgb = (255,0,0)).
  • Supports semicolon-separated multi-expression statements evaluated per point.
  • Supports no-input batch mode with _modified output suffix.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.modify_lidar(
    statement="value",
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
statementstringyesString parameter for statement.
inputLidarnoInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

filter_lidar_by_reference_surface

  • Compares each point elevation against a raster reference surface using query modes: within, <, <=, >, >=.
  • In filter mode (classify=False), outputs only points that satisfy the query.
  • In classify mode, all points are retained and classes are written using true_class_value and false_class_value (or preserved when preserve_classes=True).

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.filter_lidar_by_reference_surface(
    input="value",
    ref_surface,
    query="value",
    threshold=1.0,
    true_class_value=1,
    false_class_value=1,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
ref_surfaceRasteryesInput raster for ref_surface.
querystringnoString parameter for query.
thresholdfloatnoNumeric parameter for threshold.
classifyboolnoBoolean option for classify.
true_class_valueintnoNumeric parameter for true_class_value.
false_class_valueintnoNumeric parameter for false_class_value.
preserve_classesboolnoBoolean option for preserve_classes.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

classify_lidar

  • Performs basic neighborhood-based classification into ground (2), building (6), vegetation (5), and unclassified (1).
  • Uses search_radius, grd_threshold, and oto_threshold as primary controls, with RANSAC-style local planarity/linearity estimation.
  • Supports no-input batch mode; backend batch-mode suffix: _classified with LiDAR output extension.
  • linearity_threshold, planarity_threshold, num_iter, and facade_threshold are actively used during segmentation and refinement stages.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.classify_lidar(
    input="value",
    search_radius=1.0,
    grd_threshold=1.0,
    oto_threshold=1.0,
    linearity_threshold=1.0,
    planarity_threshold=1.0,
    num_iter=1,
    facade_threshold=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
grd_thresholdfloatnoNumeric parameter for grd_threshold.
oto_thresholdfloatnoNumeric parameter for oto_threshold.
linearity_thresholdfloatnoNumeric parameter for linearity_threshold.
planarity_thresholdfloatnoNumeric parameter for planarity_threshold.
num_iterintnoNumeric parameter for num_iter.
facade_thresholdfloatnoNumeric parameter for facade_threshold.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

classify_buildings_in_lidar

  • Reclassifies points to building class (6) when they fall within polygon building footprints.
  • Input polygons should represent building outlines in the same CRS as the LiDAR input.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.classify_buildings_in_lidar(
    in_lidar="value",
    building_footprints,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
in_lidarLidaryesInput LiDAR dataset for in_lidar.
building_footprintsVectoryesInput vector layer for building_footprints.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

ascii_to_las

  • Converts one or more ASCII point files into LAS output files.
  • pattern must include x,y,z and can include: i,c,rn,nr,time,sa,r,g,b.
  • If rn is used, nr must also be used; RGB fields must be supplied as a full r,g,b set.
  • epsg_code sets output LAS CRS metadata; outputs are written to output_directory when provided.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.ascii_to_las(
    [input_ascii_files_1, input_ascii_files_2],
    pattern="value",
    epsg_code=1,
    output_directory="value",
)

Parameters

NameTypeRequiredDescription
input_ascii_fileslist[stringinginging]yesList input for input_ascii_files.
patternstringyesString parameter for pattern.
epsg_codeintnoNumeric parameter for epsg_code.
output_directorystringnoString parameter for output_directory.
callbackfunctionnoOptional progress callback receiving JSON events.

las_to_ascii

  • Converts an input LiDAR file to CSV with columns based on available attributes (time/RGB columns are included when present).
  • If input=None, runs in batch mode over LiDAR files in the current working directory and returns a placeholder path to one produced CSV.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.io_management.las_to_ascii(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

select_tiles_by_polygon

  • Scans LiDAR tiles in input_directory and copies selected tiles to output_directory based on polygon overlap.
  • Tile selection uses representative tile-bounding-box sample points (corners, center, and edge midpoints) against polygon geometry.
  • Returns the output directory path and writes selected tile files directly to disk.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.io_management.select_tiles_by_polygon(
    input_directory="value",
    output_directory="value",
    polygons,
)

Parameters

NameTypeRequiredDescription
input_directorystringyesString parameter for input_directory.
output_directorystringyesString parameter for output_directory.
polygonsVectoryesInput vector layer for polygons.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_info

  • Produces a LiDAR summary report with point counts, coordinate/intensity ranges, class counts, and return counts.
  • Writes to .txt or .html report output and returns the report path.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_info(
    input="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
show_point_densityboolnoBoolean option for show_point_density.
show_vlrsboolnoBoolean option for show_vlrs.
show_geokeysboolnoBoolean option for show_geokeys.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_histogram

  • Builds a histogram report for one parameter (elevation, intensity, scan angle, class, or time).
  • Supports lower/upper tail clipping using clip_percent.
  • Writes an HTML report and returns its path.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_histogram(
    input="value",
    output_path="result.tif",
    parameter="value",
    clip_percent=1.0,
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
parameterstringnoString parameter for parameter.
clip_percentfloatnoNumeric parameter for clip_percent.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_point_stats

  • Generates one or more summary rasters (point count, pulse count, avg points/pulse, z range, intensity range, predominant class).
  • If no output flags are set, all point-stat rasters are generated.
  • Returns the output directory path containing generated GeoTIFF rasters.

Outputs

  • return: str

WbEnvironment usage

result = wbe.lidar.analysis_metrics.lidar_point_stats(
    input="value",
    resolution=1.0,
    output_directory="value",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
num_pointsboolnoBoolean option for num_points.
num_pulsesboolnoBoolean option for num_pulses.
avg_points_per_pulseboolnoBoolean option for avg_points_per_pulse.
z_rangeboolnoBoolean option for z_range.
intensity_rangeboolnoBoolean option for intensity_range.
predominant_classboolnoBoolean option for predominant_class.
output_directorystringnoString parameter for output_directory.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_classify_subset

  • Reclassifies points in a base cloud when they spatially match points in a subset cloud.
  • Uses 3D nearest-neighbour matching with configurable tolerance (map units).
  • Assigns subset_class_value to matches and nonsubset_class_value to non-matches (255 preserves original classes).

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.lidar_classify_subset(
    base_lidar="value",
    subset_lidar="value",
    subset_class_value=1,
    nonsubset_class_value=1,
    tolerance=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
base_lidarLidaryesInput LiDAR dataset for base_lidar.
subset_lidarLidaryesInput LiDAR dataset for subset_lidar.
subset_class_valueintnoNumeric parameter for subset_class_value.
nonsubset_class_valueintnoNumeric parameter for nonsubset_class_value.
tolerancefloatnoNumeric parameter for tolerance.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

clip_lidar_to_polygon

  • Retains only points that lie within input polygon geometry (polygons vector path/object).
  • Supports polygon holes; points inside holes are excluded from output.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.clip_lidar_to_polygon(
    input="value",
    polygons,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
polygonsVectoryesInput vector layer for polygons.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

erase_polygon_from_lidar

  • Removes points that lie within input polygon geometry (polygons vector path/object).
  • Complement of clip_lidar_to_polygon; points outside polygons are retained.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.erase_polygon_from_lidar(
    input="value",
    polygons,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
polygonsVectoryesInput vector layer for polygons.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

classify_overlap_points

  • Identifies overlap points in grid cells containing multiple point-source IDs and either classifies (class=12) or filters them.
  • Supported criteria: max scan angle, not min point source id, not min time, multiple point source IDs.
  • filter=True removes overlap points; otherwise flagged points are reclassified.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.classify_overlap_points(
    input="value",
    resolution=1.0,
    overlap_criterion="value",
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
resolutionfloatnoNumeric parameter for resolution.
overlap_criterionstringnoString parameter for overlap_criterion.
filterboolnoBoolean option for filter.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_segmentation

  • Segments points into connected components using XY neighbourhood (search_radius) and vertical continuity (max_z_diff).
  • Writes per-segment colours into point RGB values; largest segment receives dark green (25,120,0).
  • Compatibility parameters for legacy call-shape are accepted (num_iterations, num_samples, inlier_threshold, acceptable_model_size, max_planar_slope, norm_diff_threshold).
  • Optional ground=True assigns class 2 to the largest segment and class 1 to other segmented points.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.lidar_segmentation(
    input="value",
    search_radius=1.0,
    num_iterations=1,
    num_samples=1,
    inlier_threshold=1.0,
    acceptable_model_size=1,
    max_planar_slope=1.0,
    norm_diff_threshold=1.0,
    max_z_diff=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
num_iterationsintnoNumeric parameter for num_iterations.
num_samplesintnoNumeric parameter for num_samples.
inlier_thresholdfloatnoNumeric parameter for inlier_threshold.
acceptable_model_sizeintnoNumeric parameter for acceptable_model_size.
max_planar_slopefloatnoNumeric parameter for max_planar_slope.
norm_diff_thresholdfloatnoNumeric parameter for norm_diff_threshold.
max_z_difffloatnoNumeric parameter for max_z_diff.
classesboolnoBoolean option for classes.
groundboolnoBoolean option for ground.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

individual_tree_segmentation

  • Segments individual tree points using a mean-shift mode-seeking workflow over LiDAR points.
  • Algorithm inspiration and credit: this implementation is inspired by the self-adaptive mean-shift tree-segmentation approach described in the 2020 MDPI Remote Sensing article on individual-tree segmentation, and by the grid-accelerated approximation ideas in the MeanShift++ paper (arXiv, 2021).
  • Defaults to vegetation-only segmentation (only_use_veg=True, veg_classes="3,4,5") and height filtering (min_height=2.0).
  • Uses adaptive per-seed horizontal bandwidth by default (adaptive_bandwidth=True) based on local neighbour density and angular sector crown-radius cues.
  • Adaptive controls: adaptive_neighbors (default 24) and adaptive_sector_count (default 8), with fallback to bounded height-based scaling when adaptive mode is disabled.
  • Supports optional MeanShift++-style grid approximation (grid_acceleration=True) that runs mode updates against aggregated grid cells for faster large-cloud processing.
  • Grid approximation control: grid_cell_size (default 0.5 in XY map units).
  • Optional post-grid exact refinement: grid_refine_exact=True with grid_refine_iterations (default 2) to recover local precision after coarse grid updates.
  • Optional tiled seed scheduling for very large inputs: tile_size (default 0.0, disabled) and tile_overlap (default 0.0, must be smaller than tile_size).
  • Supports deterministic random segment colouring (output_id_mode="rgb"), optional id storage in user_data / point_source_id, and optional sidecar CSV output (output_sidecar_csv=True).
  • Includes performance controls: threads and simd.

Benchmarking notes (developer reference):

DateDatasetPointsModeThreadsSIMDWall time (ms)Assigned veg pointsSegment count
YYYY-MM-DDnamenexact / grid_accelttrue/falsevaluevaluevalue

Expanded local matrix (2026-03-24):

DateDatasetPointsModeThreadsSIMDWall time (ms)Assigned veg pointsSegment count
2026-03-24synthetic small_t32_p1805952exactautotrue28.28 (median)553632
2026-03-24synthetic small_t32_p1805952grid_accelautotrue9.20 (median)553632
2026-03-24synthetic small_t32_p1805952grid_refineautotrue14.29 (median)553632
2026-03-24synthetic small_t32_p1805952grid_refine_tiledautotrue14.86 (median)553632
2026-03-24synthetic small_t32_p1805952grid_refine_tiled_t11true61.15 (median)553632
2026-03-24synthetic medium_t64_p22014464exactautotrue90.10 (median)1363264
2026-03-24synthetic medium_t64_p22014464grid_accelautotrue28.40 (median)1363264
2026-03-24synthetic medium_t64_p22014464grid_refineautotrue44.48 (median)1363264
2026-03-24synthetic medium_t64_p22014464grid_refine_tiledautotrue48.20 (median)1363264
2026-03-24synthetic medium_t64_p22014464grid_refine_tiled_t11true191.91 (median)1363264
2026-03-24synthetic medium_t64_p22014464grid_refine_tiled_t44true72.74 (median)1363264

Observed speed/quality summary:

  • Quality parity on synthetic data: assigned-point and segment-count ratios are 1.0 for all measured variants versus exact.
  • Fastest profile in this matrix: grid_accel (about 3.07x faster on small, 3.17x faster on medium versus exact).
  • Grid refine improves precision pathway while retaining speedup (about 1.98x small, 2.03x medium versus exact).
  • Tiling is useful for scalability controls, but on these moderate synthetic sizes it adds overhead unless required for memory/partitioning constraints.

Parameter tuning guidance: For recommended parameter profiles tailored to your use case (speed-critical, precision-optimized, balanced, or memory-constrained), see Section 16 (Parameter tuning guide) in lidar_individual_tree_segmentation_design.md. This guide provides ready-to-use parameter sets plus hyperparameter tuning directions for common forest types.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.individual_tree_segmentation(
    input="value",
    veg_classes="value",
    4,
    5",
    min_height=1.0,
    max_height=1.0,
    bandwidth_min=1.0,
    bandwidth_max=1.0,
    adaptive_neighbors=1,
    adaptive_sector_count=1,
    grid_cell_size=1.0,
    grid_refine_iterations=1,
    tile_size=1.0,
    tile_overlap=1.0,
    vertical_bandwidth=1.0,
    max_iterations=1,
    convergence_tol=1.0,
    min_cluster_points=1,
    mode_merge_dist=1.0,
    threads=1,
    output_id_mode="value",
    seed=1,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
only_use_vegboolnoBoolean option for only_use_veg.
veg_classesstringnoString parameter for veg_classes.
4AnyyesParameter 4.
5"AnyyesParameter 5".
min_heightfloatnoNumeric parameter for min_height.
max_heightfloatnoNumeric parameter for max_height.
bandwidth_minfloatnoNumeric parameter for bandwidth_min.
bandwidth_maxfloatnoNumeric parameter for bandwidth_max.
adaptive_bandwidthboolnoBoolean option for adaptive_bandwidth.
adaptive_neighborsintnoNumeric parameter for adaptive_neighbors.
adaptive_sector_countintnoNumeric parameter for adaptive_sector_count.
grid_accelerationboolnoBoolean option for grid_acceleration.
grid_cell_sizefloatnoNumeric parameter for grid_cell_size.
grid_refine_exactboolnoBoolean option for grid_refine_exact.
grid_refine_iterationsintnoNumeric parameter for grid_refine_iterations.
tile_sizefloatnoNumeric parameter for tile_size.
tile_overlapfloatnoNumeric parameter for tile_overlap.
vertical_bandwidthfloatnoNumeric parameter for vertical_bandwidth.
max_iterationsintnoNumeric parameter for max_iterations.
convergence_tolfloatnoNumeric parameter for convergence_tol.
min_cluster_pointsintnoNumeric parameter for min_cluster_points.
mode_merge_distfloatnoNumeric parameter for mode_merge_dist.
threadsintnoNumeric parameter for threads.
simdboolnoBoolean option for simd.
output_id_modestringnoString parameter for output_id_mode.
output_sidecar_csvboolnoBoolean option for output_sidecar_csv.
seedintnoNumeric parameter for seed.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

individual_tree_detection

  • Identifies tree top points in a LiDAR cloud using local maxima detection.
  • Detects points that are the highest within a local search neighbourhood in XY, with optional height range constraints.
  • Search neighbourhood size can vary with height: min_search_radius applies at lower heights, max_search_radius at upper heights, with linear interpolation between.
  • Requires vegetation-only filtering by default (only_use_veg=True, vegetation classes 3, 4, 5); can be disabled if input is unclassified.
  • Outputs a vector shapefile of tree top points with attributes: FID (1-based point index) and Z (height value).
  • Use case: rapid treetop detection for forest inventory, DBH estimation, or canopy analysis; complements individual_tree_segmentation for cases where only crown centroids are needed.
  • Parameters:
    • min_search_radius (default 1.0): search neighbourhood radius at minimum height
    • max_search_radius (optional): neighbourhood size at upper heights; if not specified, uses min_search_radius (constant neighbourhood)
    • min_height (default 0.0): minimum height threshold (points below this are skipped)
    • max_height (optional): height value where max_search_radius applies (linear interpolation between min and max)
    • only_use_veg (default true): if true, process only vegetation classes 3, 4, 5; if false, use all non-withheld, non-noise points

Outputs

  • return: Vector

WbEnvironment usage

result = wbe.lidar.analysis_metrics.individual_tree_detection(
    input="value",
    min_search_radius=1.0,
    min_height=1.0,
    max_search_radius=1.0,
    max_height=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
min_search_radiusfloatnoNumeric parameter for min_search_radius.
min_heightfloatnoNumeric parameter for min_height.
max_search_radiusfloatnoNumeric parameter for max_search_radius.
max_heightfloatnoNumeric parameter for max_height.
only_use_vegboolnoBoolean option for only_use_veg.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_segmentation_based_filter

  • Performs neighbourhood-connected low-relief ground extraction using search_radius and max_z_diff.
  • classify_points=False outputs only extracted ground-like points.
  • classify_points=True retains all points and assigns class 2 (ground-like) or class 1 (other).

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.filtering_classification.lidar_segmentation_based_filter(
    input="value",
    search_radius=1.0,
    norm_diff_threshold=1.0,
    max_z_diff=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
search_radiusfloatnoNumeric parameter for search_radius.
norm_diff_thresholdfloatnoNumeric parameter for norm_diff_threshold.
max_z_difffloatnoNumeric parameter for max_z_diff.
classify_pointsboolnoBoolean option for classify_points.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lidar_colourize

  • Assigns point RGB values from an overlapping raster image sampled at each point XY location.
  • image can be provided as a raster object/path; out-of-image or nodata samples are assigned black.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.io_management.lidar_colourize(
    input="value",
    image,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidaryesInput LiDAR dataset for input.
imageRasteryesInput raster for image.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

colourize_based_on_class

  • Applies class-based colours for LAS classes 0-18, with optional per-class overrides via clr_str.
  • Supports optional intensity blending (intensity_blending_amount in percent).
  • use_unique_clrs_for_buildings=True assigns unique colours to connected building clusters (class=6) using search_radius.
  • Supports batch mode when input=None.

Outputs

  • return: Lidar

WbEnvironment usage

result = wbe.lidar.analysis_metrics.colourize_based_on_class(
    input="value",
    intensity_blending_amount=1.0,
    clr_str="value",
    search_radius=1.0,
    output_path="result.tif",
)

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
intensity_blending_amountfloatnoNumeric parameter for intensity_blending_amount.
clr_strstringnoString parameter for clr_str.
use_unique_clrs_for_buildingsboolnoBoolean option for use_unique_clrs_for_buildings.
search_radiusfloatnoNumeric parameter for search_radius.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

colourize_based_on_point_returns

  • Applies colours by return type: only, first, intermediate, and last returns.
  • Supports optional intensity blending (intensity_blending_amount in percent).
  • Supports batch mode when input=None.

Callback Payload Examples

All LiDAR interpolation methods emit JSON strings through callback using message/progress events.

Example message event:

{"type":"message","message":"reading input lidar"}

Example progress event:

{"type":"progress","percent":0.63}

Parameters

NameTypeRequiredDescription
inputLidarnoInput LiDAR dataset for input.
intensity_blending_amountfloatnoNumeric parameter for intensity_blending_amount.
only_ret_colourstringnoString parameter for only_ret_colour.
first_ret_colourstringnoString parameter for first_ret_colour.
intermediate_ret_colourstringnoString parameter for intermediate_ret_colour.
last_ret_colourstringnoString parameter for last_ret_colour.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

percent is normalized in [0, 1] and reaches 1.0 on completion.

Outputs

  • return: Lidar

Example:

import whitebox_workflows as wbw

wbe = wbw.WbEnvironment()
lidar = wbe.read_lidar("tile.laz")

dem = wbe.lidar_idw_interpolation(
	lidar,
	resolution=1.0,
	weight=2.0,
	returns_included="last",
	excluded_classes=[7, 18],
)

Notes

  • This document is intentionally planning-oriented for now.
  • As each tool is ported, add full parameter and examples sections in this file.

Stream Network Analysis

Stream Network Analysis Tools

This document provides comprehensive documentation for stream network analysis tools. For common raster I/O conventions, parameter formats, and usage patterns, see the main TOOLS.md reference.

Overview

Stream network analysis tools operate on digital elevation models (DEMs) to extract, analyze, and characterize stream networks. These tools use D8 (eight-directional) flow direction algorithms to trace flow paths and compute stream properties.

Key Concepts

  • D8 Pointer: A raster encoding the direction of steepest descent from each cell to one of its 8 neighbors. Required input for most tools.
  • Streams Raster: A binary or continuous raster where positive values mark stream cells; zero and NoData values mark non-stream cells.
  • Stream Order: A hierarchical classification system ranking stream segments based on tributaries and confluence patterns.
  • Stream Link: A continuous stream segment between junctions (confluences) or from a source to the first junction.

Tool Index

Stream Ordering Tools

Stream ordering systems classify streams hierarchically based on network structure. Each system makes different assumptions about what constitutes the "main stem" and how order changes at confluences.

Strahler Stream Order

Assigns stream order based on the algorithm: headwater links are order 1; when two links of equal order join, the downstream link is order+1; when links of different orders join, the downstream link takes the higher order.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer raster
  • streams (Raster): Stream network raster (positive values = streams)
  • esri_pntr (bool, optional): If true, use ESRI-style pointer values; otherwise use Whitebox style (default: false)
  • zero_background (bool, optional): If true, assign zero to non-stream cells; otherwise use NoData (default: false)
  • output (str, optional): Output raster path

Output: Raster with Strahler order values

References:

  • Strahler, A. N. (1957). Quantitative analysis of watershed geomorphology. EOS Transactions American Geophysical Union, 38(6), 913-920.

Horton Stream Order

Assigns stream order starting from Strahler order, then replaces all cells along the main trunk (longest path from outlet) with the outlet's order value. This emphasizes the main channel rather than tributary networks.

Parameters: Same as Strahler Stream Order

Output: Raster with Horton order values

References:

  • Horton, R. E. (1945). Erosional development of streams and their drainage basins. GSA Bulletin, 56(3), 275-370.

Hack Stream Order

Assigns order from the outlet upstream: the outlet (main stem) is order 1, tributaries to the main stem are order 2, and tributary order increases upstream. Unlike Strahler, order increases away from the outlet, which is useful when outlet location is certain but headwater extent is uncertain.

Parameters: Same as Strahler Stream Order

Output: Raster with Hack order values

References:

  • Hack, J. T. (1957). Studies of longitudinal stream profiles in Virginia and Maryland. USGS Professional Paper 294-B.

Topological Stream Order

Assigns order based on the count of upstream links (topological distance from the outlet). Each confluence increases order by one moving downstream.

Parameters: Same as Strahler Stream Order

Output: Raster with topological order values

Shreve Stream Magnitude

Calculates Shreve stream magnitude: the sum of magnitude values of upstream headwater cells (all headwaters count as magnitude 1). Magnitude increases when tributaries join—new magnitude = sum of upstream tributaries.

Parameters: Same as Strahler Stream Order

Output: Raster with Shreve magnitude values

References:

  • Shreve, R. L. (1966). Statistical law of stream numbers. Journal of Geology, 74(1), 17-37.

Assigns unique integer identifiers to each stream link (continuous segment between junctions or from headwater to first junction). Useful for extracting and analyzing individual segments.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • zero_background (bool, optional): Zero background flag
  • output (str, optional): Output raster path

Output: Raster with unique link identifiers

Classifies each stream link by type:

  • 1: Exterior (headwater link with no upstream)
  • 2: Interior (link with 1+ upstream tributaries, drains to another link)
  • 3: Source (similar to exterior)
  • 4: Link (standard interior link)
  • 5: Sink (terminal outlet)

Parameters: Same as Stream Link Identifier

Output: Raster with classified link types

Calculates total length for each stream link. All cells in the same link have the same value (the complete link length).

Parameters)

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model (for cell size/distance calculation)
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • output (str, optional): Output raster path

Output: Raster with link lengths

Calculates average slope for each stream link. Slope is computed as vertical drop over horizontal distance along the stream.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • output (str, optional): Output raster path

Output: Raster with link slopes

Stream Slope Continuous

Calculates slope at each stream cell using neighbors along the flow direction. Provides cell-by-cell slope rather than constant per-link values.

Parameters: Same as Stream Link Slope

Output: Raster with per-cell slopes

Stream Network Extraction Tools

Extract Streams

Extracts stream network from flow accumulation raster using a user-defined threshold. Cells with flow accumulation >= threshold are marked as streams.

Parameters:

  • flow_accumulation (Raster): Flow accumulation raster (output from a flow accumulation tool)
  • threshold (float): Minimum flow accumulation value to designate as stream
  • output (str, optional): Output raster path

Output: Binary stream raster (1 = stream, 0 = non-stream)

Extract Valleys

Extracts valley networks (broader low-lying areas) from a DEM. Offers multiple algorithms:

  • Laplace/Quadratic: Curvature-based valley detection
  • Lindsay-Curvature: Custom curvature index
  • Peucker-Douglas: Tangential curvature method

Parameters:

  • dem (Raster): Digital elevation model
  • type (str): Valley detection method (default: "quadratic")
  • thin (bool, optional): Thin valley lines to single-cell width (default: false)
  • output (str, optional): Output raster path

Output: Valley network raster

Stream Network Distance and Upstream Analysis Tools

Distance to Outlet

Calculates downstream channel distance along the D8 network to the outlet for each stream cell.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model (for distance calculation)
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • output (str, optional): Output raster path

Output: Raster with distance to outlet (in horizontal distance units)

Length of Upstream Channels

Calculates total upstream channel length for each stream cell. Useful for identifying headwater areas and stream densities.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • output (str, optional): Output raster path

Output: Raster with upstream channel lengths

Farthest Channel Head

Calculates upstream distance to the most distant channel head for each stream cell.

Parameters: Same as Length of Upstream Channels

Output: Raster with distance to farthest upstream head

Stream Main Stem and Tributary Tools

Find Main Stem

Identifies cells belonging to the main channel (longest stream path from outlet). Outputs a binary mask.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • output (str, optional): Output raster path

Output: Boolean raster (1 = main stem, 0 = tributary)

Tributary Identifier

Assigns unique identifier to each tributary system. Useful for analyzing tributary properties.

Parameters: Same as Find Main Stem

Output: Raster with tributary identifiers

Remove Short Streams

Prunes stream links shorter than a minimum length threshold. Useful for cleaning noisy stream networks.

Parameters:

  • d8_pntr (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model
  • min_length (float): Minimum link length to retain (in map units)
  • esri_pntr (bool, optional): ESRI-style pointer flag
  • output (str, optional): Output raster path

Output: Pruned stream raster with short links removed

Stream Network Conversion Tools

Raster Streams to Vector

Converts a raster stream network to a vector line layer. Each stream link becomes a PolyLine feature with attributes showing stream value and link length.

Parameters:

  • streams (Raster): Stream network raster
  • d8_pointer (Raster): D8 flow direction pointer
  • esri_pointer (bool, optional): ESRI-style pointer flag
  • all_vertices (bool, optional): Include all vertices or only direction changes (default: false)

Output: Vector layer with stream PolyLines

Rasterize Streams

Converts a vector stream line layer to a raster grid.

Parameters:

  • input_vector (Vector): Input stream network vector layer
  • reference_raster (Raster): Reference raster for grid specification
  • field (str, optional): Attribute field for output values (default: stream ID)
  • output (str, optional): Output raster path

Output: Raster stream network

Repair Stream Vector Topology

Repairs broken topology in vector stream networks, including:

  • Snapping nearly-overlapping endpoints
  • Splitting lines at intersections
  • Removing duplicate segments
  • Removing invalid geometries

Parameters:

  • input_vector (Vector): Input stream vector layer
  • snap_distance (float): Maximum distance for snapping endpoints (default: 1 cell size)
  • output (str, optional): Output vector path

Output: Repaired vector stream layer

Long Profile Tools

Long profiles are plots of elevation against downstream distance. Useful for analyzing stream gradient and identifying bedrock steps.

Long Profile

Creates an interactive SVG line graph showing elevation against distance to outlet for the entire stream network. Outputs an HTML document with embedded SVG.

Parameters:

  • d8_pointer (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model
  • output_html_file (str): Output HTML file path
  • esri_pointer (bool, optional): ESRI-style pointer flag

Output: Interactive HTML document with longitudinal profile

Long Profile from Points

Creates long profiles for sample points along stream network. Useful for extracting profiles at specific locations.

Parameters:

  • points_vector (Vector): Vector points at profile sample locations
  • d8_pointer (Raster): D8 flow direction pointer
  • streams_raster (Raster): Stream network raster
  • dem (Raster): Digital elevation model
  • output_folder (str): Output folder for HTML files
  • esri_pointer (bool, optional): ESRI-style pointer flag

Output: Set of HTML profile documents (one per input point)

Comprehensive Stream Analysis Tools

Vector Stream Network Analysis

Performs comprehensive analysis on a vector stream network, generating multiple output layers:

  • Stream links with order, magnitude, length, and slope
  • Stream thalwegs (centerlines)
  • Drainage basins (catchments)
  • Stream confluences (junctions)

Parameters:

  • input_vector (Vector): Input stream network
  • dem (Raster, optional): Digital elevation model for slope/aspect analysis
  • output_folder (str): Output folder for generated layers

Output: Multiple vector layers with comprehensive stream attributes

Professional Tools (Pro License Required)

Prune Vector Streams

Advanced vector stream pruning based on Shreve magnitude and stream type criteria. Allows selective removal of minor tributaries while preserving main stem structure.

Parameters:

  • input (Vector): Input stream network
  • magnitude_threshold (float): Minimum Shreve magnitude to retain (default: 2)
  • output (str, optional): Output vector path

Output: Pruned stream network

River Centerlines

Extracts river centerlines from a binary water mask raster using medial axis transformation. Useful for generating channel centerlines from satellite or aerial imagery.

Parameters:

  • water_raster (Raster): Binary water/non-water raster
  • output (str, optional): Output vector centerline path

Output: Vector centerline PolyLines

Usage Notes

D8 Pointer Conventions

Stream network tools accept both Whitebox and ESRI D8 pointer conventions. Whitebox convention:

  • 1 = E, 2 = NE, 4 = N, 8 = NW, 16 = W, 32 = SW, 64 = S, 128 = SE

ESRI convention:

  • 1 = E, 2 = SE, 4 = S, 8 = SW, 16 = W, 32 = NW, 64 = N, 128 = NE

Set esri_pntr=True when using ESRI-convention pointers.

DEM Preparation

Before extracting streams, DEMs should be preprocessed to remove topographic depressions and flat areas. Tools are typically:

  1. fill_depressions or breach_depressions_least_cost (from geomorphometry tools)
  2. d8_pointer (compute D8 flow directions on depressionless DEM)
  3. flow_accumulation (compute d8 flow accumulation)

Typical Workflow

# Example workflow (pseudocode)
dem_filled = fill_depressions(dem)
d8_ptr = d8_pointer(dem_filled)
flow_accum = flow_accumulation(d8_ptr)
streams = extract_streams(flow_accum, threshold=100)
strahler_order = strahler_stream_order(d8_ptr, streams)
streams_vector = raster_streams_to_vector(streams, d8_ptr)

See Also

Data Tools

Data Tools

This document covers the first batch of data and format conversion tools ported into the new backend.

Tool Index

  • add_point_coordinates_to_table
  • clean_vector
  • convert_nodata_to_zero
  • csv_points_to_vector
  • export_table_to_csv
  • fix_dangling_arcs
  • join_tables
  • lines_to_polygons
  • merge_table_with_csv
  • merge_vectors
  • modify_nodata_value
  • multipart_to_singlepart
  • new_raster_from_base_raster
  • new_raster_from_base_vector
  • polygons_to_lines
  • print_geotiff_tags
  • raster_to_vector_lines
  • raster_to_vector_polygons
  • raster_to_vector_points
  • reinitialize_attribute_table
  • remove_polygon_holes
  • remove_raster_polygon_holes
  • set_nodata_value
  • singlepart_to_multipart
  • vector_lines_to_raster
  • vector_polygons_to_raster
  • vector_points_to_raster

add_point_coordinates_to_table

Copies a point layer and appends XCOORD and YCOORD fields using each feature's point coordinates.

Outputs

  • return: Vector

WbEnvironment usage

points_with_xy = wbe.conversion.vector_table_io.add_point_coordinates_to_table(points, output_path="points_with_xy.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

clean_vector

Removes null and invalid geometries from a vector layer. For line and polygon data, undersized parts are removed and fully invalid features are dropped.

Outputs

  • return: Vector

WbEnvironment usage

cleaned = wbe.conversion.vector_table_io.clean_vector(input_vector, output_path="cleaned.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

convert_nodata_to_zero

Replaces nodata cells in a raster with 0 while leaving all valid cells unchanged.

Outputs

  • return: Raster

WbEnvironment usage

result = wbe.conversion.raster_vector_conversion.convert_nodata_to_zero(input_raster, output_path="zeroed.tif")

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

csv_points_to_vector

Imports point features from a CSV text table using selected X and Y field indices.

Outputs

  • return: Vector

WbEnvironment usage

points = wbe.conversion.vector_table_io.csv_points_to_vector(
	input_file="samples.csv",
	x_field_num=2,
	y_field_num=3,
	epsg=4326,
	output_path="samples_points.geojson",
)

Parameters

NameTypeRequiredDescription
input_filestringyesString parameter for input_file.
x_field_numintnoNumeric parameter for x_field_num.
y_field_numintnoNumeric parameter for y_field_num.
epsgint |NonenoNumeric parameter for epsg.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

export_table_to_csv

Exports a vector layer's attribute table to CSV format.

Outputs

  • return: str

WbEnvironment usage

csv_path = wbe.conversion.vector_table_io.export_table_to_csv(parcels, output_csv_file="parcels_table.csv", headers=True)

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
output_csv_filestring |NonenoString parameter for output_csv_file.
headersboolnoBoolean option for headers.
callbackfunctionnoOptional progress callback receiving JSON events.

fix_dangling_arcs

Fixes undershot and overshot dangling arcs in a line network by snapping line endpoints that fall within a distance threshold.

Outputs

  • return: Vector

WbEnvironment usage

fixed_lines = wbe.conversion.geometry_topology.fix_dangling_arcs(lines, snap_dist=5.0, output_path="lines_fixed.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
snap_distfloatyesNumeric parameter for snap_dist.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

new_raster_from_base_raster

Creates a new raster with the same rows, columns, extent, cell size, and CRS as a base raster.

Outputs

  • return: Raster

WbEnvironment usage

blank = wbe.conversion.raster_vector_conversion.new_raster_from_base_raster(base_raster, out_val=0.0, data_type="float", output_path="blank.tif")

Parameters:

  • base: Base raster.
  • out_val: Optional fill value. Defaults to the base raster nodata value.
  • data_type: One of float, double, or integer.
  • output_path: Optional output path.

Parameters

NameTypeRequiredDescription
baseRasteryesInput raster for base.
out_valfloat |NonenoNumeric parameter for out_val.
data_typestringnoString parameter for data_type.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

new_raster_from_base_vector

Creates a new raster using the extent and CRS from a base vector layer and a required cell_size.

Outputs

  • return: Raster

WbEnvironment usage

blank = wbe.conversion.raster_vector_conversion.new_raster_from_base_vector(
	base=study_area,
	cell_size=10.0,
	out_val=0.0,
	data_type="float",
	output_path="blank_from_vector.tif",
)

Parameters:

  • base: Base vector defining extent.
  • cell_size: Output cell size (> 0).
  • out_val: Optional fill value. Defaults to nodata (-32768).
  • data_type: One of float, double, or integer.
  • output_path: Optional output path.

Parameters

NameTypeRequiredDescription
baseVectoryesInput vector layer for base.
cell_sizefloatyesNumeric parameter for cell_size.
out_valfloat |NonenoNumeric parameter for out_val.
data_typeLiteral["integer", "float", "double"]noNumeric parameter for data_type.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

polygons_to_lines

Converts polygon or multipolygon features into boundary linework.

Outputs

  • return: Vector

WbEnvironment usage

lines = wbe.conversion.geometry_topology.polygons_to_lines(polygons, output_path="boundaries.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

lines_to_polygons

Converts polyline features into polygon features. The first part of a multipart line becomes the exterior ring and later parts become holes.

Outputs

  • return: Vector

WbEnvironment usage

polygons = wbe.conversion.geometry_topology.lines_to_polygons(lines, output_path="polygons.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

join_tables

Joins attributes from one vector table onto another by matching key fields.

Outputs

  • return: Vector

WbEnvironment usage

joined = wbe.conversion.vector_table_io.join_tables(
	primary_vector=countries,
	primary_key_field="COUNTRY",
	foreign_vector=stats,
	foreign_key_field="COUNTRY",
	import_field="POPULATION",
	output_path="countries_joined.gpkg",
)

Parameters

NameTypeRequiredDescription
primary_vectorVectoryesInput vector layer for primary_vector.
primary_key_fieldstringyesString parameter for primary_key_field.
foreign_vectorVectoryesInput vector layer for foreign_vector.
foreign_key_fieldstringyesString parameter for foreign_key_field.
import_fieldstring |NonenoString parameter for import_field.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

merge_table_with_csv

Merges attributes from a CSV table into a vector attribute table using key fields.

Outputs

  • return: Vector

WbEnvironment usage

merged = wbe.conversion.vector_table_io.merge_table_with_csv(
	primary_vector=countries,
	primary_key_field="COUNTRY",
	foreign_csv_filename="country_stats.csv",
	foreign_key_field="COUNTRY",
	import_field="GDP",
	output_path="countries_merged.gpkg",
)

Parameters

NameTypeRequiredDescription
primary_vectorVectoryesInput vector layer for primary_vector.
primary_key_fieldstringyesString parameter for primary_key_field.
foreign_csv_filenamestringyesString parameter for foreign_csv_filename.
foreign_key_fieldstringyesString parameter for foreign_key_field.
import_fieldstring |NonenoString parameter for import_field.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

modify_nodata_value

Changes the raster nodata value and rewrites any existing nodata cells to the new value.

Outputs

  • return: Raster

WbEnvironment usage

updated = wbe.conversion.raster_vector_conversion.modify_nodata_value(input_raster, new_value=-9999.0, output_path="nodata_modified.tif")

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
new_valuefloatnoNumeric parameter for new_value.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

Builds a text report describing TIFF/GeoTIFF tags and key metadata. If the input is not a TIFF-family raster, the tool returns a warning message instead of a hard failure.

Outputs

  • return: str

WbEnvironment usage

report = wbe.raster.print_geotiff_tags(input_raster)

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
callbackfunctionnoOptional progress callback receiving JSON events.

raster_to_vector_points

Converts each non-zero, non-nodata cell in a single-band raster into a point feature located at the cell centre, with FID and VALUE attributes.

Outputs

  • return: Vector

WbEnvironment usage

points = wbe.conversion.raster_vector_conversion.raster_to_vector_points(classified_raster, output_path="classified_points.geojson")

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

raster_to_vector_lines

Converts non-zero, non-nodata cells in a single-band raster to polyline features. Output attributes include FID and the raster VALUE represented by each traced line.

Outputs

  • return: Vector

WbEnvironment usage

lines = wbe.conversion.raster_vector_conversion.raster_to_vector_lines(line_raster, output_path="line_features.geojson")

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

raster_to_vector_polygons

Converts contiguous non-zero, non-nodata raster regions into polygon vector features. Output attributes include FID and source raster VALUE for each polygonized region.

Outputs

  • return: Vector

WbEnvironment usage

polys = wbe.conversion.raster_vector_conversion.raster_to_vector_polygons(classified_raster, output_path="regions.geojson")

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

reinitialize_attribute_table

Creates a copy of a vector layer whose attribute table contains only a regenerated FID field.

Outputs

  • return: Vector

WbEnvironment usage

fid_only = wbe.conversion.vector_table_io.reinitialize_attribute_table(input_vector, output_path="fid_only.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

remove_polygon_holes

Removes all interior rings from polygon and multipolygon features while preserving attributes.

Outputs

  • return: Vector

WbEnvironment usage

solid_polygons = wbe.conversion.geometry_topology.remove_polygon_holes(polygons, output_path="polygons_no_holes.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

remove_raster_polygon_holes

Removes enclosed background holes from raster polygons, where background is defined as 0 or nodata. Holes connected to raster edges are preserved. Optionally limits removals to holes below a threshold_size and can use 8-neighbour connectedness with use_diagonals=True.

Outputs

  • return: Raster

WbEnvironment usage

filled = wbe.conversion.raster_vector_conversion.remove_raster_polygon_holes(
	input=classified,
	threshold_size=500,
	use_diagonals=True,
	output_path="classified_no_holes.tif",
)

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
threshold_sizeint |NonenoNumeric parameter for threshold_size.
use_diagonalsboolnoBoolean option for use_diagonals.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

set_nodata_value

Sets a new nodata background value for a raster and maps existing nodata cells to that value. If a negative value is used with an unsigned input, the output raster type is promoted to a compatible signed integer type.

Outputs

  • return: Raster

WbEnvironment usage

updated = wbe.conversion.raster_vector_conversion.set_nodata_value(input_raster, back_value=-9999.0, output_path="nodata_set.tif")

Parameters

NameTypeRequiredDescription
inputRasteryesInput raster for input.
back_valuefloatnoNumeric parameter for back_value.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

merge_vectors

Combines two or more input vectors of the same geometry type into a single output vector. The output attribute table contains FID, PARENT (source layer filename stem), PARENT_FID, and any attribute fields that are common to all input layers (same name and field type).

Outputs

  • return: Vector

WbEnvironment usage

merged = wbe.conversion.vector_table_io.merge_vectors([roads_a, roads_b, roads_c], output_path="roads_merged.geojson")

Parameters

NameTypeRequiredDescription
inputsVectoryesInput vector layer for inputs.
output_pathstringyesOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

multipart_to_singlepart

Splits multi-part features (MultiPoint, MultiLineString, MultiPolygon) into individual single-part features. Each sub-geometry becomes a new output feature inheriting the source feature's attributes. For polygon inputs, setting exclude_holes=True keeps interior rings attached to their enclosing exterior ring rather than splitting them into independent features.

Outputs

  • return: Vector

WbEnvironment usage

# Split all parts (holes become independent polygons)
single = wbe.conversion.geometry_topology.multipart_to_singlepart(parcels, output_path="parcels_single.geojson")

# Keep holes attached to their enclosing polygon
single = wbe.conversion.geometry_topology.multipart_to_singlepart(parcels, exclude_holes=True, output_path="parcels_single.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
exclude_holesboolnoBoolean option for exclude_holes.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

singlepart_to_multipart

Merges single-part features into multi-part features. When field is provided, features sharing the same value for that field are grouped into one multi-part geometry. When field is omitted, all features in the layer are merged into a single geometry. Output geometry type is promoted to the corresponding multi-part type (Point → MultiPoint; LineString → MultiLineString; Polygon → MultiPolygon).

Outputs

  • return: Vector

WbEnvironment usage

# Group parcels belonging to the same owner
multi = wbe.conversion.geometry_topology.singlepart_to_multipart(parcels, field="OWNER_ID", output_path="parcels_multi.geojson")

# Merge all features into one geometry
multi = wbe.conversion.geometry_topology.singlepart_to_multipart(parcels, output_path="all_merged.geojson")

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
fieldstring |NonenoString parameter for field.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

vector_points_to_raster

Rasterizes point or multipoint vectors to a grid using a selected assignment operation (last, first, min, max, sum, num, mean). Grid definition can come from a base_raster or from cell_size plus vector extent.

Outputs

  • return: Raster

WbEnvironment usage

# Use a base raster grid and compute per-cell mean
out = wbe.conversion.raster_vector_conversion.vector_points_to_raster(
	input=points,
	field_name="VALUE",
	assign_op="mean",
	base_raster=base,
	output_path="points_mean.tif",
)

# Build output grid from point extent and cell size
out2 = wbe.conversion.raster_vector_conversion.vector_points_to_raster(
	input=points,
	field_name="VALUE",
	assign_op="max",
	cell_size=5.0,
	zero_background=True,
	output_path="points_max.tif",
)

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
field_namestring |NonenoString parameter for field_name.
assign_opstringnoString parameter for assign_op.
zero_backgroundboolnoBoolean option for zero_background.
cell_sizefloatnoNumeric parameter for cell_size.
base_rasterRasternoInput raster for base_raster.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

vector_lines_to_raster

Rasterizes line or polygon-boundary geometries to a raster grid. Burn values come from an optional numeric field_name or from feature IDs when no field is supplied. Grid geometry can be inherited from a base_raster or created from input extent and cell_size.

Outputs

  • return: Raster

WbEnvironment usage

# Burn road class values onto an existing base raster grid
roads_r = wbe.conversion.raster_vector_conversion.vector_lines_to_raster(
	input=roads,
	field_name="CLASS_ID",
	base_raster=base,
	output_path="roads_burned.tif",
)

# Build output grid from vector extent
lines_r = wbe.conversion.raster_vector_conversion.vector_lines_to_raster(
	input=lines,
	cell_size=10.0,
	zero_background=True,
	output_path="lines_extent_grid.tif",
)

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
field_namestring |NonenoString parameter for field_name.
zero_backgroundboolnoBoolean option for zero_background.
cell_sizefloatnoNumeric parameter for cell_size.
base_rasterRasternoInput raster for base_raster.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.

vector_polygons_to_raster

Rasterizes polygon features using an optional numeric attribute field; otherwise burns feature IDs.

Outputs

  • return: Raster

WbEnvironment usage

poly_raster = wbe.conversion.raster_vector_conversion.vector_polygons_to_raster(
	input=landcover_polys,
	field_name="CLASS_ID",
	zero_background=True,
	base_raster=base,
	output_path="landcover.tif",
)

Parameters

NameTypeRequiredDescription
inputVectoryesInput vector layer for input.
field_namestring |NonenoString parameter for field_name.
zero_backgroundboolnoBoolean option for zero_background.
cell_sizefloatnoNumeric parameter for cell_size.
base_rasterRasternoInput raster for base_raster.
outputstringnoOptional output path. If omitted, the result is returned in memory when supported.
callbackfunctionnoOptional progress callback receiving JSON events.