Asignación de la distancia de ruta (Spatial Analyst)

Nivel de licencia:BasicStandardAdvanced

Resumen

Calcula la fuente más cercana a cada celda en función del coste acumulativo inferior sobre una superficie de coste a la vez que se tiene en cuenta la distancia de la superficie y los factores de coste vertical y horizontal.

Más información acerca del funcionamiento de las herramientas de distancia de ruta

Uso

Sintaxis

PathAllocation (in_source_data, {source_field}, {in_cost_raster}, {in_surface_raster}, {in_horizontal_raster}, {horizontal_factor}, {in_vertical_raster}, {vertical_factor}, {maximum_distance}, {in_value_raster}, {out_distance_raster}, {out_backlink_raster})
ParámetroExplicaciónTipo de datos
in_source_data

Ubicaciones de origen de entrada.

Esto es un dataset de entidades o ráster que identifica las celdas o las ubicaciones para las cuales se calcula la distancia de menor coste acumulado de cada ubicación de celda de salida.

Para los rásteres, el tipo de entrada puede ser de tipo entero o punto flotante.

Si el ráster de origen de entrada es de punto flotante, se debe establecer el {in_value_raster} y debe ser del tipo entero. El ráster de valores tendrá precedencia sobre cualquier configuración del {source_field}.

Raster Layer | Feature Layer
source_field
(Opcional)

El campo que se utiliza para asignar los valores a las ubicaciones de origen. Debe ser de tipo entero.

Si el {in_value_raster} se ha establecido, los valores de esa entrada tendrán precedencia sobre cualquier configuración para el {source_field}.

Field
in_cost_raster
(Opcional)

Ráster que define la impedancia o el coste de hacer un movimiento planimétrico por medio de cada celda.

El valor de cada ubicación de celda representa la distancia de coste por unidad para moverse a través de la celda. Cada valor de ubicación de celda se multiplica por la resolución de la celda mientras que también se compensa por el movimiento diagonal para obtener el coste total de pasar por medio de la celda.

Los valores del ráster de coste pueden ser enteros o de punto flotante, pero no pueden ser negativos o cero (no puede tener un coste negativo o cero).

Raster Layer
in_surface_raster
(Opcional)

Ráster que define los valores de elevación de cada ubicación de celda.

Los valores se utilizan para calcular la distancia de la superficie actual cubierta al pasar entre las celdas.

Raster Layer
in_horizontal_raster
(Opcional)

Ráster que define la dirección horizontal de cada celda.

Los valores del ráster deben ser enteros comprendidos entre 0 y 360 con 0 grados al norte o hacia la parte superior de la pantalla, y que aumentan en el sentido de las agujas del reloj. Se les debe dar un valor de -1 a las áreas planas. Los valores de cada ubicación se utilizarán en conjunto con el {horizontal_factor} para determinar el coste horizontal incurrido al realizar el movimiento de una celda hacia sus elementos próximos.

Raster Layer
horizontal_factor
(Opcional)

Los objetos de Factor horizontal definen la relación que existe entre el factor de coste horizontal y el ángulo de movimiento relativo horizontal.

Existen varios factores con modificadores que se pueden seleccionar que identifican un gráfico de factor horizontal definido. Además, se puede utilizar una tabla para crear un gráfico personalizado. Los gráficos se utilizan para identificar el factor horizontal utilizado para calcular el coste total de realizar el movimiento hacia una celda próxima.

En las siguientes explicaciones, se utilizan dos acrónimos: "HF" significa factor horizontal, lo que define la dificultad horizontal con la se encuentra al realizar un movimiento desde una celda a la siguiente; y "HRMA" que significa ángulo de movimiento relativo horizontal, que define el ángulo entre la dirección horizontal de una celda y la dirección del movimiento.

El objeto se presenta de las siguientes maneras:

Sus definiciones y parámetros son:

  • HfBinary({zero_factor},{cut_angle})

    Indica si el HRMA es menor al ángulo de corte, si el HF está establecido como el valor asociado con el factor cero; de lo contrario, es infinito.

  • HfForward({zero_factor},{side_value})

    Establece que sólo se permite el movimiento hacia adelante. El HRMA debe ser mayor o igual a 0 y menor que 90 (0 <= HRMA < 90). Si el HRMA es mayor que 0 y menor que 45 grados, el HF de la celda se establece para el valor asociado con el factor cero. Si el HRMA es mayor o igual que 45 grados, entonces se utiliza el valor de modificación del valor lateral. El HF de cualquier HRMA que sea igual o mayor que 90 grados se establece como infinito.

  • HfLinear({zero_factor},{cut_angle},{slope})

    Especifica que el HF es una función lineal de HRMA.

  • HfInverseLinear({zero_factor},{cut_angle},{slope})

    Especifica que el HF es una función lineal inversa de HRMA.

  • HfTable(in_table)

    Identifica que el archivo de tabla será utilizado para definir el gráfico de factor horizontal utilizado para determinar los HF.

