97 Commits

Author SHA1 Message Date
Nyall Dawson
651c507180 [processing] Extend api for retrieving a layer in a compatible format
A few releases ago a bug fix was implemented which forced conversions
of multi-layer sources. This was a valid bug fix, but the consequence
was that any algorithm using this api with a source file containing
multiple layers (e.g. gpkg) performed a complete copy of the target
layer to a new file, severely impacting performance.

This commit adds new API to retrieve a compatible layer path in the
case when an algorithm CAN correctly handle specific target layer names.
In this case, the forced copy of the source layer is avoided when
using multi-layer inputs like geopackage.
2019-09-26 09:27:46 +10:00
Nyall Dawson
cfcf580b61 [processing][needs-docs] Resurrect setting for default raster/vector
output format

This setting is still used and required in some circumstances, e.g.
it is used as the default selection in outputs file pickers when
the previously used format is not valid.
2019-09-24 16:50:22 +10:00
Alexander Bruy
993c6e7b5f [processing] export vector layers which use VSI mechanism (fix #29001) 2019-09-16 11:56:28 +10:00
Nyall Dawson
13be186b90 Use QgsMapLayer::providerType() instead of dataProvider()->name(),
as it's more robust in handling invalid layers
2019-07-10 08:10:49 +10:00
Nyall Dawson
5bc50ff820 [processing] Fix iterating mode when output is a temporary layer
Credit to @volaya for this fix!

Fixes #29340
2019-06-13 02:43:06 +10: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
Alessandro Pasotti
7b6f9c0dbc Restore default ctor for options and layer 2019-04-17 10:06:41 +10:00
Nyall Dawson
b6bc1ee2d4 Tweak QgsProcessingUtils::combineLayerExtents for future proofing, remove deprecated usage 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
f8dfdc4aa0 Deprecate method without transformContext 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
e930bee9e2 Add mandatory options to QgsVectorLayer ctor
... and deprecate the rest.

In QGIS 4 we'll have to get rid of the deprecated default ctor and
create a new one which takes no arguments.
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
5f3dc50ccc Remove deprecated QgsCoordinateTransform ctor ...
... and add a getter for coordinateTransform to QgsMapLayer

The reason is that I think we should reduce the dataProvider API
usage and rely on the higher level QgsMapLayer API whenever it
is possible, QgsMapLayer checks for data provider validity
and returns a default constructed QgsCoordinateTransform instead
of crashing.
2019-04-17 10:06:41 +10:00
Nyall Dawson
e5a4716018 Remove outdated comment 2019-04-01 08:52:10 +10:00
Nyall Dawson
20ec29a496 [processing] Refine check for usable layers (#9640)
- allow WMS layers and other non-GDAL raster layers. This will work
fine for native algorithms, likely not work for other providers. They
will need to be adapted to throw errors when incompatible raster
layer providers are used

- invalid layers are not permitted (e.g. those with missing data
sources)
2019-03-27 22:29:53 -05:00
Denis Rouzaud
631c7016db
scope enum for QgsProcessing::LayerHint (#9639) 2019-03-27 17:23:36 -05:00
Denis Rouzaud
375a0aa253 create scope based enum for QgsMapLayer::LayerType >> QgsMapLayerType
the enum is moved out of the class
this will allow forward declaration more easily since the enum is not nested in the class
2019-03-24 21:40:33 -05:00
Nyall Dawson
a38e9e66fc [processing] Fix layerName= suffix is incorrectly passed to SAGA algorithms
Fixes #21569
2019-03-18 18:24:02 +10:00
Víctor Olaya
13bff9620c [processing] do not allow using unsupported file formats
Show warning message if user selects incompatible output file format

fixes #21089
2019-02-23 05:24:56 +10:00
Nyall Dawson
37774f9aa9 [processing] Add util to convert QVariant value to Python literal 2019-02-01 17:54:28 +11:00
Peter Petrik
e71660215c [processing] add QgsProcessingParameterMeshLayer parameter 2018-12-17 11:50:53 +01:00
Matthias Kuhn
229c617785
Ignore FID field when merging vector layers to geopackage 2018-10-31 10:27:54 +01:00
Nyall Dawson
308d7136b4 [processing] More fixes to convertToCompatibleFormat, lots of unit
tests

Fixes #19938
2018-09-28 14:25:38 +10:00
Nyall Dawson
737ab3069a [processing][gdal] Correctly handle geopackage paths with layername argument
Fixes #19938
2018-09-28 14:25:38 +10:00
Nyall Dawson
e2082a0935 [processing] Fix modeler help/description generation, allow setting
of model short description text

Fixes #18767
2018-09-26 04:26:49 +10:00
Nyall Dawson
17567ee5aa [processing] Never run feature validity check for point layers
Saves a few cycles. The feature validity checks have no meaning
for point layers.

Refs #19919
2018-09-25 05:21:12 +10:00
Matthias Kuhn
17279a42e2 Only include qgsvectorlayer.h where required 2018-09-05 08:54:11 +02:00
Nyall Dawson
0b4694fbee More efficient case insensitive string comparison 2018-09-05 07:54:35 +10:00
Nyall Dawson
4930061b21 [processing] Fix incorrect OGR warnings when loading raster layer results
Fixes #19597
2018-08-16 06:37:18 +10:00
Alexander Bruy
c515a666b2 [processing] fix typo 2018-08-13 15:25:23 +03:00
Nyall Dawson
41825cab1b [processing] Also accept QgsProcessingOutputLayerDefinition for
layer input values

Since these may result from the output of an earlier child algorithm running
in a processing model.

Fixes #19372
2018-07-12 10:14:03 +10:00
Nyall Dawson
ead18fc488 [processing] Fix managled paths in history which contain '\' chars 2018-07-02 10:23:01 +10:00
Matthias Kuhn
ae6bffde24
Update to QgsProcessingFeatureSource::hasFeatures 2018-06-26 11:22:34 +02:00
Matthias Kuhn
1b15e68f64
Add minimal smartness for QgsProcessingFeatureSource::hasFeatures 2018-06-22 14:41:42 +02:00
Nyall Dawson
f6416a1990 [processing] Fix missing vector inputs when run in batch mode
Fix incorrect definition of compatibleVectorLayers, which was
using layer WKB type values instead of processing source types.
2018-06-01 15:55:11 +10:00
Martin Dobias
091ed912ab Move fieldNamesToIndices() and indicesToFields() to QgsProcessingUtils 2018-04-26 10:34:30 +02:00
Peter Petrik
50422a1165 [FEATURE] QgsMeshLayer part 1: Reading raw mesh
Introducting MDAL, QgsMeshLayer, mesh data providers (mesh_memory, mdal)
to read and visualize raw meshes: vertices and faces. Support dragging
2dm files from browser on canvas to visualize 2dm meshes.
Support for QgsMeshLayer in Python API.
2018-04-19 10:50:33 +02:00
Nyall Dawson
84cdd609ab [processing] Fix invalid filenames are used for temporary files
during models

Fixes #18263
2018-03-05 12:06:50 +11:00
Nyall Dawson
1f3ee0501a [processing] Always report errors if features cannot be written
to a destination

Before we silently ignored these - now algorithms will automatically
push errors to the log if a feature cannot be written to a sink (no
changes to algorithms or special handling required)
2018-02-17 19:10:46 +11:00
Nyall Dawson
5c40975fe7 [processing] Don't replace " with ' when handling layer paths
Since netcdf, and possibly other gdal drivers, use layer uris
of the format NETCDF:"/tmp/test.nc":var1 we can't safely
remove or reformat these quotations.
2018-02-15 16:43:21 +10:00
Nyall Dawson
2682a74a1b Fix clazy pass big type by ref, small by value warnings 2018-02-02 19:52:01 +11:00
Nyall Dawson
22de251156 [processing] Correctly supress CRS selector dialog when testing
input layer validity

TODO: we NEED a non-hacky way to supress this dialog and allow
invalid CRS for layers!

Fixes #17948
2018-01-30 06:15:32 +11:00
Nyall Dawson
86d9492372 Remove context-unaware QgsCoordinateTransform constructors from Python bindings
This forces Python code and plugins to become datum transform
aware, and given that upgrading python code is easy (just
add QgsProject.instance() as a new argument to the constructor)
it's relatively painless to force this on PyQGIS users.

Also fix upgrade the easy QgsCoordinateTransform c++ constructors
where the project is available, or where using QgsProject::instance()
is safe to do.

For others, just avoid the deprecated warnings until we can
get access to the correct project instance where the transform
is being constructed.
2017-12-15 14:13:22 +10:00
Nyall Dawson
3a5caaf94c Add missing proxy calls for QgsProcessingFeatureSource, causing
inefficient base class methods to be used instead.
2017-12-08 15:05:56 +10:00
Nyall Dawson
3d307b4109 Improve name of memory layers output from processing 2017-11-27 06:38:21 +11:00
Matthias Kuhn
916c9c4cdb Open heart surgery on expression context for processing sources 2017-11-24 16:09:05 +01:00
Matthias Kuhn
abe1a9b661 Expression context creation for processing improvements
Hiding away the implementation directly in QgsProcessingFeatureSource

See discussion ec97102bc6 (r152903378)
2017-11-24 16:09:05 +01:00
Nyall Dawson
0a092cc38a [processing] Throw an exception when sinks cannot be created
Gives users debugging information messages on why the layers could
not be created

Also allow overwriting existing layers in geopackage outputs
2017-11-24 09:31:50 +10:00
Nyall Dawson
59d55fc44c [processing] Ensure correct sublayer is loaded when saving output
to destination with multiple sublayers
2017-11-24 09:31:50 +10:00
Nyall Dawson
f7a317be78 [processing] Fix saving outputs to non-file formats 2017-11-24 09:31:50 +10:00
Matthias Kuhn
851adb0a3d Allow adding sources to processing expression context 2017-11-23 15:24:40 +01:00
Nyall Dawson
ba62ffce2c Make constructors for QgsVectorLayer and QgsRasterLayer more flexible
...by moving extra arguments to new LayerOptions structs. This allows
us to more easily add new layer constructor options without making
the API cumbersome to use.
2017-11-09 14:28:51 +11:00