6 votos

Error al usar con en Map Algebra en Python script

Estoy experimentando un problema doloroso en el medio de una secuencia de comandos de Python que estoy escribiendo. Cuando llego a un Mapa de Álgebra funcionar, he probado con dos diferentes opciones y devuelven un error diferente.

Al principio me escribió:

facteur_Pente = Con((surf_Drainee > 12)  &  (surf_Drainee <= 80)  &  (pente_Rclass <= 24),pente_Rclass + 1, Con((surf_Drainee > 80)  &  (pente_Rclass < 24),pente_Rclass + 2,Con((surf_Drainee > 80)  &  (pente_Rclass == 24),pente_Rclass + 1,pente_Rclass)))

El error de esto es: "TypeError: no se puede concatenar 'str' y 'int' objetos"

Esto parece normal, como he cadenas (surf_Drainee, pente_Rclass) así que me convierta los valores de str con la siguiente:

facteur_Pente = Con(("surf_Drainee" > str(12))  &  ("surf_Drainee" <= str(80))  &  ("pente_Rclass" <= str(24)),"pente_Rclass" + str(1), Con(("surf_Drainee" > str(80))  &  ("pente_Rclass" < str(24)),"pente_Rclass" + str(2),Con(("surf_Drainee" > str(80))  &  ("pente_Rclass" == str(24)),"pente_Rclass" + str(1),"pente_Rclass")))

El problema es que no funciona, y se produce el siguiente error: "RuntimeError: ERROR 000732: Entrada de Trama: conjunto de datos pente_Rclass1 no existe o no es compatible."

Ni siquiera tengo un pente_Rclass1 en mi script!

¿Alguien sabe cómo podría solucionar este problema con el fin de continuar con mi script?

7voto

Prachur Puntos 111

Mi idea inicial es que usted debe tener asignada a la variable pente_Rclass a una representación de cadena de un mapa de bits en lugar de un objeto raster. Esto haría que su primer error. Ver a continuación:

pente_Rclass = "myRasterName"

representa una cadena... si usted está usando esto en arcpy métodos, se asume automáticamente que esta cadena es el nombre de un conjunto de datos en su área de trabajo definida, pero NO va a permitir realizar el mapa de álgebra, sin más información. Intentar definir pente_Rclass como un objeto Raster si usted está en ArcMap 10 o 10.1:

pente_Rclass = arcpy.Raster("myRasterName")

Ahora pente_Rclass es un mapa de bits del objeto y puede ser utilizado en el mapa de álgebra cálculos.

En su segundo intento, solo se trata de la fusión de dos cadenas (la cadena "pente_Rclass" y la representación de cadena de un número "1") que le da "pente_Rclass1". Ese conjunto de datos no existe, por lo tanto el error.

Podría ser útil si usted editar tu pregunta para incluir más de su script, específicamente donde las variables relevantes están siendo asignados.

NOTA: me específicamente, señaló pente_Rclass porque es donde están recibiendo el primer error, sin embargo, todos los de su trama variables deben ser objetos de trama. Si cada una de sus variables son sólo representaciones de cadena, el script se ejecutará su booleano cheques (surf_Drainee > 12, etc), como las cadenas pueden ser comparados con los números en Python, pero no es lo que estás intentando hacer.

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