Los Modificadores para las palabras clave horizontales son:

  • {zero_factor}: establece el factor horizontal utilizado cuando el HRMA es 0. Este factor posiciona el interceptor y para cualquiera de las funciones del factor horizontal.
  • {cut_angle}: define el ángulo HRMA más allá del cuál el HF se establecerá en infinito.
  • {slope}: establece la pendiente de la línea recta utilizada con las palabras clave de factor horizontal LINEAR y INVERSE_LINEAR. La pendiente se especifica como una fracción de aumento sobre la ejecución (por ejemplo, 45 de pendiente en porcentaje es 1/45, lo que es entrada como 0,02222).
  • {side_value}: establece el HF cuando el HRMA es mayor o igual a 45 grados y menor a 90 grados cuando se especifica la palabra clave del factor horizontal FORWARD.
  • in_table: identifica el nombre de la tabla que define el HF.

Horizontal factor
in_vertical_raster
(Opcional)

Ráster que define los valores z de cada ubicación de celda.

Los valores se utilizan para calcular la pendiente utilizada para identificar el factor vertical incurrido al realizar un movimiento de una celda a otra.

Raster Layer
vertical_factor
(Opcional)

Los objetos del Factor vertical definen la relación que existe entre el factor de coste vertical y el ángulo de movimiento relativo vertical (VRMA).

Existen varios factores con modificadores que se pueden seleccionar que identifican un gráfico de factor vertical definido. Además, se puede utilizar una tabla para crear un gráfico personalizado. Los gráficos se utilizan para identificar el factor vertical utilizado para calcular el coste total de realizar el movimiento hacia una celda próxima.

En las siguientes explicaciones, se utilizan dos acrónimos: "VF" significa factor vertical, lo que define la dificultad vertical con la se encuentra al realizar un movimiento desde una celda a la siguiente; y "VRMA" que significa ángulo de movimiento relativo vertical, que identifica el ángulo de pendiente entre la FROM o celda de procesamiento y la celda TO.

El objeto se presenta de las siguientes maneras:

Sus definiciones y parámetros son:

  • VfBinary({zero_factor},{low_cut_angle},{high_cut_angle})

    Especifica que si el VRMA es mayor que el al ángulo de corte bajo y menor que el ángulo de corte alto, el VF está establecido como el valor asociado con el factor cero; de lo contrario, es infinito.

  • VfLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Indica que el VF es una función lineal de VRMA.

  • VfInverseLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Indica que el VF es una función lineal inversa del VRMA.

  • VfSymLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Especifica que el VF es una función lineal del VRMA tanto en el lado negativo como en el positivo del VRMA, respectivamente y las dos funciones lineales son simétricas con respecto al eje VF (y).

  • VfSymInverseLinear({zero_factor},{low_cut_angle},{high_cut_angle},{slope})

    Especifica que el VF es una función lineal inversa del VRMA tanto en el lado negativo como en el positivo del VRMA, respectivamente y las dos funciones lineales son simétricas con respecto al eje VF (y).

  • VfCos({low_cut_angle},{high_cut_angle},{cos_power})

    Identifica el VF como la función de base coseno del VRMA.

  • VfSec({low_cut_angle},{high_cut_angle},{sec_power})

    Identifica el VF como la función de base secante del VRMA.

  • VfCosSec({low_cut_angle},{high_cut_angle},{cos_power},{sec_power})

    Indica que el VF es la función de base coseno del VRMA cuando el VRMA es negativo y la función de base secante del VRMA cuando el VRMA no es negativo.

  • VfSecCos({low_cut_angle},{high_cut_angle},{sec_power},{cos_power})

    Especifica que el VF es la función de base secante del VRMA cuando el VRMA es negativo y la función de base coseno del VRMA cuando el VRMA no es negativo.

  • VfTable(in_table)

    Identifica que el archivo de tabla se utilizará para definir el gráfico de factor vertical utilizado para determinar los VF.

Los Modificadores de los parámetros verticales son:

  • {zero_factor}: establece el factor vertical que será utilizado cuando el VRMA sea cero. Este factor posiciona el interceptor y de la función especificada. Por definición, el factor cero no es aplicable a ninguna de las funciones verticales trigonométricas (Cos, Sec, Cos_Sec, o Sec_Cos). El interceptor y se define mediante estas funciones.
  • {low_cut_angle}: define el ángulo VRMA debajo del cuál el VF se establecerá en infinito.
  • {high_cut_angle}: define el ángulo VRMA sobre el cuál el VF se establecerá en infinito.
  • {slope}: establece la pendiente de la línea recta utilizada con los parámetros VfLinear y VfInverseLinear. La pendiente se especifica como una fracción de aumento sobre la ejecución (por ejemplo, 45 de pendiente en porcentaje es 1/45, lo que es entrada como 0,02222).
  • in_table: identifica el nombre de la tabla que define el VF.
