154 Commits

Author SHA1 Message Date
Sandro Santilli
8c18fa28b6 Drop gpkg_metadata_reference_column_name_update trigger generated by GDAL < 2.4.0
Presence of this trigger results in QGIS dropping it whenever the file
is opened in read-write mode (as it happens with vector layer is
created from it)

See https://github.com/qgis/QGIS/issues/48937#issuecomment-1152726973
2022-06-11 01:35:14 +02:00
Alexander Bruy
34a20f8b2d add tests 2022-05-02 15:55:01 +10:00
Nyall Dawson
290154744b [feature][processing] Add "Keep disjoint features separate" option
for dissolve algorithm

If enabled, this option will cause disjoint features and parts to
be exported as separate features (instead of as parts of a
single multipart feature).
2022-03-17 18:12:27 +10:00
Germán Carrillo
ec23963359 Add tests for join attributes table with name conflicts (fix for #47650) 2022-03-09 11:07:01 +10:00
Clemens Raffler
baf50af3cd add more testcases with differing layer CRSs 2021-10-25 09:30:34 +10:00
Clemens Raffler
0ce9fc505c add point testdata 2021-10-25 09:30:34 +10:00
Nyall Dawson
cf40573d2c [feature][processing] Add new "Select within distance" and
"Extract within distance" algorithms

These algorithms allow users to select or extract features from one
layer which are within a certain distance of features from another
reference layer.

The distance checking is heavily optimised, using spatial indices
to restrict the number of features retrieved, and also automatically
handing the check off to the database server for postgis layers.

The distance parameter can also be data-defined.

Sponsored by QTIBIA Engineering
2021-08-06 17:37:09 +10:00
Alexander Bruy
8541162003 restore moved test data 2021-06-21 07:17:42 +03:00
Alexander Bruy
fba25dce83 tests for SAGA provider 2021-06-21 07:17:36 +03:00
Alexander Bruy
a0945cfdfe tests for GRASS provider 2021-06-21 07:17:36 +03:00
Alexander Bruy
82ad2051e6 fix file permissions
remove duplicated short help file
2021-06-21 07:17:36 +03:00
Nyall Dawson
e70cf8da27 Fix zonal statistics does not correctly handle coordinate transforms
Fixes #26858
2021-06-11 06:16:53 +10:00
nirvn
8fe4d3e793 [processing] Allow merging layers with mixed attribute type 2020-08-11 15:03:38 +07:00
Alessandro Pasotti
672d6ec5b2 Fix test: cast to float 2020-06-20 04:30:18 +10:00
Alessandro Pasotti
954ab15276
Merge pull request #37074 from alexbruy/fix-servicearea
fix saving attributes in the service area algorithm
2020-06-10 09:26:59 +02:00
nirvn
5385ae64d4 [processing] Make gdaladdo optional parameters truly optional 2020-06-10 13:13:58 +07:00
Alexander Bruy
18195e2ad0 fix saving attributes in the service area algorithm 2020-06-10 07:44:52 +03:00
Germap
5623229f8c
[processing] Set distanceArea CRS properly in SumLineLengths algorithm
Fix #36135
2020-05-04 06:26:56 +10:00
Marco Hugentobler
4cd464059c Revert test gpkg files 2020-03-30 08:26:16 +02:00
Marco Hugentobler
934e30f30e Adapt expected test output 2020-03-27 14:38:32 +01:00
gacarrillor
f6ee3e81ce Add 5 tests to remove NULL geometries alg with the remove EMPTY geometries option 2020-03-15 17:37:51 +10:00
gacarrillor
8d2f75da0f Test for Remove Duplicate Vertices alg. (Polygons with duplicates in several holes) 2020-03-09 22:22:37 -05:00
gacarrillor
e41930d1b7 Avoid a boolean variable in GeometryCollection.removeDuplicateNodes(); fix tests 2020-02-28 21:38:42 -05:00
gacarrillor
403fe33bfa Test for Remove Duplicate Vertices alg. (geometry collection) 2020-02-26 23:55:13 -05:00
Nyall Dawson
771fc3ff60 [FEATURE][processing] Add new mode to "Join Attributes by Location" algorithm
to take attributes from matching feature with largest area of overlap only

This allows for easy polygon->polygon joins, where you expect there to be
only a single matching feature and don't want to include features which
are just touching or have just tiny sliver polygon overlaps.

Sponsored by SMEC/SJ
2020-01-14 21:28:30 +13:00
Nyall Dawson
64b52bf31b Fix handling of interpolation layers with differing input coordinate reference systems
Fixes #27048
2019-11-05 16:57:33 +10:00
Nyall Dawson
c409025409 [FEATURE][processing] New algorithm "Split features by character"
This algorithm splits features into multiple output features by
splitting a field's value with a specified character.

For instance, if a layer contains features with multiple comma
separated values contained in a single field, this algorithm can
be used to split these values up across multiple output features.

Geometries and other attributes remain unchanged in the output.

Optionally, the separator string can be a regular expression for
added flexibility.

Designed for use in models which need to process input files
with multiple concatenated values in a single attribute, e.g.
geocoding a table with "address1,address2,address3" format strings
2019-09-06 11:09:37 +10:00
Alexander Bruy
f16f7f765e reorganize gdal provider tests
Now GDAL algorithms test are splitted into parts: general tests, raster
algorithms and vector algorithms. This makes testing a bit faster and
easier, as there is no need to run not related tests.
2019-06-25 09:59:50 +03:00
Matthias Kuhn
0640e51e48
Merge pull request #10005 from ghtmtt/processing_climb
[Processing] climb along line algorithm
2019-06-21 16:13:15 +02:00
Mathieu Pellerin
a888986567
[needs-docs][processing] Avoid field collision via optional prefix in overlay algorithms (#10092)
Makes for a more predictable collision avoidance, which
can be neccessary for some models.
2019-05-24 19:00:28 +07:00
matteo
4ca3935fbd [feature[ Processing Climb along lines algorithm 2019-05-15 08:18:45 +02:00
Nyall Dawson
2ec429cb89 [FEATURE][processing] New algorithm "Overlap analysis"
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.
2019-05-14 06:13:10 +10:00
nirvn
9ce1093bce [FEATURE][ogr] Add string list field type support 2019-04-10 08:06:12 +07:00
Nyall Dawson
95af4d4a45 [FEATURE] New Processing algorithm "Join attributes by nearest"
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.
2019-04-03 02:31:03 +10:00
Nyall Dawson
7bf9279a53 [processing] Fix invalid reprojection in join by location (summary) 2019-04-02 06:17:56 +10:00
Nyall Dawson
b66b944535 [FEATURE][processing] New Raster Boolean logical OR/AND algorithms
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.
2019-03-11 07:45:44 +10:00
Nyall Dawson
4e04d02293 By default, validity check should treat ring self intersections as invalid
We use the OGC definition of validity to ensure consistent results
with PostGIS, GDAL, etc

Fixes #16418, fixes #21336
2019-02-27 06:05:26 +10:00
Matthias Kuhn
7f30680bed
Add test files for dissolve consecutive lines 2019-02-25 08:49:05 +01:00
Nyall Dawson
4f8e2317d7 [processing][saga] Fix definition of Multiple regression points/grids alg
Fixes #21146
2019-02-01 21:06:16 +11:00
Alexander Bruy
dbe2cb73ad [processing] add test for v.net.distance algorithm 2019-01-31 15:54:08 +02:00
Alexander Bruy
32f6034be7 [processing][needs-docs] force multipart output from GDAL-based dissolve
algorithm (fix #20025)
2019-01-25 09:57:31 +11:00
Alexander Bruy
c6540a6276 [processing] fix description files for SVM SAGA algs (fix #20796) 2019-01-24 09:31:18 +11:00
Alexander Bruy
34ec183354 [processing] split v.surf.rst algorithm into two (fix #19472)
This algorithm cannot output cross-validation results and topographic
parameters simultaneously, hence two tools needed. Thanks to Pedro Venâncio
for finding this and proposing a fix.
2019-01-24 06:45:23 +11:00
Nyall Dawson
195d98f43a [needs-docs][processing] Port SAGA raster surface volume to native QGIS alg
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)
2019-01-21 12:33:54 +11:00
Nyall Dawson
f89d061ba0 [FEATURE][processing] Add geodesic mode for "Join by Lines (Hub lines)" algorithm
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.
2019-01-17 03:39:20 +11:00
Nyall Dawson
629de0c651 Fix some corner cases 2019-01-12 05:31:00 +10:00
Nyall Dawson
2a774d6dac [FEATURE][processing] New algorithm "Geodesic line split at antimeridian"
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.
2019-01-12 05:31:00 +10:00
Nyall Dawson
5586352a13 [FEATURE][processing] New raster zonal stats algorithm
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."
2019-01-04 05:01:16 +10:00
Nyall Dawson
455e04ea66 [processing][SAGA] Fix definition of Patching algorithm
And add unit test

Fixes #20698
2018-12-04 10:36:38 +10:00
nirvn
cdda581819 [processing] Add test & adjust handling of negative distance value
for multi ring (constant) algorithm
2018-11-28 22:47:39 +07:00