The SAGA version of this algorithm is of limited use in QGIS, because the
volume calculated is embedded only in the SAGA terminal output. This prevents
it being saved to a file, or reused within a model as an input to a later
model step.
It's also very user-unfriendly, because users must know to manually scan
the algorithm log to find the SAGA output.
Given that the maths here is trivial, this commit ports the algorithm across
to be a native QGIS c++ algorithm. The algorithm duplicates the SAGA alg
1:1, but outputs the volume (and area) to either a HTML report, or a vector
table. Additionally, the outputs are exported as numeric outputs from the
algorithm, allowing them to be re-used within models.
(It's also considerably faster, because it avoids the forced conversion
to SAGA raster format)
Fixes#8607 (properly, even though that report is closed)
This allows optional creation of geodesic lines, which represent the
shortest distance between the points based on the ellipsoid.
When geodesic mode is used, it is possible to split the created lines
at the antimeridian (±180 degrees longitude), which can improve
rendering of the lines. Additionally, the distance between vertices
can be specified. A smaller distance results in a denser, more accurate
line.
Ports the similar algorithm from the shape tools plugin to c++, and utilises
built in QgsDistanceArea ellipsoidal calculations to split the lines.
This algorithm splits a line into multiple geodesic segments, whenever the
line crosses the antimeridian (±180 degrees longitude)
Splitting at the antimeridian helps the visual display of the lines in some
projections. The returned geometry will always be a multi-part geometry.
Whenever line segments in the input geometry cross the antimeridian,
they will be split into two segments, with the latitude of the breakpoint
being determined using a geodesic line connecting the points either side
of this segment. The current project ellipsoid setting will be used when
calculating this breakpoint.
If the input geometry contains M or Z values, these will be linearly
interpolated for the new vertices created at the antimeridian.
Supports in-place edit mode also.
These algorithms allow users to convert z or m values present in feature
geometries to attributes in the layer. By default the z/m value from the
first vertex in the feature is extracted, but optionally statistics
can be calculated on ALL the z/m values from the geometry (e.g. calculating
mean/min/max/sum/etc of z values).
Like the vector zonal stats algorithm, but this one works with
the zones defined in another raster.
Iterates over the input rasters in blocks to be nice and
memory efficient.
From the algorithm help:
"This algorithm calculates statistics for a raster layer's
values, categorized by zones defined in another raster layer.
If the reference layer parameter is set to "Input layer",
then zones are determined by sampling the zone raster layer
value at the centroid of each pixel from the source raster
layer.
If the reference layer parameter is set to "Zones layer",
then the input raster layer will be sampled at the centroid
of each pixel from the zones raster layer.
If either the source raster layer or the zone raster layer
value is NODATA for a pixel, that pixel's value will be
skipped and not including in the calculated statistics."
This algorithm takes an input (multi)line (or curve) layer, and splits
each feature into multiple parts such that no part is longer then
the specified maximum length.
Supports data-defined maximum length property, and edit in place operation.
Credit to @NathanW2 for the inspiration!
This algorithm forces polygon geometries to respect the Right-Hand-Rule,
in which the area that is bounded by a polygon is to the right of the
boundary. In particular, the exterior ring is oriented in a clockwise
direction and the interior rings in a counter-clockwise direction.
Makes sure that any two vertices of the vector layer are at least at distance given by the threshold value.
The algorithm moves nearby vertices to one location and adds vertices to segments that are passing around other
vertices within the threshold. It does not remove any vertices. Also, it does not modify geometries unless
needed (it does not snap coordinates to a grid).
This algorithm comes handy when doing vector overlay operations such as intersection, union or difference
to prevent possible topological errors caused by numerical errors if coordinates are very close to each other.
After running the algorithm some previously valid geometries may become invalid and therefore it may be useful
to run Fix geometries algorithm afterwards.
and reports counts of matched/unmatched features
This gives an explicit warning to users when features were not matched,
and optionally allows them to save non-matching features to a layer.
This algorithm returns the portion of a line (or curve) which falls
between the specified start and end distances (measured from the
beginning of the line).
Z and M values are linearly interpolated from existing values.
Refactor the existing "raster pixels to polygons" algorithm and
create a new "pixels to points" algorithm, which creates a point
feature at the center of every pixel. nodata pixels are skipped.
This algorithm creates copies of line features in a layer, by
creating multiple parallel versions of each feature. Each copy is offset
by a preset distance.
This algorithm creates copies of features in a layer, by
creating multiple offset versions of the feature. Each copy is displaced
by a preset amount in the x/y/z/m axis.
Adds two new algorithms, for filtering line/polygon vertices by their
M or Z values. A minimum and maximum M/Z value can be entered, and
if the vertices fall outside these ranges they will be discarded
from the output geometry.
Both min and max filter value can also be data defined, so can
vary per feature.