8004 Commits

Author SHA1 Message Date
Nyall Dawson
f65e770242 [FEATURE[processing] New algorithm to compute geometry by expression
This algorithm updates existing geometries (or creates new
geometries) for input features by use of a QGIS expression. This
allows complex geometry modifications which can utilise all the
flexibility of the QGIS expression engine to manipulate and create
geometries for output features.
2016-11-02 16:05:46 +10:00
Nyall Dawson
3f2a7810cf Respect non-enforced constraints when editing/adding features
Warnings are shown, but features can be committed. Fields which
fail an unenforced constraint are now shaded in yellow to differentiate
from the red failure for enforced constraints.
2016-11-02 13:42:22 +10:00
Nyall Dawson
fac5bc0691 [FEATURE] Field constraints can be enforced or not
Non-enforced constraints just show a warning to the user, but
do not prevent committing the feature. Enforced constraints
block users from comitting non compliant features.

Any constraints detected by the provider are always
enforced.
2016-11-02 13:42:22 +10:00
Nyall Dawson
cb94b68d88 Move constraint handling to QgsFieldConstraints
Avoids cluttering QgsField API
2016-11-02 11:07:07 +10:00
Nyall Dawson
a6319a47d7 If the layer is NOT being edited then only check layer based constraints
and not any constraints enforced by the provider

Because:

1. we want to keep browsing features nice and responsive. It's nice to give
 feedback as to whether the value checks out, but not if it's too slow to
 do so. Some constraints (eg unique) can be expensive to test. A user can
 freely remove a layer-based constraint if it proves to be too slow to
 test, but they are unlikely to have any control over provider-side
 constraints

2. the provider has already accepted the value, so presumably it doesn't
 violate the constraint and there's no point rechecking!
2016-11-02 11:07:07 +10:00
Nyall Dawson
c98d380dc1 Move responsibility for testing for attribute against constraints
to QgsVectorLayerUtils::validateAttribute()

Also clean up some strings shown to the user when a constraint
check fails
2016-11-02 11:07:07 +10:00
Nyall Dawson
2500d75f5e Move responsibility for storage of constraint expressions to QgsVectorLayer 2016-11-02 11:07:07 +10:00
Nyall Dawson
f99ea26bdf Refactor constraint handling
- store constraint origin in QgsField
- move handling of constraint expressions to QgsField
2016-11-02 11:07:07 +10:00
Nyall Dawson
1cecf37b40 Enforce unique constraints in attribute form 2016-11-02 11:07:07 +10:00
Nyall Dawson
b7d0fd6f90 New class QgsVectorLayerUtils
Contains static helper methods for working with vector layers.
Initially only contains a method to test whether a value
exists within a layer's attributes.
2016-11-02 11:07:07 +10:00
Nyall Dawson
6bbd0061f3 Move handling of not null constraint from edit form to layer 2016-11-02 11:07:07 +10:00
Nyall Dawson
bd9f672aa7 Allow constraints to be added at a QgsVectorLayer level 2016-11-02 11:07:07 +10:00
Nyall Dawson
4efad04bd8 Move constraints to QgsField 2016-11-02 11:07:07 +10:00
Nyall Dawson
d1fd588499 Add method to fetch constraints from a vector data provider
Implemented for unique and not null constraints for postgres
provider
2016-11-02 11:07:07 +10:00
Juergen E. Fischer
d3c7a04193 fix typo
(cherry picked from commit 658cfe68c91ec24f04f8ebda307fbec7d55a412f)
2016-11-01 13:51:49 +01:00
Juergen E. Fischer
7a326b1b8d fix typos 2016-11-01 13:46:29 +01:00
Martin Dobias
6b120a8600 Fix display of diagram legend entries (fixes #15448)
To make the implementation saner, the legend node that may be embedded within parent
layer node is kept separately from activeNodes.

(cherry picked from commit b385ebd9ba9272516eed61e5825a603fcee969e9)
2016-11-01 11:41:23 +08:00
Nyall Dawson
47109d13b7 Flip some connects to new style 2016-11-01 11:10:40 +10:00
Nyall Dawson
88871c2320 Merge pull request #3696 from nirvn/processing_otb_silent
[processing] remove console error message when optional otb provider not installed
2016-10-31 16:24:44 +10:00
nirvn
8e663309c0 [processing] remove console error message when optional otb provider not installed 2016-10-31 12:53:42 +07:00
Martin Dobias
a3186f80bc Fix layer tree expanded state when used expand/collapse all (fixes #15691)
(cherry picked from commit de85fdd6e8fa3d4f38196376aabccce317cbf341)
2016-10-31 12:53:30 +08:00
Martin Dobias
24fbe1a080 Fix crash in node tool after deleting the whole geometry (fixes #15659)
Made sure that both closestVertex() and closestSegment() return negative
distance on error (e.g. with null or emtpy geometry).

Also fixes snapping when dealing with layers with null/invalid geometries

(cherry picked from commit c093d5188fad685c4a596ff23c27aad7d151dac2)
2016-10-31 12:51:21 +08:00
Nyall Dawson
dd4b34ed16 [processing] Modeller should not be modal 2016-10-31 14:37:45 +10:00
nirvn
b48d20220e [processing] resurrect editing of modeler item on double-click 2016-10-31 11:18:22 +07:00
nirvn
bec379249e [processing] sort model input parameters to avoid random ordering 2016-10-31 10:53:13 +07:00
Nyall Dawson
3caccd531d [processing] Fix handling of multiple field input in modeller 2016-10-31 11:41:40 +10:00
Nyall Dawson
a117df2205 Merge pull request #3656 from nirvn/processing_import_to_spatialite
[processing] add "Import into Spatialite" algorithm
2016-10-31 09:14:19 +10:00
Nyall Dawson
29ce141dc4 Merge pull request #3657 from nirvn/processing_modeler_mandatory
[processing] fix modeler parameter mandatory checkbox logic
2016-10-31 09:13:37 +10:00
Nyall Dawson
d5698be69f Fix some processing breakage 2016-10-31 09:12:39 +10:00
Nyall Dawson
bd950616ac Rename visible "favourite" strings to "favorite", change API to
use "favorite"
2016-10-31 08:00:19 +10:00
Nyall Dawson
82312e10e4 [FEATURE][processing] New algorithm to extract specific nodes
This algorithm allows you to extract specific nodes from geometries.
Eg you can extract the first or last node in the geometry.

The algorithm accepts a comma separated list of node indices to
extract, eg 0 = first node, 1 = second node, etc. Negative indices
can be used to extract nodes from the end of the geometry. Eg
-1 = last node, -2 = second last node.
2016-10-31 07:56:24 +10:00
Nyall Dawson
8dab2cd4d7 [FEATURE][processing] New algorithm to extend lines
Allows extending linestrings by a set distance at the start
and end of the line
2016-10-31 07:56:24 +10:00
Nyall Dawson
ef34e393dc Add method to QgsGeometry to extend the start/end of a linestring 2016-10-31 07:56:24 +10:00
Nyall Dawson
c494c472ac Merge pull request #3690 from nyalldawson/extract_by_exp
[FEATURE][processing] New extract by expression algorithm
2016-10-30 08:23:40 +10:00
nirvn
121f48d654 [processing] add import into spatialite algorithm 2016-10-29 09:33:47 +07:00
Nyall Dawson
74e64645e4 [FEATURE][processing] New extract by expression algorithm
Filters an input layer by expression
2016-10-29 08:05:26 +10:00
Richard Duivenvoorde
54f312fa7f Temporarily hardcode plugins version in url ?qgis=3.0
If QGIS 3.0 is actually released this line should be removed.
2016-10-28 16:57:42 +02:00
Paolo Cavallini
79e5911e07 Update RegularPoints.py
Fixes #15773
2016-10-28 09:11:28 +02:00
Matthias Kuhn
0b3646b252 Expression functions can dynamically report geometry and columns 2016-10-27 23:11:51 +02:00
Matthias Kuhn
f80a33be65 [FEATURE] Expose @parent variable in aggregate functions
This makes it possible to access attributes and geometry from the parent
feature when in the filter of the "aggregate" expression function.

With this in place aggregates can be calculated per feature.

E.g. max "measurement" for each point_station per polygon_research_area.

Or a default attribute value when digitizing features:

    aggregate(layer:='countries', aggregate:='max', expression:=\"code\",
filter:=intersects( $geometry, geometry(@parent) ) )
2016-10-27 23:11:50 +02:00
Even Rouault
984ec65fcd [DBManager GPKG] Set appropriate icon for line layers 2016-10-27 15:59:57 +02:00
volaya
b58229009b indentation fix 2016-10-27 14:36:31 +02:00
volaya
472a550168 [processing] fixed field loading in field calculator
fixes #15767

Conflicts:
	python/plugins/processing/algs/qgis/ui/FieldsCalculatorDialog.py
2016-10-27 14:36:30 +02:00
Even Rouault
2d2ce00341 Merge pull request #3665 from rouault/save_style_gpkg
[FEATURE] [OGR provider] Load/save style in database for GPKG and Spatialite
2016-10-26 11:04:25 +02:00
Nyall Dawson
49432a8468 Optimise QgsAbstractGeometry
Make nCoordinates virtual, and provide shortcuts for some
geometry types. The base method which calls coordinateSequence()
is quite slow in certain circumstances.

Speeds up rendering point layers by ~25%, also likely to
speed up lots of geometry heavy operations throughout QGIS

Refs #15752
2016-10-26 17:22:09 +10:00
Alexander Bruy
323c6582c6 [processing] add workaround for GDAL regression with cutlines (fix #15746) 2016-10-25 17:48:19 +03:00
Even Rouault
d0da880b8c [DB Manager] Fix refresh issue when renaming GPKG table, and disable add geometry column button if already one existing 2016-10-25 15:39:27 +02:00
Even Rouault
e237963274 SIP QgsVectorLayer: fix signatures for output parameter
saveStyleToDatabase() and getStyleFromDatabase() should define errMsg as
output parameter
And loadNamedStyle() also for theResultFlag.
2016-10-25 10:28:53 +02:00
Paolo Cavallini
7470b55bbd Enable CROP_TO_CUTLINE by default
Fixes https://hub.qgis.org/issues/15750
Please backport it where appropriate.
2016-10-25 08:57:31 +02:00
Even Rouault
794c8f3c85 [DB_Manager GPKG] Fix creating and changing default values of columns 2016-10-24 17:41:49 +02:00