13166 Commits

Author SHA1 Message Date
Nyall Dawson
9fe26af8fa Allow processing tests to specify ellipsoid/project CRS 2018-06-29 07:12:48 +10:00
Nyall Dawson
34b9d39b27 [FEATURE][processing] K Means clustering algorithm
Adds a native k-means clustering algorithm.

Based on a port of PostGIS' ST_ClusterKMeans function, this
new algorithm adds a new cluster ID field to a set of input
features identify the feature's cluster based on the k-means
clustering approach. If non-point geometries are used as input,
the clustering is based off the centroid of the input geometries.
2018-06-29 07:12:48 +10:00
Denis Rouzaud
4d0d19b0f7
fix build without gui but with bindings
console and plugin installed are gui components
2018-06-28 21:55:38 +02:00
Juergen E. Fischer
212cffcab1 Port gps support to QSerialPort (byebye QExtSerialPort) 2018-06-28 17:31:01 +02:00
Martin Dobias
97addfc2cc
Merge pull request #7313 from PeterPetrik/mesh_layer_styling_gui
[mesh] [feature] App widgets for styling mesh layers
2018-06-28 15:17:14 +02:00
Martin Dobias
4c8b801791 Make sure that bool(obj) is True for QGIS API objects
bool(obj) in Python has the following semantics:
1. if the object has __bool__() method, return its value
2. if the object has __len__() method, return its value
3. return True

