6481 Commits

Author SHA1 Message Date
Even Rouault
3ee7d59e18 QgsVectorFileWriter::MetaData: add a compulsoryEncoding member
* Some formats require a compulsory encoding, typically UTF-8.
Change initMetadata() to indicate UTF-8 compulsory encoding for
GeoJSON, GeoRSS, GML, GPKG, GPX, KML, SQLite, SpatiaLite, FileGDB,
XLSX and ODS
* QgsVectorFileWriter::init(): make it override the user specified
encoding if the format has a compulsory encoding. And remove hard-coded
case for KML.
2016-05-19 11:38:42 +02:00
volaya
a7f41dc4c5 [processing] do not reject string parameters if they contain an unparsable expresion 2016-05-17 08:06:56 +02:00
Matthias Kuhn
8c402bcf42 Remove child features when parent's add feature form is cancelled 2016-05-17 06:35:55 +02:00
Nyall Dawson
307aabd66a [FEATURE] Aggregates for expressions
This commit adds a number of different forms of aggregates to
the expression engine.

1. Aggregates within the current layer, eg sum("passengers")
Supports sub expressions (ie sum("passengers"/2) ), group by
( sum("passengers", group_by:="line_segment") ), and optional
filters ( sum("passengers", filter:= "station_class" > 3 ) )

2. Relational aggregates, which calculate an aggregate over
all matching child features from a relation, eg
relation_aggregate( 'my_relation', 'mean', "some_child_field" )

3. A summary aggregate function, for calculating aggregates
on other layers. Eg aggregate('rail_station_layer','sum',"passengers")
The summary aggregate function supports an optional filter,
making it possible to calculate things like:

aggregate('rail_stations','sum',"passengers",
  intersects(@atlas_geometry, $geometry ) )

for calculating the total number of passengers for the stations
inside the current atlas feature

In all cases the calculations are cached inside the expression
context, so they only need to be calculated once for each
set of expression evaluations.

