Diskussion:Workshop QGIS Python GeoPython 2017: Unterschied zwischen den Versionen
Aus Geoinformation HSR
Stefan (Diskussion | Beiträge) K |
Stefan (Diskussion | Beiträge) K |
||
Zeile 4: | Zeile 4: | ||
* https://etherpad.coredump.ch/p/Python-Workshop | * https://etherpad.coredump.ch/p/Python-Workshop | ||
− | User Defined or ''Custom Expression Functions (custom | + | User Defined or ''Custom Expression Functions (custom EFns)'' can be used in ... |
− | # "Layer > Properties > Tab Fields" in Button "Text Edit" in Default- and in Constraints-Field. | + | # "Server-side" / data-related: |
− | # "Layer > Properties > Tab Style" in "Label with". | + | ## "Select features using an expression" (Layer property). |
− | # | + | ## "Filtering features" while loading from source. Switch to the form view in the attribute table (button on bottom right corner) > click on 'Show All Features' (bottom left) and select 'Advanced Filter (Expression)'. |
− | # "Field Calculator". | + | ## "Layer > Properties > Tab Fields" in Button "Text Edit" in Default- and in Constraints-Field. |
− | # | + | ## "Layer > Properties > Tab Style" in "Label with". |
− | + | ## "Field Calculator" to defining new or virtual fields (Layer property). | |
− | # "Conditional formatting" in the attribute table (Create a new rule and set the condition to the output of a custom | + | ## "Conditional formatting" in the attribute table (Create a new rule and set the condition to the output of a custom EFn). |
− | # " | + | # Analysis-related: |
− | # "Atlas Generation" in the Print Composer. Project > Print Composer > Check 'generate an atlas' > Set CEF based values for page name, filter and output filename. | + | ## "Statistical Summary" Panel (Layer property). |
− | # "Rule based labeling". Layer Properties > Labels > Select Rule based labeling from the drop-down menu > Click on the '+' button and add a CEF based filter (... button). | + | ## "Atlas Generation" in the Print Composer. Project > Print Composer > Check 'generate an atlas' > Set CEF based values for page name, filter and output filename. |
− | # Part of "Geometry generator" in "Style > Symbol Layer Type" | + | # "Client-side" / style-related: |
− | + | ## "Map Tip" tool (Layer property). | |
+ | ## "Rule based labeling". Layer Properties > Labels > Select Rule based labeling from the drop-down menu > Click on the '+' button and add a CEF based filter (... button). | ||
+ | ## Part of "Geometry generator" in "Style > Symbol Layer Type" | ||
+ | |||
+ | |||
+ | ''(Add other places to the list above if you find more)''. | ||
Version vom 7. Mai 2017, 14:40 Uhr
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 (custom EFns) can be used in ...
- "Server-side" / data-related:
- "Select features using an expression" (Layer property).
- "Filtering features" while loading from source. Switch to the form view in the attribute table (button on bottom right corner) > click on 'Show All Features' (bottom left) and select 'Advanced Filter (Expression)'.
- "Layer > Properties > Tab Fields" in Button "Text Edit" in Default- and in Constraints-Field.
- "Layer > Properties > Tab Style" in "Label with".
- "Field Calculator" to defining new or virtual fields (Layer property).
- "Conditional formatting" in the attribute table (Create a new rule and set the condition to the output of a custom EFn).
- Analysis-related:
- "Statistical Summary" Panel (Layer property).
- "Atlas Generation" in the Print Composer. Project > Print Composer > Check 'generate an atlas' > Set CEF based values for page name, filter and output filename.
- "Client-side" / style-related:
- "Map Tip" tool (Layer property).
- "Rule based labeling". Layer Properties > Labels > Select Rule based labeling from the drop-down menu > Click on the '+' button and add a CEF based filter (... button).
- Part of "Geometry generator" in "Style > Symbol Layer Type"
(Add other places to the list above if you find more).
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