So for objects in QGIS API that implement __len__() method, we were getting
unexpected behavior - for example, "if layer: ..." would evaluate as False
in case the layer was empty, while the usual expectation is that any reference
to an object that is not None should evaluate to True.
2018-06-28 11:04:50 +02:00
Mathieu Pellerin
fb9e575252
[FEATURE] map canvas @canvas_cursor_point variable (#7225) 2018-06-28 14:18:54 +07:00
Nyall Dawson
85fba799ea [processing] Don't abort when missing field name specified in
delete columns algorithm

Fixes #19256
2018-06-28 17:10:23 +10:00
Nyall Dawson
6f5405a829 [processing] Be more careful with output geometries added as a
result of clipping
2018-06-28 17:09:51 +10:00
Nyall Dawson
31330ddffb [processing] Fix random selection algorithm when filter is set on layer 2018-06-28 15:02:06 +10:00
Nyall Dawson
977e14b058 [processing] Fix potential crash when calling processing.run with
custom context, but no feedback object
2018-06-28 14:12:37 +10:00
Nyall Dawson
73eb7628d8 Style 2018-06-28 11:26:53 +10:00
Juergen E. Fischer
d0e94728d8 fix build with sip 4.18.1 (eg. ubuntu artful) 2018-06-27 23:30:04 +02:00
Juergen E. Fischer
1904a431be fix typo 2018-06-27 18:16:42 +02:00
Matthias Kuhn
d7b85c69f8
Merge pull request #7016 from m-kuhn/featureSourceEmpty
QgsFeatureSource::empty() method
2018-06-26 13:01:08 +02:00
Peter Petrik
252e41d3dc fix travis issues: docs, sip, test 2018-06-26 11:07:45 +02:00
Peter Petrik
aeea184890 [mesh] [feature] App widgets for styling mesh layers
- Adding datasets to mesh layer from properties panel
- Information and source panel in properties panel
- Selection of active dataset (properties or styling panel)
- Styling of contours/scalars (properties or styling panel)
- Styling of mesh frame (properties or styling panel)
- Styling of vector arrows (properties or styling panel)
2018-06-26 08:50:19 +02:00
Matthias Kuhn
7acfe037c4
Merge pull request #7064 from anitagraser/patch-1
[FEATURE] Create PostGISExecuteAndLoadSQL.py
2018-06-25 08:17:04 +02:00
Anita Graser
4a48f50a85
Add qgis:postgisexecuteandloadsql 2018-06-22 21:35:26 +02:00
Nyall Dawson
5b7eefa6ae [FEATURE][processing] New 'Raster pixels to polygons' algorithm
Converts a raster layer into a vector layer, with a polygon feature
corresponding to each pixel from the raster and a single field
containing the band value from the raster.

Sponsored by SMEC/SJ
2018-06-23 04:42:10 +10:00
Anita Graser
bebadef101
Fix parameter names 2018-06-22 18:40:17 +02:00
Even Rouault
14a913e25b
Merge pull request #7170 from rouault/wfs_pagesize
[WFS provider] [FEATURE] Allow user to enable/disable paging and specify page size (fixes #18935)
2018-06-22 14:57:37 +02:00
Matthias Kuhn
cbde32f0fc
Merge pull request #4643 from merkato/master
[FEATURE] Add role logging for PostGIS versioning.
2018-06-22 14:47:07 +02:00
Matthias Kuhn
1b15e68f64
Add minimal smartness for QgsProcessingFeatureSource::hasFeatures 2018-06-22 14:41:42 +02:00
Matthias Kuhn
2718317e85
Merge pull request #7298 from nyalldawson/layout
[layouts] Save last used export folder in project
2018-06-22 14:35:37 +02:00
Matthias Kuhn
c780d607cc
Merge pull request #7105 from PeterPetrik/quick-3-identity
[qgsquick] [feature] Identify and highlight
2018-06-22 14:34:08 +02:00
Matthias Kuhn
638fc0ceff
Merge pull request #7245 from rouault/gpkg_transactions
[OGR provider] [FEATURE] Add support for transactions on GPKG databases
2018-06-22 14:33:01 +02:00
Martin Dobias
80b0c72c50 Fix a Python error in Processing GUI
It turns out that an empty QComboBox evaluates to False:

>>> t=QLineEdit()
>>> bool(t)
True
>>> c=QComboBox()
>>> bool(c)
False

Due to that, the 'TABLE' parameter was missing if its (editable) combo box was empty.

Original error - while updating an algorithm's parameters (gdal:importvectorintopostgisdatabaseavailableconnections)

Traceback (most recent call last):
  File "/home/martin/qgis/git-master/build-debug/output/python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py", line 121, in parametersHaveChanged
    or (not p.checkValueIsAcceptable(parameters[p.name()])):
KeyError: 'TABLE'
2018-06-22 13:30:26 +02:00
Matthias Kuhn
7ab6597150
Merge pull request #7288 from m-kuhn/19137
Take changes of embedded forms into account
2018-06-22 10:14:41 +02:00
Salvatore Larosa
648b588417 [pyqgis-console] APIs file updated 2018-06-22 09:35:23 +02:00
Nyall Dawson
41d6b9d967 Silence more plotly warnings on import 2018-06-22 14:26:55 +10:00
Nyall Dawson
6e7c07bc86 Mark regex 2018-06-22 13:37:58 +10:00
Nyall Dawson
398e2a17dd [console] Fix invalid regex warning 2018-06-22 13:37:58 +10:00
Nyall Dawson
12efb8669e [dbmanager] Fix error when connecting to postgis db
Fixes #19240
2018-06-22 13:37:58 +10:00
Nyall Dawson
635f8ad7ca Add QgsFileUtils::findClosestExistingPath to find the closest
existing folder match for a path

E.g. if \a path is "/home/user/projects/2018/P4343"
and "/home/user/projects" exists but no "2018" subfolder
exists, then the function will return "/home/user/projects".

(Suprisingly no existing Qt method for this!)
2018-06-22 10:45:00 +10:00
Nyall Dawson
757949bac0 Add missing references 2018-06-22 09:43:19 +10:00
Etienne Trimaille
6eeaca5570 return the default style first in the list 2018-06-22 09:23:47 +10:00
Martin Dobias
4c84cfa29a Fix a memory leak in classify() + add missing annotations/docstrings
A pseudo color renderer was getting created in classify() but never deleted.

Spotted by @PeterPetrik

As a bonus switched a for loop from mixed constBegin()/end() usage to range for.
2018-06-22 05:48:46 +10:00
Denis Rouzaud
ad00020366 QgsSettings.enumValue cast to enum 2018-06-21 05:29:16 -08:00
Denis Rouzaud
01681aba89 fix missing import 2018-06-21 05:29:16 -08:00
Denis Rouzaud
7dfec1fde0 [pyqgis] add misssing QgsSettings.setEnumValue
also fix sections in enumValue and flagValue
2018-06-21 05:29:16 -08:00
Matthias Kuhn
0749835071
Take changes of embedded forms into account
when clicking on ok of an attribute form, tell all embedded widgets (all
widgets actually) that we are going to close the form and it's the last
call to push changes to the edit buffer or they will be lost.

Fix #19137
2018-06-21 11:50:20 +02:00
Nyall Dawson
981c6686c0 Dox++ 2018-06-21 18:22:55 +10:00
Nyall Dawson
2ed547219a Add globs to information returned by QgsVectorFileWriter.supportedFiltersAndFormats 2018-06-21 18:22:55 +10:00
Denis Rouzaud
f749c521a9 use Q_ENUM for QgsLocator::Priority 2018-06-20 11:21:25 -08:00
Nyall Dawson
77d22849d9 Fix calculation of relation aggregate in virtual field with same name as related field 2018-06-20 15:23:55 +10:00
Nyall Dawson
4132dbc1c8 Typo 2018-06-20 15:06:36 +10:00
Nyall Dawson
8d6ce61a70 [processing] Silence warnings thrown from within plotly on import 2018-06-20 08:07:23 +10:00
Nyall Dawson
16ac437780 [processing] Fix bar and box plot exception when category field has NULL values 2018-06-20 08:07:23 +10:00
Denis Rouzaud
ff1988f11d Python __repr__ test output 2018-06-19 13:55:53 -04:00