On Fri, 12 Mar 2021 at 07:26, C Hamilton <adenacult...@gmail.com> wrote:
>
> For one of my QIGS processing algorithms I have a destination folder, 
> QgsProcessingParameterFolderDestination, where one or more GeoTIFF images are 
> created. Once these images are created, how do I load them so that they 
> display in QGIS from the "processAlgorithm" method? I had thought that this 
> might work where I would iterate through each image created?

Definitely DON'T do this in the processAlgorithm method if your
algorithm is running in a background thread. It's not thread safe to
add layers to the main project from a background thread.

You could do it in a postProcessAlgorithm override though, as that is
guaranteed to run in the main thread. Just be ultra-cautious not to
store a layer created on the background thread and then try to access
this from postProcessAlgorithm -- layers have thread affinity to the
thread which created them, and can't just be accessed from any other
thread. To be safe you should always create a new layer from the
desired uri instead.

> path = path_to_the_image
> rlayer = QgsRasterLayer(path, name_of_image)
> QgsProject.instance().addMapLayer(rlayer, True)

also note that you should use context.project() instead of
QgsProject.instance() whenever you are accessing the project from a
processing algorithm -- this will ensure your algorithm works
correctly from the command line qgis_process tool!

Nyall
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to