6 votos

¿Eliminar el archivo ráster después de realizar algún procesamiento en QGIS?

Ejecuto este script en mi consola de python en QGIS:

 import os
import processing
from qgis.core import QgsVectorLayer

polygon_file = "E:/polygon.shp"
point_input = "E:/station.shp"
raster_output = 'E:/output_idw.tif'

layer = QgsVectorLayer(point_input, 'layer', 'ogr')
processing.runalg('grass7:v.surf.idw', layer, 8.0, 5.0, 'value', False, "%f,%f,%f,%f" % (110.5, 117, -9, -4.5), 0.001, -1.0, 0.0001, raster_output)
processing.runalg("gdalogr:cliprasterbymasklayer", raster_output, polygon_file, -1, False, False, False, 6, 0, 75, 1, 1, False, 0, False, "", 'E:/output_crop.tif')
os.remove(raster_output)
 

Necesito eliminar el archivo de rastreo unclip (raster_output) directamente haciendo "os.remove (raster_output)" después de procesar pero devuelve "[Error 32] The process cannot access the file because it is being used by another process" ¿Qué debo hacer para poder borrar ese archivo sin QGIS?

5voto

Mue Puntos 2469

Podrías hacer raster_output una capa temporal en lugar de escribirla en el disco. De esta manera, puede evitar tener que eliminarlo manualmente. Puede hacerlo asignando la salida de grass7:v.surf.idw a None y luego llamando al resultado como entrada al siguiente algoritmo.

Así que usted podría intentar algo como esto:

 import os
import processing
from qgis.core import QgsVectorLayer

polygon_file = "E:/polygon.shp"
point_input = "E:/station.shp"

layer = QgsVectorLayer(point_input, 'layer', 'ogr')
raster_output = processing.runalg('grass7:v.surf.idw', layer, 8.0, 5.0, 'value', False, "%f,%f,%f,%f" % (110.5, 117, -9, -4.5), 0.001, -1.0, 0.0001, None)
processing.runalg("gdalogr:cliprasterbymasklayer", raster_output['OUTPUT'], polygon_file, -1, False, False, False, 6, 0, 75, 1, 1, False, 0, False, "", 'E:/output_crop.tif')
 

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X