En esta pregunta se pide dos cosas: (1) identificar las células de contorno y (2) "encontrar" sus elevaciones. A pesar de que "encontrar" podría interpretarse de muchas maneras (¿quieres una tabla de salida de elevaciones? DEM que contiene sólo las células? etc.), hacerlo es sencillo una vez que se han resuelto (1), especialmente si las células de contorno se han representado como un indicador de la cuadrícula: esta es una cuadrícula que tiene un tipo de valor en las células deseadas y otro valor a todas las demás células. Dependiendo de seguimiento de análisis, un 1-0 a un indicador o a una 1-NoData indicador generalmente funcionan mejor (y, o bien se convierte en la otra mediante SetNull
y IsNull
).
El problema se reduce de manera eficiente calcular un indicador de la cuadrícula para las células de contorno. Si podemos caracterizar el límite de la célula como uno que es adyacente a al menos uno de NoData de la célula (donde "NoData" incluye hipotética de las células que se encuentran más allá de los bordes de la red propia), entonces la solución, evidentemente, requiere de un "centro" o barrio de la operación. Una forma es a su vez el DEM en un 1-0 indicador; esto se puede hacer con Not
y IsNull
. A continuación, una focal de la suma de este indicador será menor que el barrio de tamaño exactamente donde hay ceros en el barrio: estas serían todas las células de contorno y original de todos los NoData células.
Para resumir, un eficiente trama basada en el flujo de trabajo para crear un indicador de la cuadrícula de todas las células de contorno a partir de un DEM es dada por este pseudocódigo:
i = Not(IsNull('DEM')) # Store a DEM indicator in temporary grid `i`
n = FocalSum('i', ...) < x # Store a near-boundary indicator in temporary grid `n`
'i' & `n` # The desired boundary indicator
El x
representa el barrio de tamaño; por ejemplo, cuando se utiliza un 3 por 3 barrio, x
serían 9
. Los "..." FocalMean
indica que los argumentos necesarios para especificar el barrio: los diferentes barrios corresponden a diferentes definiciones de lo que significa estar en el "límite". Consulte la página de ayuda para los detalles sintácticos. El &
operador es Spatial Analyst "Boolean" la cual será la verdadera exactamente cuando tanto sus argumentos son verdaderos: este recoge aquellas células que son parte de la DEM (indicado por cuadrícula i
) y tienen valores NoData en sus barrios (indicado por cuadrícula n
).
Como ejemplo, aquí está una esquina de una mucho más grande DEM, se muestra hillshaded:
Su indicador i
está en constante 1, donde el DEM tiene valores, que se muestra aquí como el gris:
El centro de la suma de i
, el uso de un 3 por 3 vecindario, puede tener valores entre 0 y 9, se muestra en esta temperatura como mapa (de graduarse de la red de 0 a través de verdes y azules y, finalmente, convertirse en transparente para el valor máximo de 9, revelando el gris de i
sí):
Se puede ver que toda la acción en todo el perímetro, como debe ser. La superposición de esas células que están a menos de 9 con el indicador de i
muestra de las células que forman parte de la DEM y en su borde, que se expone aquí en rojo superpuesto en el original DEM:
(Observe que la frontera en este caso incluye una interna de la celda que faltaba un valor: es cerca del centro de la parte inferior).
Este procedimiento consiste en sólo cinco operaciones de grid (Not
, IsNull
, FocalSum
, <
y &
), todos de los cuales son muy rápidas de ejecutar. Por lo tanto, incluso si la intención última es a la salida de una tabla de valores o un punto de shapefile o algunos otros no raster representación de los límites de los valores de las celdas, será más fácil y computacionalmente mucho más eficiente para llegar a este punto con las operaciones de trama antes de la conversión a otra representación.