Vertical factor
maximum_distance
(Opcional)

Define el umbral que los valores de coste acumulado no pueden superar.

Si un valor de distancia de coste acumulado supera este valor, el valor de salida de la ubicación de la celda será NoData. La distancia máxima define la extensión por la cual se calculan las distancias de coste acumulado.

La distancia predeterminada es hasta el borde del ráster de salida.

Double
in_value_raster
(Opcional)

Ráster entero de entrada que identifica los valores de la zona que se deben utilizar para cada ubicación de origen de entrada.

En cada ubicación de origen (celda o entidad), el valor definido por el {in_value_raster} se asignará a todas las celdas asignadas a la ubicación de origen para el cómputo. El ráster de valores tendrá precedencia sobre cualquier configuración del {source_field}.

Raster Layer
out_distance_raster
(Opcional)

Ráster de distancia de ruta de salida.

El ráster de distancia de ruta de salida identifica, para cada celda, la menor distancia de coste acumulado sobre una superficie hacia las ubicaciones de origen identificadas, mientras que representa la distancia de superficie así como los factores de superficie vertical y horizontal.

Un origen puede ser una celda, un conjunto de celdas o una o más ubicaciones de entidades.

El ráster de salida es de tipo de punto flotante.

Raster Dataset
out_backlink_raster
(Opcional)

Ráster de vínculo anterior de coste de salida.

El ráster de vínculo anterior contiene valores de 0 a 8, que definen la dirección o identifican la celda próxima (la celda que sigue) a lo largo de la ruta con menor coste acumulativo desde una celda para alcanzar la fuente de menor coste, mientras que representa la distancia de superficie así como los factores de superficie vertical y horizontal.

Si la ruta es pasar al elemento próximo derecho, se le asignará a la celda el valor 1, 2 para la celda diagonal derecha inferior y continuando en el sentido de las agujas del reloj. El valor 0 se reserva para las celdas de origen.

Posiciones de vínculo
Raster Dataset

Valor de retorno

NombreExplicaciónTipo de datos
out_allocation_raster

El ráster de asignación de la distancia de ruta de salida.

Este ráster identifica la zona de cada ubicación de origen (celda o entidad) que podría alcanzarse con el menor coste acumulativo, teniendo en cuenta la distancia de la superficie y los factores de coste horizontal y vertical.

El ráster de salida no es de tipo entero.

Raster

Ejemplo de código

Ejemplo 1 de PathAllocation (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la herramienta PathDistanceAllocation.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
pathAlloc = PathAllocation("observers.shp", "costraster", "elevation", "backlink2",
                            HfForward(0.5, 1.0), "focalcost.tif", VfBinary(1.0, -30, 30),  
                            25000, "eucdirout", "FID", "c:/sapyexamples/output/optpathdist", 
                            "c:/sapyexamples/output/optpathbl")
pathAlloc.save("c:/sapyexamples/output/allocpath")
Ejemplo de secuencia de comandos de PathAllocation

Calcula la fuente más cercana a cada celda en función del coste acumulativo inferior sobre una superficie de coste a la vez que se tiene en cuenta la distancia de la superficie y los factores de coste vertical y horizontal.

# Name: PathAllocation_Ex_02.py
# Description: Calculates, for each cell, its nearest source based 
#              on the least accumulative cost over a cost surface, 
#              while accounting for surface distance and horizontal 
#              and vertical cost factors. 
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inSource = "observers.shp"
costRast = "costraster"
surfaceRast = "elevation"

# The horizontal factor
inHoriz = "backlink2"
# Create the HfForward Object
zeroFactor = 0.5
sideValue = 1.0
myHorizFactor = HfForward(zeroFactor, sideValue)

#The vertical factor
inVertical = "focalcost.tif"
# Create the VfBinary Object
zeroFactor = 1.0
lowCutAngle = -30
highCutAngle = 30
myVerticalFactor = VfBinary(zeroFactor, lowCutAngle, highCutAngle)

maxDist = 25000
valRaster = "eucdirout"
sourceField = "FID"
optPathDistOut = "c:/sapyexamples/output/optdistpath"
optPathBLOut = "c:/sapyexamples/output/pathblinkout"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute PathAllocation
pathAlloc = PathAllocation(inSource, costRast, surfaceRast, 
                           inHoriz, myHorizFactor, inVertical, myVerticalFactor, 
                           maxDist, valRaster, sourceField, 
                           optPathDistOut, optPathBLOut)

# Save the output 
pathAlloc.save("c:/sapyexamples/output/allocpath02")

Entornos

Temas relacionados

Información sobre licencias

ArcGIS for Desktop Basic: Requiere Spatial Analyst
ArcGIS for Desktop Standard: Requiere Spatial Analyst
ArcGIS for Desktop Advanced: Requiere Spatial Analyst
9/11/2013