This algorithm calculates the area and percentage cover
by which features from an input layer are overlapped by
features from a selection of overlay layers.
New attributes are added to the output layer reporting
the total area of overlap and percentage of the input
feature overlapped by each of the selected overlay layers.
This is quite a common GIS task request, yet is full
of traps for inexperienced users, and the amount of
manual data work usually done by users to calculate
these figures can often lead to mistakes and inaccurate
results. It's nice to have a robust, fast, inbuilt
algorithm which allows this task to be done in a
single step without risk of human error.
There's two motivations for this:
- the existing one was getting massive and took ages to run, which was
a pain when developing. Smaller batches allow just a subset of test to
be run which is much faster.
- There's a random segfault on test exit which occurs on Travis. Rather
then disabling these absolutely critical tests altogether, I'm using
this as a method of bisecting exactly which alg is causing this.
- for algorithms that produce directory output, it is possible to test
that directory contents are exactly the same (recursively)
- added possibility to have a project file loaded before an algorithm is run
- documented the new additions (+ few existing ones)
K-nearest neighbour joins from the Processing toolbox!
This algorithm takes an input vector layer and creates a new
vector layer that is an with additional attributes in its attribute table
The additional attributes and their values are taken from a second
vector layer, where features are joined by finding the closest features
from each layer.
By default only the single nearest feature is joined, but optionally
the join can use the n-nearest neighboring features instead.
If a maximum distance is specified, then only features which are
closer than this distance will be matched.
Adds X and Y (or latitude/longitude) fields to a point layer.
The X/Y fields can be calculated in a different CRS to the
layer (e.g. creating latitude/longitude fields for a layer in
a project CRS).
Sponsored by SMEC/SJ
Even though not all errors are caught by these new tests, it could
expose if otb is broken or if processing api is changed to adopt
optional status of parameters at run-time.
`alg.processAlgorithm()` is running and failing correctly.
But `parameter.checkValueIsAcceptable()` and `alg.checkParameterValues()`
aren't working as expected.
These algorithms calculate the boolean OR or AND for a set of input
rasters. For AND, if all of the input rasters have a non-zero value
for a pixel, that pixel will be set to 1 in the output raster, otherwise
it will be set to 0. For OR, if ANY of the input rasters have a non-zero
value for a pixel, that pixel will be set to 1 in the output raster,
else 0.
A reference layer parameter specifies an existing raster layer to use
as a reference when creating the output raster. The output raster will
have the same extent, CRS, and pixel dimensions as this layer
By default, a nodata pixel in ANY of the input layers will result in
a nodata pixel in the output raster. If the 'Treat nodata values
as false' option is checked, then nodata inputs will be treated the
same as a 0 input value.
Makes for much simpler raster boolean logic calculation without
the complexity of using the raster calculator (and that's not
always possible to do anyway, e.g. when ANY of the input rasters
has a nodata pixel). It's also scalable dynamic to any number of
input rasters (unlike raster calc), so is more flexible when
used within models.
causing rings errors
By default the algorithm now uses the strict OGC definition of polygon validity, where
a polygon is marked as invalid if a self-intersecting ring causes an interior hole.
If the "Ignore ring self intersections" option is checked, then this rule will be
ignored and a more lenient validity check will be performed.
Refs #16418, refs #21336
This can easily go into GuiTests.py but we tend to keep it out due to
usage of create_from_metadata(). All widget in GuiTests uses
create_from_class() which will not work for this special widget