9468 Commits

Author SHA1 Message Date
Nyall Dawson
92397537fe Check validity outputs counts of valid/invalid features 2017-06-12 07:26:02 +10:00
Nyall Dawson
e49cc78674 Make html output in basic stats algorithm optional 2017-06-12 07:26:02 +10:00
Nyall Dawson
cb41ef1adc Output useful logging when running algorithms from toolbox
Now outputs the input parameters, execution time, and results
2017-06-12 07:26:02 +10:00
Nyall Dawson
1d6d4be556 Correctly reject algorithm dialog
Algorithm dialog was not being rejected when close button was
called (only hidden), leading to old dialogs and widgets
hanging around forever...
2017-06-12 07:26:02 +10:00
Nyall Dawson
aa544a14c0 Only use a temporary feedback object when running algorithms
Otherwise canceling a run causes all future runs to be canceled
2017-06-12 07:26:02 +10:00
Nyall Dawson
2d2c229332 Port checkInputCRS to c++, and allow algorithms to flag when they
require all input layers to be in the same CRS

The default behaviour is to assume that algorithms are well behaved
and can handle multi-CRS inputs, but algs have the option to
flag that they do not allow this and require the input CRS check.

Those algs should document that they require all inputs to have
matching CRS - processing 3.0 behaviour is to assume that algs
can handle this.
2017-06-12 07:26:02 +10:00
Nyall Dawson
386c4246b2 Merge algorithm reprojects layers so that all features are
in CRS of first input layer
2017-06-12 07:26:02 +10:00
Nyall Dawson
5ba0b5cd83 Port merge alg to new API 2017-06-12 07:26:02 +10:00
Nyall Dawson
ea18e8e9db Resurrect grid polygon algorithm 2017-06-12 07:26:02 +10:00
Nyall Dawson
d8260b8c47 [FEATURE] Port Extract by Expression to new API, allow saving
non matching features to separate output
2017-06-12 07:26:02 +10:00
Nyall Dawson
a6a3027ea6 [processing] Clip alg allows mask in different CRS to clipped layer 2017-06-12 07:26:02 +10:00
Nyall Dawson
74ce5550ad Remove duplicate QgsRectangle::unionRect method
QgsRectangle::combineExtentWith does the exact same thing
2017-06-12 07:03:08 +10:00
Nyall Dawson
be2ec2f1a7 Fix running processing algs through locator 2017-06-11 20:54:03 +10:00
Matthias Kuhn
cc877c39eb No more QgsGeometry pointers in the public API
Geometries are passed as const reference and returned by value.
This make using the API easier and reduces the risk of ownership
problems.

The overhead is minimal due to implicit sharing.

