1 votos

Error al procesar.runalg

He estado trabajando en este código pero estoy recibiendo el siguiente error:

Traceback (most recent call last): File "", line 1, in File "c:/users/miguel~1/appdata/local/temp/tmpdsyhqn.py", line 17, in processing.load(reproj["G:\pyQGIS\MIRAR EN MI ORDENADOR\nuevo.asc"]) KeyError: 'G:\pyQGIS\MIRAR EN MI ORDENADOR\nuevo.asc'

En QGIS, este error se imprime con "\" en cada ruta, incluso si sólo escribo "\" en mis rutas del código.

import processing   
from processing.core.Processing import Processing
from qgis.core import *
from qgis.gui import *

#Processing.initialize()
#Processing.updateAlgsList()

raster = QgsRasterLayer("G:\\pyQGIS\MIRAR EN MI ORDENADOR\\MDT05-0559-H30-LIDAR.asc","MDT05")
print rasterLyr.isValid()
crs = QgsCoordinateReferenceSystem(25830, QgsCoordinateReferenceSystem.EpsgCrsId)
raster.setCrs(crs)
QgsMapLayerRegistry.instance().addMapLayers([rasterLyr])

#25830
reproj = processing.runalg("gdalogr:warpreproject", raster, "EPSG: 25830", "EPSG:4326", '0', 0, 0, 0, 0, 2, 1, 1, False, 1, False, "extraParam", "G:\\pyQGIS\\MIRAR EN MI ORDENADOR\\nuevo.asc")
processing.load(reproj["G:\\pyQGIS\\MIRAR EN MI ORDENADOR\\nuevo.asc"])

¿Puedes decirme el código? print(repr(reproj)) que hace la siguiente salida?

{'OUTPUT': 'G:\\pyQGIS\\MIRAR_COMP\\nuevo.tif'}

1voto

Michael Puntos 11

El valor de retorno de processing.runalg es un diccionario que contiene pares de claves y mapas donde las claves son definidas por el algoritmo.

En el caso de gdalogr:warpreproject hay una salida con el nombre OUTPUT creado que apunta al lugar donde está el resultado. Para acceder a él, puedes utilizar el siguiente código:

processing.load(reproj['OUTPUT'])

Acerca de \ y /

Nota: Windows normalmente utiliza \ para separar rutas, lo cual fue una decisión terrible para los programadores porque el mismo carácter se utiliza para las secuencias de escape en las cadenas, por eso hay que duplicarlas. A veces.

Recomiendo utilizar siempre / en lugar de \ . Es entendido por Windows pero también por otras plataformas, por lo que hace que tu código sea portable. También es más fácil de leer y escribir porque no tienes que duplicar el carácter. Si te encuentras con problemas puedes seguir utilizando pitones os.sep que se traducirá dinámicamente al carácter apropiado para la plataforma actual.

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