-
Notifications
You must be signed in to change notification settings - Fork 10
QGIS Processing Crowdfund 2021 Ideas
Ujaval Gandhi edited this page Feb 14, 2023
·
24 revisions
| Feature | Details | Comments |
|---|---|---|
| Add support for aggregates and other layer based expressions in Modeler | we need to rework the expression engine to remove a long-standing assumption in it that there's only ever a single project in use in QGIS and that all map layers belong to that project. I'd re-do this so that the expression engine is able to work with multiple layer stores at once, since in the case of modeler we want to be able to reference both layers in the open project AND layers which are stored in a temporary store during model execution. This would allow a whole bunch of expression functions to reference these layers, including the aggregates, display_expression, is_selected, num_selected, get_feature_by_id, represent_value, the new geometry overlay functions, raster_value, layer_property, decode_uri and raster_statistic. That's basically all the existing expression functions which use layers, with the exception of the relation based aggregates. Relations would need special handling, and given that there's no way in a processing model to create/copy/transfer relations I see little point in handling that right now. | |
| Create Spatial Index Automatically for Lines/Polygon layers | ||
| Allow users to enable/disable outputs | Add a toggle to disable generating certain outputs | |
| Fix Feature Iterator in Processing to allow renaming outputs | Currently the feature iterator names the outputs simply with output_0, output_1 etc, making the resulting layers unusable. Add support for expression based naming similar to batch processing |
|
| Add support for Iterators in Modeler | Some use cases 1. I want to use 'Feature Iterator' in modeler. Clip an intermediate layer with all features of a vector layer and then package the resulting layers in a geopackage and dump them in a folder. This is by far the most common request. 2. Take an intermediate layer and iterate over each feature to apply conditional processing on each feature, and merge the result and continue model. example request. 3. I want to iterate over each field and apply an algorithm using each field. examples: Apply attribute index for each field, Download each file specified in a string field of each feature, Run part of the model with inputs from a folder and merge the results. | Reference Videos 1. ArcGIS Iterator (Iterate Layers, a.k.a Batch Processing), 2. ArcGIS Iterate Features - Clip a Layer |
| Export GEOS Tools in QGIS Processing and Expressions | There's a number of GEOS tools which we don't expose yet in QGIS expressions or processing. These include: frechet distance, frechet distance (densified), largest empty circle (creates the largest possible empty circle which avoids a set of obstacle geometries), minimum width ("The minimum diameter is defined to be the width of the smallest band that contains the geometry, where a band is a strip of the plane defined by two parallel lines. This can be thought of as the smallest hole that the geometry can be moved through, with a single rotation.), minimum clearance ("The minimum clearance is the smallest amount by which a vertex could be moved to produce an invalid polygon, a non-simple linestring, or a multipoint with repeated points. If a geometry has a minimum clearance of 'eps', it can be said that: - No two distinct vertices in the geometry are separated by less than 'eps' - No vertex is closer than 'eps' to a line segment of which it is not an endpoint."), shared paths, node ("returns a fully noded version of a collection of linestrings"). It would be good to expose these so that we keep feature parity with shapely/postgis/etc. | |
| Port the "align rasters" tool to Processing, Allow IDW/TIN algorithms in modeler | (one of the last QGIS analysis tools which isn't available via processing) | |
| Fix the native raster calculator when used in a model | https://github.com/qgis/QGIS/issues/42825 | |
| Merge branches after conditional branching | https://github.com/qgis/QGIS/issues/44192 we just need a "ignore missing layers" option in the merge vector layers algorithm to handle this | |
| Add metadata tools for use in models | e.g. "copy layer metadata", "alter layer metadata" | |
| Make processing automatically populate output layer metadata | adding records to the history list describing what operations were performed to generate the output (eg "clipped from c:\my file.shp against c:\my mask.shp by Nyall Dawson (ndawson) on 2021-03-05 12:54") | |
| Add more file handling tools to processing | e.g. a "find matching file" algorithm which could search a path recursively to find a matching file by wildcard | |
| Revamp the Processing batch processing handling | allowing batch execution to be performed in the background and allow execution of batch processing jobs in parallel. | |
| Add a set of algorithms allowing users to “pair” two features from different layers by some condition (e.g. “pair features by nearest”, “pair features by matching attribute”, “pair features by overlap”, "pair features by distance within"). | The users could select which fields from each of the two input layers they want saved to the output (including support for expression based fields, rather like the refactor fields algorithm) and also either the choice of which input layer to take the resultant geometry from OR whether the output geometry should be built by an expression. This would allow users a friendly way to do some advanced spatial analysis which otherwise takes custom coding, e.g.: 1. Matching features between two layers by a common attribute, and creating a layer which contains the shortest line possible between each pair of matching features. 2. Matching point features from one layer to the closest feature in another layer, and creating a layer which contains the input points buffered by the largest distance possible until they just touch the features in the second layer. 3. Matching overlapping polygon features from two layers, and copying the z value from one of these features to the polygon feature from the other layer | |
| Graphical modeler running cache When someone is creating a long model | it's quite common to run it over and over several times to test and fine tune Currently, the model will always run from the very first algorithm, to the last. The alternative would be to keep cached information of each algorithm last run outputs. Then, if we change something in the model, in the graphical modeler, only the algorithms that have been changed and those that depend of it will be rerun, using the inputs of the previous inputs. We should obviously have to buttons for running the model "run full model" and "run only changed tools". | |
| Graphical modeler cache by default | Click any block to load the output from cache | |
| Allow copy/paste of the selected algorithms | This creates duplicates of those tools, and it's a great way to duplicate some branch of the model to then do small changes. Currently, there are two problems. One the copied tools keep the same ID, which in exported scripts can be problematic and even return wrong results. Proposal, when copied, the algorithms show be suffixed with a incremental number (could be usedful even when you add the same tool two or more times, as it would make it easier to distinguish as inputs for the next tools). The second improvement, it that, the algorithms are copied, but not the relations. I mean, if I copy a chain of 4 tools, the pasted versions will use as inputs the inputs of the original ones, and not the copied ones. | |
| Redo the history panel and make it more user-friendly and flexible | Currently it's rather tricky to see what input values were used, and what the outputs are (unless you're familiar with python!). It'd be nice to present these in a more user-friendly way, and especially give better access to the input / output files (e.g. a way to easily re-add these to the map). I think a great help would be to also show the equivalent qgis_process command in the history panel! | |
| Custom wrappers support for parameters | Currently it is possible to create custom widget wrappers for existing parameters in C++ but they can't be used to the full extent. For instance, modeler relies on the wrapper registry only and does not take into account wrapper override. } | |
| Make Model Input/Algorithm Output default for Layers instead of QGIS Project Layers | ||
| Add Validate Model button | Check if using local layers, check for portability | |
| Embed Resources in Models | Allow storing style files, also allow dataset (i.e. timezones) | |
| Port QConsolidate to Core | ||
| Have a PyQGIS script algorithm in Modeler | ||
| Make modeler blocks light up in different colors as the model is running | Pending, running, successful etc. Need to move the modeler output dialog to a panel | |
| Add a search filter box to the panel where you select from multiple layers | ...so that it's easier to pick layers from large projects. Also make sure the "select all" button only applies to filtered results, so you can use the filter and select all to quickly select a bunch of relevant layers instead of clicking them one-by-one | |
| Add a support for fetching algorithms online | So that you can dynamically fetch more models from e.g. https://plugins.qgis.org/models/ or from plugins that ship with algs. | |
| Replace numerous description files with single file | This will speedup QGIS startup (especially on Windows) as instead of opening and closing hundreds of files we will be dealing with a single file. Another related improvement is reworking of description file format into something more maintainable and future proof, e.g. JSON |