Sentencias complejas

Disponible con una licencia de Spatial Analyst.

Disponible con licencia de Image Analyst.

El Álgebra de mapas permite crear una sentencia que comprenda varios operadores y herramientas en una sentencia única. La capacidad de introducir múltiples operadores y herramientas en una única sentencia permite modelar interacciones complejas de forma más eficaz y puede reducir el tiempo total de procesamiento. Las expresiones complejas no se limitan a la funcionalidad proporcionada por las herramientas de la extensión Spatial Analyst de ArcGIS; estas pueden incluir herramientas de otras cajas de herramientas. Existen reglas de interacción específicas que debe seguir para ejecutar correctamente las sentencias complejas que cree.

Reglas de sentencias complejas

Utilice la siguiente lista de reglas para guiar la creación de sentencias complejas válidas.

  • En las sentencias complejas, solo la salida a la izquierda del signo igual se convierte en un objeto ráster.
  • El orden de ejecución de una expresión está determinado por el paréntesis y el nivel de jerarquía de los operadores utilizados. Para obtener más información sobre la jerarquía del operador, consulte la Tabla de jerarquía del operador.
    outRaster = Raster("inras1") + Raster("inras2") / Raster("inras3")
  • En la sentencia anterior, inras2 se divide entre inras3 y el resultado se suma a inras1.

    Nota:

    Es importante saber el nivel de jerarquía de los operadores. Por ejemplo, los operadores booleanos (~, &, ^, |) tienen un nivel de jerarquía mayor que los operadores relacionales (<, <=, >, >=, ==, !=), lo que afecta la manera en que crea sus expresiones. Para obtener más información sobre la jerarquía del operador, consulte la Tabla de jerarquía del operador.

  • Puede utilizar paréntesis para controlar el orden de ejecución. Puede utilizar paréntesis anidados, en cuyo caso la expresión dentro de los paréntesis internos se debe procesar primero, sin importar el valor de jerarquía de los operadores.
    outRas = Raster("inras1") / (Raster("inras2") + Raster("inras3"))

    En la sentencia anterior, inras1 se divide entre la suma de inras2 e inras3.

  • Cuando se utilizan varios operadores booleanos (~, &, ^, |) o relacionales (<, <=, >, >=, ==, !=) consecutivamente en una única expresión, se deben usar paréntesis. Por ejemplo, los paréntesis son necesarios en la siguiente expresión (a>2) & (a<5).
    outRas = (Raster("a") > 2 ) & ( Raster("a") < 5)
    Explorar:

    Algunas expresiones no requieren paréntesis, pero es posible que en lugar de ello deban reescribirse. Por ejemplo, una expresión de la forma a < b < c no se ejecutará, y si se agregan paréntesis se cambiará el significado de la expresión. Por tanto, para obtener una ejecución correcta, debe volver a escribir esta expresión en la forma (a < b) & (b < c).

  • En sentencias complejas se pueden utilizar operadores, variables, números y herramientas.
    outRas = Sin("inras1") + Raster("inras2") + 8
    const = 10
    outRas = Raster("inras1") + 2 * const
  • Todas las reglas aplicables a los paréntesis en sentencias creadas con operadores también se aplican a las sentencias creadas con herramientas y operadores. La herramienta o el operador que se encuentre dentro del paréntesis anidado más profundo serán procesados primero.
    num = 10
    outRas = (ZonalStatistics((Raster("inras2") + Raster("inras3")),
                             "Value", "valueras", "MAXIMUM") - num ) / 8

    En la sentencia anterior, la suma de inras2 e inras3 se utiliza como entrada de la herramienta Estadísticas zonales. El valor de num se resta antes de la división.

  • En una serie de sentencias, la salida de una sentencia anterior se puede utilizar como entrada en una sentencia posterior.
    outAdd = Raster("inras1") + Raster("inras2")
    outRas = FocalStatistics(outAdd, NbrCircle(5, "Map"), "MEAN")

    En el ejemplo anterior, outAdd es un objeto ráster creado por la suma de inras1 e inras2. Puesto que outAdd es una variable, no se necesitan comillas cuando se utiliza como entrada de la herramienta Estadísticas focalizadas posterior.

  • Cualquier herramienta se puede integrar en otra herramienta, tenga como resultado un ráster o una clase de entidad. La salida requerida de la herramienta integrada se utiliza como la entrada de la herramienta exterior.
    outdistance = EucDistance(ContourList("elevation", "#", [1500]))
    En este ejemplo, la salida de la herramienta Lista de curva de nivel se utiliza como la entrada de la herramienta Distancia euclidiana.
    dist = EucDistance(arcpy.Select_analysis("schools", "#", "Pop>2000"))
    En el ejemplo anterior, la salida de la herramienta Seleccionar de la caja de herramientas Análisis se utiliza como la entrada de la herramienta Distancia euclidiana.
    Nota:

    Dado que la herramienta integrada crea una salida que es solo una fase intermedia en un flujo de trabajo más extenso, el argumento de salida se puede sustituir por el símbolo de almohadilla "#", que permite que la herramienta cree una ruta y un nombre únicos para esta salida temporal. El uso del símbolo de almohadilla se analiza con más detalle en la sección Salida de la herramienta del tema de ayuda Utilizar herramientas en Python.

  • Para utilizar una salida opcional desde una herramienta en una expresión, se debe utilizar el nombre de dataset o la variable que represente el dataset que debe utilizarse.
    costDist = CostDistance("source", "in_cost", 15000, "out_bklink") 
    costOut = CostPath("dest", costDist, "out_bklink")
    En el ejemplo indicado arriba, el ráster de vínculo de menor coste de salida es la salida en el espacio de trabajo con el nombre "out_bklink".
    bklink = "C:/results/out_bklink"
    costDist = CostDistance("source", "in_cost", 15000, bklink) 
    costOut = CostPath("dest", costDist, bklink)
    En el ejemplo indicado anteriormente, el ráster de menor coste se define mediante una variable antes de que se ejecute la herramienta. La variables indica la ubicación y el nombre que tendrá el ráster de vínculo de menor coste de salida.

Temas relacionados