qgis / QGIS

QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS)
https://qgis.org
GNU General Public License v2.0
10.66k stars 3.02k forks source link

qgis_process: Unable to modify algorithm settings from command-line #58445

Open remtav opened 3 months ago

remtav commented 3 months ago

What is the bug or the crash?

With qgis_process, it's not possible to modify algorithm settings such as "Do not filter" to process all features regardless if they are valid or not.

These settings are available in the GUI, but not from command-line, using qgis_process: image

Steps to reproduce the issue

  1. Build a model in the graphical modeler
  2. Execute in GUI using algorithm setting "Do not filter" for invalid geometries
  3. Execute the same model using qgis_process -> will fail if invalid geometries since default behavior is to stop processing if a single invalid geometry is found

Versions

QGIS version 3.34.1-Prizren QGIS code revision 133927424d Qt version 5.15.3 Python version 3.9.5 GDAL/OGR version 3.8.1 PROJ version 9.3.1 EPSG Registry database version v10.098 (2023-11-24) GEOS version 3.12.1-CAPI-1.18.1 SQLite version 3.41.1 PDAL version 2.6.0 PostgreSQL client version unknown SpatiaLite version 5.1.0 QWT version 6.1.6 QScintilla2 version 2.13.4 OS version Windows 10 Version 2009

Active Python plugins batch_hillshader-master 2.4.4 extract_annotations-master 0.1 geoml-stac-browser-master 1.0.0 geo_sim_processing-building_pattern 0.5 geo_sim_processing-Dan-Eli-master 0.6.1 go2streetview 8.6 HCMGIS 23.7.19 LAStools 1.5 map_tile_loader 0.1.3 wbt_for_qgis 1.0.9 db_manager 0.1.20 grassprovider 2.12.99 MetaSearch 0.3.6 processing 2.12.99

Supported QGIS version

New profile

Additional context

No response

roya0045 commented 3 months ago

Filtering is done through QgsProcessingFeatureSourceDefinition that should be passed as the input.

remtav commented 3 months ago

Filtering is done through QgsProcessingFeatureSourceDefinition that should be passed as the input.

@roya0045 thanks for the hint. any idea how this class can be modified via command-line when calling qgis_process? An environment variable maybe?

roya0045 commented 3 months ago

You could try passing it in the json input string, likely to not work but worth a try.

The solution that I can think of at the moment would be a python wrapper that sets up the condition you want then passing it in the function.

Otherwise add some steps to your workflow to correct data and extract when you want to reduce the likelyhood of errors.