2001 Commits

Author SHA1 Message Date
Nyall Dawson
0fcff9f2a0 Allow direct QVariant creation from some QGIS metatypes 2016-05-20 09:48:18 +10:00
mhugent
bc1aa42f85 Merge pull request #3081 from mhugent/curve_segmentize_parameters
Curve segmentize parameters
2016-05-19 16:29:05 +02:00
Even Rouault
0078b33ed2 Merge pull request #3082 from rouault/vectorfilewriter_cleanup_and_encoding_improvement
Vectorfilewriter cleanup and encoding improvement
2016-05-19 14:53:38 +02:00
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
Marco Hugentobler
c0d12dcdeb [FEATURE]: possibility to set the segmentation tolerance (maximum angle or maximum difference) 2016-05-19 11:02:43 +02:00
Denis Rouzaud
1602c02df7 Merge pull request #3009 from pblottiere/magnifier
[FEATURE] add a map canvas magnifier
2016-05-19 06:30:07 +02:00
Nyall Dawson
23a3a7717e Cleaner API for selecting features in QgsVectorLayer
- add selectByRect( QgsRectangle&, SelectBehaviour) and
selectByIds( QgsFeatureIds, SelectBehaviour) for selecting
by rect and ids respectively, with options to add to selection/
remove from selection/intersect with current selection
- deprecate select( QgsRectangle ) and setSelectedFeatures in
favour of new methods
- add unit tests
2016-05-19 12:30:32 +10:00
Nyall Dawson
b951d5a54d [FEATURE] new method QgsVectorLayer::selectByExpression(...)
Makes it simple for scripts to select by expression. The method
also accepts a parameter which dictates whether matching features
are added to an existing selection, removed from the selection
or intersected with the current selection.

The existing code from the select by expression dialog has been
moved to QgsVectorLayer, and optimised for maximum possible speed.

Also added unit tests.
2016-05-19 09:11:00 +10:00
Blottiere Paul
d23a110cb6 move magnification in map settings 2016-05-18 14:40:41 +02:00
Martin Dobias
deee8e290e [FEATURE] Composer map to follow a visibility preset (fixes #13418)
This adds a new option in composer map properties:
"Follow visibility preset" with a combo box to choose the active preset.

This is an alternative to "lock layers" (and "lock layer styles") functionality
which would just copy preset's configuration, while the new option links to preset.

The difference is that when a preset is updated, composer map will automatically
pick the new configuration when following the preset, while there is no update
if "lock layers" (and "lock layer styles") option is used.
2016-05-17 12:52:32 +08: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
d07d9edda6 Allow sorting attribute table by expression 2016-05-16 11:16:13 +02: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
Matthias Kuhn
7dfc69657f Migrate provider test to python 3 2016-05-13 22:23:03 +02:00
Matthias Kuhn
89b7a4aaa2 Introduce NULL QVariant to PyQt5 2016-05-13 22:23:03 +02:00
Even Rouault
9df19e0133 Add QgsSQLStatement class to parse SELECT statements 2016-05-12 23:24:39 +02: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
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
1e9a40fb62 Fix python bindings for QgsAttributeAction 2016-05-11 10:04:00 +02: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
81e72b782f Merge pull request #3060 from nyalldawson/filled_marker
New "Filled marker" symbol layer type
2016-05-09 21:23:59 +10:00
Nyall Dawson
ca2c6290b1 Always export GeoJSON features in WGS84 (match specifications) 2016-05-09 21:19:28 +10:00
Nyall Dawson
3681e2ceeb Add method for exporting QgsFeatureList to GeoJSON featurecollection 2016-05-09 21:19:28 +10:00
Nyall Dawson
5c1a05c8a1 Support including attributes of related (child) features in
GeoJSON feature export

Sponsored by Kanton of Zug, Switzerland
2016-05-09 21:19:28 +10:00
Nyall Dawson
34d468e64b Allow setting list of attributes to exclude from json exports 2016-05-09 21:19:28 +10:00
Nyall Dawson
9041c95464 Allow injecting extra properties into feature's GeoJSON export
Sponsored by Kanton of Zug, Switzerland
2016-05-09 21:19:28 +10:00
Nyall Dawson
c3f6c39784 Refactor to move JSON exporter to its own class 2016-05-09 21:19:28 +10:00
Nyall Dawson
24309dfb3a [FEATURE] New class QgsJSONUtils with utilities for converting
features to and from GeoJSON strings

Sponsored by Kanton of Zug, Switzerland
2016-05-09 21:19:28 +10:00
Matthias Kuhn
14acde5bb9 Merge pull request #3013 from pierstitus/pseudocolor_renderer
Rewrite pseudocolor render code to improve speed
2016-05-09 09:06:38 +02:00
mhugent
59db4d0ebc Merge pull request #3045 from mhugent/convert_geometry_2
Convert geometry 2
2016-05-09 08:33:58 +02:00
Nyall Dawson
ea20149239 [FEATURE] New "Filled marker" symbol layer type
A "filled marker" is similar to the simple marker symbol layer, except
that it uses a fill sub symbol to render the marker. This allows use
of all the existing QGIS fill (and outline) styles for rendering
markers, eg gradient or shapeburst fills.

A new abstract class QgsSimpleMarkerSymbolLayerBase has been created
from which both QgsSimpleMarkerSymbolLayerV2 and
QgsFilledMarkerSymbolLayer derive. All common code has been moved to
this base class, allowing for easy addition of new shapes or features
to both simple markers and filled markers without duplication.

Also, adds a lot of missing docs to marker symbol layers.
2016-05-07 22:06:10 +10:00
Nyall Dawson
cda387cb6f Ensure that @symbol_color is always correct for symbol layer types
with subsymbols
2016-05-07 21:52:19 +10:00
Nyall Dawson
d823be1ede Add some clarifications to QgsRelation api 2016-05-07 21:49:31 +10:00
Marco Hugentobler
11b7a2702c Move conversion of added/changed geometry to vector data provider 2016-05-06 15:26:13 +02:00
Nyall Dawson
d75eaff573 Fixes to arrow line symbology:
- Fix crash in Python bindings caused by subsymbol ownership
- Make symbol work correctly with categorised and graduated
renderers
2016-05-05 16:56:20 +10:00
Even Rouault
dc18b5b36b [BUGFIX / FEATURE] [OGR] Allow concurrent edition of Shapefiles and Tabfiles in QGIS & MapInfo
- Closes https://hub.qgis.org/issues/14378
- Adds new virtual methods in QgsDataProvider(): enterUpdateMode() and leaveUpdateMode()
  and implement them in the OGR provider. Limited to shapefiles and tabfiles
- Implements QgsOGRProvider:reloadData()
- Robustify OGR provider methods so they don't crash if dataset re-opening fails.
2016-05-04 22:00:30 +02:00
Matthias Kuhn
a6c88c1166 Add different widget style 2016-05-02 18:25:58 +02:00