Fix https://github.com/qgis/qgis3.0_api/issues/68
2017-06-11 09:13:16 +02:00
Alexander Bruy
6896548521 Merge pull request #4705 from PedroVenancio/master
[processing] fixes GRASS 7 v.net.alloc (fix #16672)
2017-06-10 20:40:58 +03:00
Nyall Dawson
326e442548 Fix crash when saving vector layer in background task 2017-06-10 18:53:01 +10:00
PedroVenancio
aedb95b1aa Fixes GRASS 7 v.net.alloc #16672 2017-06-10 09:41:05 +01:00
Denis Rouzaud
00b2d24247 sipiy gui symbology 2017-06-09 10:16:08 +02:00
Denis Rouzaud
58674146af sipify gui effects + layertree 2017-06-09 10:16:08 +02:00
Denis Rouzaud
2454e56b32 sipify gui attribute table 2017-06-09 10:16:08 +02:00
Denis Rouzaud
f5c3b8a1f8 [sipify] fix enum again 2017-06-09 10:16:08 +02:00
Denis Rouzaud
532b9a142a sipify gui part n 2017-06-09 10:16:08 +02:00
Nyall Dawson
d4acdac618 Merge pull request #4701 from nyalldawson/processing_pt31
[processing] allow optional feature sink parameters
2017-06-09 14:54:10 +10:00
Nyall Dawson
57a6735810 Merge pull request #4672 from nyalldawson/scale
Unify scale widgets API, pt 1
2017-06-09 14:51:39 +10:00
Nyall Dawson
8c73bcbcfe [FEATURE] Port CheckValidity alg to new API
Also make outputs optional from the alg - now you can select
which outputs you need for your model!
2017-06-09 14:24:27 +10:00
Nyall Dawson
6b55300fbc If a feature sink parameter is optional and not set, don't create the sink
This adds a lot of flexibility to algorithms, as it makes output
sinks truely optional. For instance, the various "Extract by..."
algorithms could add a new optional sink for features which
'fail' the extraction criteria. This effectively allows these
algorithms to become feature 'routers', directing features onto
other parts of a model depending on whether they pass or fail
the test.

But in this situation we don't always care about these failing
features, and we don't want to force them to always be fetched
from the provider. By making the outputs truely optional,
the algorithm can tweak its logic to either fetch all features
and send them to the correct output, or only fetch
matching features from the provider in the first place (a big
speed boost).
2017-06-09 14:22:29 +10:00
Nyall Dawson
2d2dff9b4a Restore basic stats alg 2017-06-09 13:17:48 +10:00
Nyall Dawson
e413463755 [needs-docs] Use standard scale widgets and terminology for labeling
Also unify API with other scale API.

Fix #16349
2017-06-09 12:46:41 +10:00
Nyall Dawson
b2e102d2f5 Improve API docs 2017-06-09 11:56:14 +10:00
Nyall Dawson
b0c35ab4b8 Unify scale API in rule based labeling, fix GUI issues 2017-06-09 11:51:01 +10:00
Nyall Dawson
9805782bc2 Unifying rule based renderer scale API, fix scale related bugs
Fix #15512
2017-06-09 11:09:09 +10:00
Nyall Dawson
32ecbcfa21 Merge pull request #4693 from nyalldawson/request_crs
Allow specifying a destination CRS in QgsFeatureRequest
2017-06-09 10:49:02 +10:00
Nyall Dawson
37f86f5f04 Unify diagram scale API with rest of scale API 2017-06-09 10:34:34 +10:00
Nyall Dawson
1be5fbda96 More consistency across scale API
Use a real scale widget for point displacement label scale
2017-06-09 10:26:01 +10:00
Nyall Dawson
10707b8787 Improve documentation 2017-06-09 09:14:50 +10:00
Nyall Dawson
b07726592c Flip remaining scale API from real to denominators 2017-06-09 09:12:42 +10:00
Nyall Dawson
463e722477 Clarify in doxygen what scale values represent 2017-06-09 09:12:42 +10:00
Nyall Dawson
08a9bcba0a Unify scale widgets API
Flip all scale based widgets to use scale denominators instead
of actual scales (ie 100.0 instead of 0.01 for 1:100).

This is done for consistency with the rest of the API, which
predominantly uses scale denominators. It also helps
precision loss as a result of multiple 1.0 / scale conversions
throughout the code.

Refs #15337
2017-06-09 09:11:10 +10:00
Nyall Dawson
482ed3f25a Explicitly mention in docs that presence of destination CRS does
not affect filter expressions or virtual field values
2017-06-09 09:00:04 +10:00
Nyall Dawson
e437812a68 Return an invalid iterator if a transform exception occurs
when projecting filter rects from destination crs
2017-06-09 08:57:00 +10:00
Nyall Dawson
7d847bf34a Rename transform methods for clarity 2017-06-09 08:41:46 +10:00
Nyall Dawson
9f71156a13 Merge pull request #4678 from nyalldawson/layer_scale
Swap QgsMapLayer min/max scale API definitions (unify scale api, pt 2)
2017-06-09 07:44:01 +10:00
Martin Dobias
2964c33d63 Reshape tool: use default Z value for 3D geometries 2017-06-08 21:56:21 +02:00
Denis Rouzaud
866bfc3db6 sipify core symbology part 2 2017-06-08 15:16:55 +02:00
Nyall Dawson
b6e1eea4c7 Handle request destinationCrs in QgsVectorLayerFeatureIterator 2017-06-08 19:20:07 +10:00
Nyall Dawson
a98923507e Allow specifying a destination CRS in QgsFeatureRequest
If set, all geometries will be reprojected from their original
coordinate reference system to the destination CRS while
iterating over features.

If a CRS has been set as the destination CRS, then the filterRect
parameter should be specified in the same CRS as this destination
CRS.

Additionally, a callback function can be specified on the request
to be called if a transform exception is encountered while
iterating over features.

This is designed to make it easier for scripts and plugins to
correctly reproject layers in an efficient and robust way, instead
of having to implement lots of repeated code themselves and
potentially missing some of the important considerations which
come with reprojecting geometries & bounding boxes.

Now, if a script wants the features from a layer in a specific
CRS, they can call:

    crs = QgsCoordinateReferenceSystem('epsg:4326')
    request = QgsFeatureRequest().setDestinationCrs(crs)
    for f in layer.getFeatures(reqeuest):
        print('geometry in 4326 is {}.format(f.geometry().exportToWkt()))
2017-06-08 19:20:07 +10:00
Harrissou Sant-anna
fcc06ce380 More typo fixes 2017-06-08 09:55:25 +02:00
Harrissou Sant-anna
a148a7890d Typo fix and list ordering 2017-06-08 09:55:25 +02:00
Nyall Dawson
7651f9fb71 Merge pull request #4698 from nyalldawson/cache_test
Add feature source test for QgsVectorLayerCache
2017-06-08 17:39:14 +10:00
Denis Rouzaud
9e176feeac gps fixes 2017-06-08 09:38:34 +02:00