Extraer todos los puntos dentro de una cierta distancia y diferencia de altura de un Ráster

11

Tengo un ráster que contiene decenas de millones de puntos, todos con datos X, Y y Z definidos. Necesito encontrar una manera simple de extraer y crear un nuevo ráster o vector con TODOS los puntos a una distancia de 720 m entre sí (X, Y) y a una diferencia de elevación (Z) de 120 m entre sí.

Tengo cero conocimiento de SQL y Python. He estado tratando de hacer esto en VBA y se me ocurrió un par de algoritmos, pero el tiempo de procesamiento no es razonable ni realista. Estoy seguro de que debe haber un simple enfoque SIG para lograr esto, pero parece que no puedo encontrarlo.

Estoy usando ArcMap.

usuario32882
fuente
Estoy usando ArcMap. Gracias por tu comentario. También lo cambiaré en la pregunta original :).
user32882
¿Dices 720m en horizontal y 120m en vertical pero desde dónde? Parece que tiene algún tipo de nube de puntos, pero podría buscar puntos que llenen completamente sus criterios desde cualquier ubicación dentro de esta nube. ¿Seguramente debe tener algún tipo de ubicación de semillas u otro criterio que no haya mencionado, como maximizar el número de puntos que llenan completamente los criterios?
Hornbydd
Como dije, estoy tratando de "extraer TODOS los puntos a una distancia de 720 m uno del otro (X, Y) y con una diferencia de elevación (Z) de 120 m uno del otro". No hay una "ubicación inicial", estoy escaneando TODOS los puntos.
user32882
Uno de los mayores desafíos que imagino con esto es cómo se retrata el resultado. ¿Sería aceptable tener un resultado ráster en el que 0= no tiene puntos a 720 m de distancia y ± 120 m de elevación, 1= uno o más puntos a 720 m de distancia y ± 120 m de elevación? O, ¿necesita contar cuántos puntos cumplirían los criterios?
Erica
Querida Erica: La primera opción sería más que aceptable. No necesito contar cuántos puntos cumplen con este criterio, pero necesito poder verlos en comparación con el ráster original. Según su sugerencia, cualquier punto / píxel asignado a un valor de 1 tendrá otro o varios puntos dentro de la elevación y la distancia requeridas, ¡así que eso es perfecto! La única pregunta que tengo es cómo lograr esto de manera eficiente.
user32882

Respuestas:

13

Un enfoque quizás demasiado simple sería utilizar Estadísticas Focales .

  • Defina el vecindario de interés como un anillo , con un radio interno de poco menos de 720 my un radio externo de poco más de 720 m. (Esto depende en cierta medida del tamaño de la celda. Por ejemplo, las celdas de 5 m tendrían un anillo de 717.5 - 722.5; sin embargo, esta podría ser una ventana demasiado grande para un ráster de celda de 1 m).
  • Use el tipo de estadísticas MINpara encontrar el valor de elevación más bajo en el vecindario.
  • Repita por segunda vez, use el tipo de estadísticas MAX, para encontrar el valor de elevación más alto en el vecindario.
  • Con la Calculadora ráster , evalúe si las diferencias de elevación son lo suficientemente grandes. Algo como

    Con((Abs("DEM" - "FSMin") > 120) | (Abs("DEM" - "FSMax") > 120), 1, 0)

    Si la diferencia original mínima o la diferencia original máxima supera los 120 m, el valor es 1, de lo contrario 0. ( Nota: no he probado la sintaxis ) .

Esto solo le dice si una celda tiene una o más celdas vecinas que cumplen con sus criterios de distancia / elevación, no le dice cuántos.

Erica
fuente
Wow ... creo que funcionó ... increíble. Muchas gracias. He pasado semanas jugando con VBA tratando de hacer esto cuando la solución es bastante simple en SIG. Dios te bendiga.
user32882
¿No identifica esto los puntos con un vecino que tiene al menos 120m de diferencia en elevación? Sospecho que esa es la intención de la pregunta, pero la redacción es "a una diferencia de 120 m".
Llaves
@Llaves Sí, tienes razón. Sospecho que encontrar exactamente 120m de diferencia a exactamente 720m requeriría un script muy interesante.
Erica
De todos modos, tiene que haber un intervalo ya que estamos tratando con terreno natural. Para mi aplicación particular, las diferencias de elevación superiores a 120 metros son realmente más interesantes. Debería haber sido más preciso en mi declaración original. Gracias chicos de todos modos.
user32882