Sponsored by Kanton of Zug, Switzerland
2016-05-17 10:53:25 +10:00
Nyall Dawson
ea066599a1 [relations] Add method to manager to retrieve relations by name
Also
- Begin unit tests for QgsRelationManager
- Make project optional when constructing QgsRelationManager
2016-05-17 10:53:25 +10:00
Nyall Dawson
84fc3c3b3d Implement method for caching values within expression contexts
Can be used to store the results of expensive sub-expression
calculations (eg layer aggregates), so that future expression
evaluation using the same context does not have to recalculate
the cached values.
2016-05-17 10:53:24 +10:00
Nyall Dawson
821134ca91 Add method to convert string to aggregate type 2016-05-17 10:53:24 +10:00
Nyall Dawson
dcc047af49 Add possibility to handle aggregate calculation at data provider
(not implemented for any providers yet)
2016-05-17 10:53:24 +10:00
Nyall Dawson
50e41c8133 New utility class QgsAggregateCalculator, simplifies calculating
aggregates from vector layer fields and expressions
2016-05-17 10:53:24 +10:00
Nyall Dawson
1c45b940a8 Add calculation of number of null values to QgsStatisticalSummary 2016-05-17 10:53:04 +10:00
Nyall Dawson
4dea723cae Add methods to stats calculators to accept values one at a time
This can be more efficient for large quantities of values, since
it avoids the need to create a list of all values in advance
2016-05-17 10:52:06 +10:00
Matthias Kuhn
9080aa1988 Don't require a parent for QgsExpressionBuilderWidget 2016-05-16 11:16:13 +02:00
Matthias Kuhn
d07d9edda6 Allow sorting attribute table by expression 2016-05-16 11:16:13 +02:00
Nyall Dawson
11ee2fc809 Fix running unsaved script in console 2016-05-16 18:14:58 +10:00
Even Rouault
abd182c50c Merge pull request #3061 from rouault/saveas_human_readable_values
[FEATURE] Export vector layer with "human-readable" values from edit widgets
2016-05-14 14:23:10 +02:00
Even Rouault
038b3b7950 QgsVectorFileWriter: add capability to export displayed values of fields (typically coming from edit widgets) instead of their raw values 2016-05-14 12:33:10 +02:00
Sebastian Dietrich
c5308754eb [DbManager] allow to refresh materialized views
(fixes #13697)
2016-05-14 00:41:20 +02:00
Matthias Kuhn
27aca5c341 Fix typo 2016-05-14 00:21:50 +02:00
Matthias Kuhn
7dfc69657f Migrate provider test to python 3 2016-05-13 22:23:03 +02:00
Matthias Kuhn
25f2e637c0 Remove references to QPyNullVariant 2016-05-13 22:23:03 +02:00
Matthias Kuhn
89b7a4aaa2 Introduce NULL QVariant to PyQt5 2016-05-13 22:23:03 +02:00
Alexander Bruy
ab3fef97aa fix import (take 2) 2016-05-13 13:17:48 +03:00
Alexander Bruy
7c122a3a93 [processing] fix import 2016-05-13 11:11:33 +03:00
Even Rouault
d4d13a4a0a Merge pull request #3018 from rouault/wfs_sql
[FEATURE] [WFS provider] Add support for WFS 2.0 joins and other improvements
2016-05-13 09:55:38 +02:00
volaya
19f80601bf [processing] remove toolbox dock widget when unloading plugin 2016-05-13 08:58:47 +02:00
Alexander Bruy
555fe3d911 [processing] simplify variables handling in scripts 2016-05-13 09:34:25 +03:00
Alexander Bruy
0c8f6f7fbb fix indentation and typo 2016-05-13 09:32:13 +03:00
Alexander Bruy
730c5806aa Merge branch 'processing_exps' of https://github.com/volaya/QGIS into processing_exps
Conflicts:
	python/plugins/processing/gui/NumberInputPanel.py
	python/plugins/processing/gui/OutputSelectionPanel.py
2016-05-13 09:26:55 +03:00
Even Rouault
9df19e0133 Add QgsSQLStatement class to parse SELECT statements 2016-05-12 23:24:39 +02:00
Alexander Bruy
583eaeff7f [processing] don't crash if user canceled script loading 2016-05-12 16:27:24 +03:00
Nyall Dawson
6886ea0d0c [FEATURE] Redesigned interactive gradient editor
Uses new gradient editor widget and color controls for easier
manipulation of gradients. Also adds an interactive plot
for modifying gradient stops via the color HSV or RGB values.

Fix #8383

Sponsored by North Road
2016-05-12 21:03:59 +10:00
Nyall Dawson
881be0f365 [FEATURE] New reusable interactive widget for editing gradient ramps
Supports:

- drag to move color stops
- double clicking to add a new stop
- pressing delete will remove the selected stop
- pressing arrow keys will move the selected stop, shift+arrow= larger
  move
- drag and drop a color onto the widget to add a new stop

Sponsored by North Road
2016-05-12 21:03:51 +10:00
Nyall Dawson
79f3d4221b Add equality operator for gradients, ensure stops are always in order 2016-05-12 20:55:27 +10:00
Nyall Dawson
77fc122bed Move internals of QgsColorDialogV2 to new QgsCompoundColorWidget widget
This allows reuse of the full options from the color dialog when
required in a widget form.
2016-05-12 20:52:16 +10:00
Nyall Dawson
0332157d8a Partial revert 18b69d 2016-05-12 10:22:22 +10:00
Nyall Dawson
18b69d26ef Indentation 2016-05-11 23:02:34 +10:00
Nyall Dawson
b053ad8769 New class QgsDateTimeStatisticalSummary
Calculates summary statistics on lists of datetime values, such
as count, count distinct, min, max and range
2016-05-11 23:02:33 +10:00
Matthias Kuhn
0d165e5621 Merge pull request #3058 from arnaud-morvan/processing_postgis_errors
Processing - Fix unicode/str error in postgis_utils
2016-05-11 12:30:14 +02:00
arnaud.morvan@camptocamp.com
66b1416dfe Processing - Fix unicode/str error in postgis_utils 2016-05-11 11:27:58 +02:00
Matthias Kuhn
1e9a40fb62 Fix python bindings for QgsAttributeAction 2016-05-11 10:04:00 +02:00
Matthias Kuhn
d088fe072d Fix action widget on attribute table 2016-05-11 09:22:49 +02:00
Matthias Kuhn
86ccaff49a Merge pull request #3063 from DelazJ/fields
use same icons as in other dialogs for this task
2016-05-11 07:57:45 +02:00
Nyall Dawson
5177d93b5a Add time field filter option for QgsFieldComboWidget (also add docs) 2016-05-11 11:59:39 +10:00
Nyall Dawson
ab288c6b12 Fix coverity mixed enum warning, switch 0 -> nullptr 2016-05-11 10:00:01 +10:00
Nyall Dawson
0f6838df2a Merge pull request #3034 from rouault/ogr_concurrent_opening
[BUGFIX / FEATURE] [OGR] Allow concurrent edition of Shapefiles and Tabfiles in QGIS & MapInfo
2016-05-11 05:07:57 +10:00
Nyall Dawson
7ae80b106d Fix sip bindings for QgsStringStatisticalSummary 2016-05-10 20:14:51 +10:00
Nyall Dawson
0493cbfc21 New class QgsStringStatisticalSummary, for calculating statistics
on lists of strings
2016-05-10 19:06:13 +10:00
Nyall Dawson
ceba5264f7 New class QgsInterval for storing durations between datetimes
Move the QgsExpression::Interval class out to its own QgsInterval
class, extend with new methods and add tests

Add a typedef to keep API compatibility for 2.16
2016-05-10 19:00:33 +10:00
Nathan Woodrow
ca914f118e [FEATURE] Add style/history tab to style dock 2016-05-10 10:32:30 +10:00
Nyall Dawson
56783c915e Merge pull request #3051 from nyalldawson/cad_fixes
Improvements and fixes to advanced digitising dock
2016-05-09 21:38:37 +10:00