Diskussion:Workshop QGIS Python GeoPython 2017
Aus Geoinformation HSR
Version vom 5. Mai 2017, 01:07 Uhr von Simran (Diskussion | Beiträge)
See also
- Step-by-step guide for the workshop on Github.
- https://github.com/simran001/PyQGIS
- https://etherpad.coredump.ch/p/Python-Workshop
User Defined or Custom Expression Functions (CEFs) can be used in ...
- "Layer > Properties > Tab Fields" in Button "Text Edit" in Default- and in Constraints-Field.
- "Layer > Properties > Tab Style" in "Label with".
- "Select features using an expression".
- "Field Calculator".
- "Statistical Summary" Panel.
- "Map Tip" tool
- Conditional formatting in attribute table
- Rule based labeling
- (other places?)
Possible examples
- Function doing something "local" like from other field(s).
- Functions reading something like a "Singleton" like a system environment variable (usage "env('USERNAME')") layer properties or number sequence (spcial Plugin needed?).
- Function for remote webservice: geocoding (reading from the internet).
- Out of scope: Function reading from other layers (rather candidate for a plugin).
After the GeoPython Workshop, Simran makes pull request to Expression Plus Plugin adding "env()" fn.
Optional (but highly demanded) use case: A user wants to create a layer (table) which as a primary key (id) which behaves like 'autoincrement' when user edit a new feature. So user does not have to care about unique, sequential values for the PK, like autoincrement in MySQL). In QGIS 3 this is available when user chooses "UNIQUE" as constraint. In QGIS 2.18 (or before) there is a clever custom expression function needed. => Solution?
Notes
Collected (special) use cases:
- Autoincrement / Sequence => QGIS 2.18 default Werte (QGIS 3 geplant)
- Given polygon layer and a point one, calculate for each polygon feature, the number of points that it covers: https://lists.osgeo.org/pipermail/qgis-user/2016-October/038139.html http://gis.stackexchange.com/questions/212415/referencing-to-features-geometry-in-an-expression/212762#212762
- Add attributes from a layer in the project or an external file (csv) to a layer (or the composer?) using insert expression? Create a custom expression python function to do this: http://nathanw.net/2012/11/10/user-defined-expression-functions-for-qgis/
Plugins:
- ExpressionPlus (for QGIS) Extra functions for the expression engine which didn't make it into QGIS 2.0: https://plugins.qgis.org/plugins/qgsexpressionsplus/
- refFunctions: http://plugins.qgis.org/plugins/refFunctions/
- spatialJoin (depends on refFunctions): http://plugins.qgis.org/plugins/spatialJoin/
- AutoFields (obsolete?) - Automatic Field Calculator Plugin: http://plugins.qgis.org/plugins/AutoFields/
Open:
- How to store a value in PyQGIS? Use QSettings (/.qgis) or QGISProject (.qgs)
- Resource Sharing Plugin (http://plugins.qgis.org/plugins/qgis_resource_sharing/). e.g. https://github.com/mara91/qgis_styles.git