1
0
mirror of https://github.com/qgis/QGIS.git synced 2025-03-12 00:02:25 -04:00

128 Commits

Author SHA1 Message Date
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 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 ()
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 , fixes 
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 
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 )
2019-01-25 09:57:31 +11:00
Alexander Bruy
c6540a6276 [processing] fix description files for SVM SAGA algs (fix ) 2019-01-24 09:31:18 +11:00
Alexander Bruy
34ec183354 [processing] split v.surf.rst algorithm into two (fix )
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  (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 
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
Nyall Dawson
ba17b130f8 Move forceRHR to QgsGeometry, avoid duplicate code 2018-11-09 19:06:48 +10:00
Etienne Trimaille
6e16651d96 [FEATURE] explode hstore algorithm () 2018-11-09 13:00:29 +07:00
Nyall Dawson
4dd3e211e2 Unit tests for reomve duplicates by attribute 2018-11-01 21:47:28 +10:00
Nyall Dawson
17447e4b5c [FEATURE][browser] Restore preview functionality from old 2.x standalone
browser into inbuilt browser dock panel layer properties widget
2018-11-01 15:55:57 +10:00
Nyall Dawson
41c31b44ba Fix build warning 2018-11-01 05:56:38 +10:00
Matthias Kuhn
19276e2b03
Add merge vector layer test for gpkg 2018-10-31 10:27:54 +01:00
Nyall Dawson
bef8d6e072 Update expected test results 2018-10-16 16:52:00 +10:00
Nyall Dawson
308d7136b4 [processing] More fixes to convertToCompatibleFormat, lots of unit
tests

Fixes 
2018-09-28 14:25:38 +10:00
Nyall Dawson
737ab3069a [processing][gdal] Correctly handle geopackage paths with layername argument
Fixes 
2018-09-28 14:25:38 +10:00
Nyall Dawson
517b50c66d Capitalization 2018-09-25 22:01:39 +10:00
Luigi Pirelli
8b07b4ed9e
Merge pull request from rudivs/kneighbour
[feature] Adapted k-neighbour concave hull plugin as QGIS 3 algorithm
2018-09-14 15:32:46 +02:00
Rudi von Staden
fd728c0854 Improve test coverage for k-nearest neighbor concave hull 2018-09-14 11:44:53 +02:00
Martin Dobias
1af35b294e Moved new snapping alg as another mode of "Snap geometries" processing alg 2018-09-13 16:24:37 +02:00
Martin Dobias
4a0669714b [FEATURE] Snap geometries algorithm
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.
2018-09-13 11:46:29 +02:00
Luigi Pirelli
580ecafa32
Merge pull request from luipir/rastercalculator_model_fix
[processing] Rebirth RasterCalculator in Modeler. Fixes 
2018-09-04 18:13:04 +02:00
Andrea Giudiceandrea
e56da0e58a
Add test for Join by location (equals)
Adds a test for "Join attributes by location" processing algorithm 'equals' predicate
2018-08-30 09:59:26 +02:00
Luigi Pirelli
6aa36166e4 adapted tests to new variables added in expressionContext 2018-08-28 17:06:10 +02:00
Nyall Dawson
c6a91dab09 [FEATURE] Use native interpolate point method instead of GEOS method
Because:
- Exactly follows curves and doesn't require segmentizing input geometry
- Also interpolates z/m values if they are present in input geometry
- Is faster
2018-08-15 14:01:59 +10:00
Nyall Dawson
8365335fd3 [FEATURE][processing] Interpolate point on line algorithm
This algorithm creates a point geometry interpolated at a
set distance along line (or polygon boundary) geometries.
2018-08-15 14:01:59 +10:00
Nyall Dawson
7ef5631d6b [FEATURE][processing] Line substring algorithm
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.
2018-08-15 14:01:59 +10:00
Mathieu Pellerin
51b63e6b46
[vector file writer] use field type to save attribute values
(relying on attribute value type isn't reliable under certain
scenarios, including memory layers created through a processing
python algorithm)
2018-08-06 11:07:56 +07:00
Nyall Dawson
4acef1efbf [processing] Fix crash in extract by attribute when field name does not exist
Fixes 
2018-08-04 05:57:46 +10:00
Nyall Dawson
df05369dbf Hack is still required, but maybe using non-deprecated api will help?
Sometimes qt is great, sometimes I want to punch it in it's silly
little cute face
2018-07-31 05:12:59 +10:00
Nyall Dawson
837206892a Optimise drape algorithms, skip vertex iteration for geometries which don't intersect raster 2018-07-30 12:11:17 +10:00
Nyall Dawson
d5ce6dcb1d [FEATURE][processing] native drape features to z/m algorithms
Sets vertex z/m values to values sampled from a raster band.

Values can optionally be scaled using a (data definable) scale value.
2018-07-30 12:11:17 +10:00
Nyall Dawson
28c4a6cf59 [processing][grass] Fix v.net.* output types, add tests
Fixes 
2018-07-25 19:50:48 +10:00