61 Commits

Author SHA1 Message Date
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
Harrissou Sant-anna
2614ca1a96 Remove trailing spacing and punctuation in ui items 2017-10-27 01:43:26 +02:00
Etienne Trimaille
fb4e84a052 allow pipe character in filepath in processing 2017-10-25 00:49:00 +02:00
Jachym Cepicky
28daa1a0e0 Adding more default SHP->GPKG changes 2017-10-19 15:45:04 +02:00
Nyall Dawson
b27382d011 [processing] Fix history doesn't correctly escape values
Fixes #17229
2017-10-03 19:01:13 +10:00
Nyall Dawson
a87d352bd7 Run clang-tidy modernize-use-default-member-init to move member
initialization to headers (c++11 style)
2017-09-27 05:02:34 +10:00
Nyall Dawson
31c1ae1c6a Add missing QStringLiterals 2017-09-25 17:12:03 +10:00
Nyall Dawson
c41dca937c Port processing combineFields to c++ 2017-09-22 15:19:32 +10:00
Nyall Dawson
f1ac0be867 Fix processing setting to use filename as layer name 2017-08-19 00:56:18 +10:00
Nyall Dawson
c7affb3b70 Use const references to options instead of pointers in QgsVectorLayerExporter
The use of pointers make ownership of the argument confusing, and there's
nothing stopping us just using an empty map as the default value instead.
2017-08-17 19:26:57 +10:00
Nyall Dawson
b7ae44fb30 Move method to evaluate a variant to a feature source to QgsProcessingUtils 2017-07-13 20:51:47 +10:00
Nyall Dawson
eb0c3015f9 Push minimumValues/maximumValues up to QgsFeatureSource base class
Allows these methods to be called on feature sources
2017-07-13 20:07:33 +10:00
Nyall Dawson
9e184feaed Add method to evaluate parameters to compatible vector layers
of a specified type
2017-07-08 20:49:17 +10:00
Nyall Dawson
e2e829cacf Fix generation of temporary processing filenames 2017-06-27 12:33:05 +10:00
Nyall Dawson
ec7477cac7 Add method to retrieve all features from a QgsProcessingFeatureSource
...even when invalid geometries are present and option is set to
skip invalid or break on invalid.

Some algorithms (e.g. those which repair geometries) need a way
to retrieve all features with invalid geometries, regardless of
the user's settings.
2017-06-26 12:44:26 +10:00
Nyall Dawson
7ae1ee975d Add sourceName() method to QgsFeatureSource
Sometimes it's necessary to retrieve the name of a source...
2017-06-26 12:15:01 +10:00
Nyall Dawson
e7f13f5bd8 Port model help code to c++ 2017-06-24 07:36:07 +10:00
Nyall Dawson
cbc9e03b9d Consolidate all QgsException subclasses in the same header 2017-06-23 12:08:54 +10:00
Nyall Dawson
57f2c623ce Move invalid geometry callback from Python to c++ 2017-06-23 12:08:54 +10:00
Nyall Dawson
d8c44cb643 Fix creation of feature sinks when using windows style paths 2017-06-22 18:22:43 +10:00
Nyall Dawson
a87ca09e34 Move some temp file/folder utils to c++ 2017-06-22 06:48:25 +10:00
Nyall Dawson
60ea095d01 Port calculation of iterating destination to c++ 2017-06-12 13:35:17 +10:00
Nyall Dawson
29f50b72ee [processing] Catch transform errors in when iterating features 2017-06-12 08:05:32 +10:00
Nyall Dawson
607fed8c48 Restore ability to save outputs directly to Spatialite/PostGIS providers 2017-06-06 10:34:57 +10:00
Nyall Dawson
d7aa3f5f7c [processing] Change explicit encoding string parameters to more
flexible QVariantMap creatOptions parameters which include an
optional fileEncoding value

More flexible, allows sinks to be created using any creation
option which is passed to the underlying provider
2017-06-06 08:00:28 +10:00
Nyall Dawson
0e991bf62c Remove QgsProcessingUtils::uniqueValues
Use QgsFeatureSource method instead
2017-06-06 07:41:20 +10:00
Nyall Dawson
b6fb41d4ee [processing] Don't use vector layers directly as feature sources
Instead, parameters evaluate to QgsFeatureSource, which are
used for retrieving features, feature count, crs, wkb type,
etc.

This abstracts away the actual feature source, so that
algorithms may potentially operate from non-layer
feature sources.

It also helps remove the need for specialised QgsProcessingUtils
methods like getFeatures, featureCount, and createSpatialIndex.
Instead the standard API methods using QgsFeatureSources can
be used instead.
2017-06-06 07:41:20 +10:00
Nyall Dawson
ba03f1a13a Move minimum layer extent calculation to c++ 2017-06-06 07:41:19 +10:00
Nyall Dawson
3388857526 Move uniqueValues to QgsFeatureSource
Also change signature of QgsVectorLayer/QgsVectorDataProvider
uniqueValues method to match (and improve API)
2017-06-05 16:59:08 +10:00
Nyall Dawson
384369c3c4 Rename QgsVectorLayerImport to QgsVectorLayerExporter
Since the majority of users of this class will be exporting
an existing map layer to a data provider, the QgsVectorLayerImport
name is misleading and suggests that this class is designed
just to bring layers "into" QGIS.

Explicitly naming the class "Exporter" should help API users
discover this class.

Also cleanup API and improve docs
2017-05-12 08:02:51 +10:00
Nyall Dawson
6aa10c6817 [processing] Cleanup some layer/writer related handling
Ensure that layers created by QgsProcessingUtils::createFeatureSink
can always be retrieved using QgsProcessingUtils::mapLayerFromString
2017-05-09 15:29:41 +10:00
Nyall Dawson
a8a3cc82ed [processing] Port vector.createVectorWriter to c++
This implements an improved version of vector.createVectorWriter
in QgsProcessingUtils. The improved version relies on the
core class QgsVectorLayerImport to create empty layers,
which:
- reduces duplicate code and reuses the mature QgsVectorLayerImport
routines
- avoids manual conversion of field types to destination provider
field types
- potentially allows any writable provider to be used as a feature
sink for algorithms (e.g. output direct to MSSQL/Oracle/db2). This
should work now - it just needs exposing via UI.
2017-05-07 08:02:53 +10:00
Nyall Dawson
32e06f486a Make QgsProcessingContext::temporaryLayerStore() return a pointer to store 2017-05-03 08:43:31 +10:00
Nyall Dawson
d2ce9c69b1 Allow access to project's internal layer store, remove some duplicate code 2017-05-03 07:35:47 +10:00
Nyall Dawson
e1cff82a44 Fix failing test 2017-05-03 07:09:44 +10:00
Nyall Dawson
c575c4a869 Fix build 2017-05-03 07:09:44 +10:00
Nyall Dawson
df1ead5ed4 [processing] Remove vector.spatialindex()
Use QgsProcessingUtils.createSpatialIndex() instead.
2017-05-02 13:39:36 +10:00