On Wed, 12 Aug 2020 at 02:28, Bourdon, Jean-François (DIF)
<[email protected]> wrote:
>
> Thanks a lot Nyall!
> I must say that it's not obvious for a newcomer to see where the problem is 
> and how to fix it. With you pointer, I ended up to one of your answer on GIS 
> SE to learn how to return FlagNoThreading flag. So it closes my issue with 
> the raster file deletion, but it now causes the same problem elsewhere with 
> the deletion of a shapefile.

This one was fixed in recent versions -- either upgrade to 3.14, or
downgrade to the most recent LTR. 3.12 is EOLed and didn't get this
fix.

Nyall


>
> # Convert Shapefile to Geopackage with error without threading
> path_SHP = "C:/temp/vector.shp"
> vlayer_SHP = QgsVectorLayer(path_SHP)
> options_GPKG = QgsVectorFileWriter.SaveVectorOptions()
> options_GPKG.driverName = "GPKG"
> options_GPKG.layerName = "streams"
> QgsVectorFileWriter.writeAsVectorFormatV2(vlayer_SHP, 
> "C:/temp/vector_package.gpkg", QgsCoordinateTransformContext(), options_GPKG)
>
> QgsProject.instance().addMapLayer(vlayer_SHP, False)
> QgsProject.instance().removeMapLayer(vlayer_SHP.id())
> QgsVectorFileWriter.deleteShapeFile(path_SHP)
>
>
>
> # Convert Shapefile to Geopackage without error and without threading
> path_streams_SHP = "C:/temp/vector.shp"
> processing.run("native:package", 
> {'LAYERS':[path_streams_SHP],'OUTPUT':"C:/temp/vector_package.gpkg",'OVERWRITE':True,'SAVE_STYLES':False})
> QgsVectorFileWriter.deleteShapeFile(path_streams_SHP)
>
>
>
>
> Jean-François Bourdon, ing.f.
> Analyste en télédétection
> Direction des inventaires forestiers
> Ministère des Forêts, de la Faune et des Parcs
> 5700, 4e Avenue Ouest, local A-108
> Québec (Québec) G1H 6R1
> Téléphone : 418 627-8669, poste 4304
> [email protected]
> mffp.gouv.qc.ca
>
> -----Message d'origine-----
> De : Nyall Dawson [mailto:[email protected]]
> Envoyé : 10 août 2020 18:46
> À : Bourdon, Jean-François (DIF) <[email protected]>
> Cc : [email protected]
> Objet : Re: [QGIS-Developer] Unload QgsVectorLayer/QgsrasterLayer
>
> On Tue, 11 Aug 2020 at 06:37, Bourdon, Jean-François (DIF) 
> <[email protected]> wrote:
> >
> > Hi list,
> >
> >
> >
> > I have a very simple problem: I can’t delete a file after loading it with 
> > QgsVectorLayer() or QgsRasterLayer() within a script (custom Processing 
> > Provider) as I get the error saying the file is still in use. My code to 
> > replicate:
> >
> >
> >
> > path_raster = "C:/temp/raster.tif"
> >
> > rlayer = QgsRasterLayer(path_raster, "flow")
> >
> > QgsProject.instance().addMapLayer(rlayer, False)
> >
> > QgsProject.instance().removeMapLayer(rlayer.id())
> >
> > os.remove(path_raster)
> >
> >
> >
> > However, the same code directly put inside the Python Console within QGIS 
> > works, but it won’t if used inside a Processing Provider plugin. I also 
> > tried using del rlayer without success. There is several questions about 
> > releasing QGIS’ lock on files on GIS StackExchange (e.g. here and here) but 
> > it doesn’t seem to work for everyone. Maybe it was working in version 2.X, 
> > but it fails on 3.12 (Windows 10).
>
> I suspect your algorithm is incorrectly running in a thread. You CAN'T do 
> this if your algorithm directly access the project instance -- it's not 
> thread safe and the layers are likely not getting deleted at all.
> Try returning the FlagNoThreading flag from your algorithm's flags() override.
>
> Nyall
>
>
> >
> >
> >
> > Many thanks
> >
> >
> >
> > Jean-François Bourdon, ing.f.
> >
> > Analyste en télédétection
> > Direction des inventaires forestiers
> > Ministère des Forêts, de la Faune et des Parcs 5700, 4e Avenue Ouest,
> > local A-108 Québec (Québec) G1H 6R1 Téléphone : 418 627-8669, poste
> > 4304 [email protected]
> > mffp.gouv.qc.ca
> >
> >
> >
> > _______________________________________________
> > QGIS-Developer mailing list
> > [email protected]
> > List info: 
> > https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.osgeo.org%2Fmailman%2Flistinfo%2Fqgis-developer&amp;data=02%7C01%7C%7C72ed7712914543cfa40908d83d7f1f60%7C8705e97737814f4790e1c84c8b884da1%7C0%7C0%7C637326963481150210&amp;sdata=6%2FDPX0W3P6BHnYAdJ9%2BX%2FTdD%2BhYQIzeuM5gbMayTEOo%3D&amp;reserved=0
> > Unsubscribe: 
> > https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.osgeo.org%2Fmailman%2Flistinfo%2Fqgis-developer&amp;data=02%7C01%7C%7C72ed7712914543cfa40908d83d7f1f60%7C8705e97737814f4790e1c84c8b884da1%7C0%7C0%7C637326963481150210&amp;sdata=6%2FDPX0W3P6BHnYAdJ9%2BX%2FTdD%2BhYQIzeuM5gbMayTEOo%3D&amp;reserved=0
>
_______________________________________________
QGIS-Developer mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to