Estrarre tutti i punti entro una certa distanza e differenza di altezza da un raster


11

Ho un raster contenente decine di milioni di punti tutti con i dati X, Y e Z definiti. Devo trovare un modo semplice per estrarre e creare un nuovo raster o vettore con TUTTI i punti a una distanza di 720 m l'uno dall'altro (X, Y) e con una differenza di elevazione di 120 m (Z) l'uno dall'altro.

Ho una conoscenza ZERO di SQL e Python. Ho provato a farlo su VBA e ho escogitato un paio di algoritmi ma il tempo di elaborazione è irragionevole e non realistico. Sono sicuro che ci debba essere un semplice approccio GIS per raggiungere questo obiettivo, ma non riesco a trovarlo.

Sto usando ArcMap.


Sto usando ArcMap. Grazie per il tuo commento. Lo cambierò anche nella domanda originale :).
user32882

Dici 720 m in orizzontale e 120 m in verticale ma da dove? Sembra che tu abbia una sorta di nuvola di punti, ma puoi cercare punti che soddisfano pienamente i tuoi criteri da qualsiasi posizione all'interno di questa nuvola. Sicuramente devi avere una sorta di posizione del seme o un altro criterio che non hai menzionato come massimizzare il numero di punti che riempiono i criteri?
Hornbydd,

Come ho detto, sto cercando di "estrarre TUTTI i punti a una distanza di 720 m l'uno dall'altro (X, Y) e ad una differenza di elevazione di 120 m (Z) l'uno dall'altro". Non esiste una "posizione del seme", sto analizzando TUTTI i punti.
user32882

Una delle maggiori sfide che immagino in questo è la rappresentazione del risultato. Sarebbe accettabile avere un risultato raster in cui 0= non ha punti a 720 m di distanza e ± 120 m di altezza, 1= uno o più punti a 720 m di distanza e ± 120 m di altezza? Oppure, devi contare quanti punti soddisfano i criteri?
Erica,

Cara Erica, la prima scelta sarebbe più che accettabile. Non ho l'obbligo di contare il numero di punti che soddisfano questi criteri, ma devo essere in grado di vederli rispetto al raster originale. Secondo il tuo suggerimento, ogni punto / pixel assegnato un valore di 1 avrà un altro o più altri punti entro la quota e la distanza richieste da esso, quindi è perfetto! L'unica domanda che ho è come farlo in modo efficiente?
user32882

Risposte:


13

Un approccio forse troppo semplice sarebbe quello di utilizzare le statistiche focali .

  • Definire il quartiere di interesse come un annulus , con raggio interno appena inferiore a 720 me raggio esterno poco più di 720 m. (Questo dipende in parte dalla dimensione della cella. Ad esempio, le celle da 5m avrebbero un annulus di 717,5 - 722,5; questa potrebbe essere una finestra troppo grande per un raster di celle da 1m.)
  • Utilizza il tipo di statistica MINper trovare il valore di elevazione più basso nel quartiere.
  • Ripeti una seconda volta, usa il tipo di statistica MAXper trovare il valore di altitudine più alto nel quartiere.
  • Utilizzando Raster Calculator , valutare se le differenze di elevazione sono abbastanza grandi. Qualcosa di simile a

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

    Se la differenza minimo originale o la differenza massimo originale supera 120m, il valore è 1, altrimenti 0. ( Nota: non ho verificato la sintassi. )

Questo ti dice solo se una cella ha una o più celle vicine che soddisfano i tuoi criteri di distanza / elevazione, non ti dice quante.


Caspita .... penso che abbia funzionato .... incredibile. Grazie mille. Ho trascorso settimane armeggiando con VBA cercando di farlo quando la soluzione è abbastanza semplice su GIS. Dio ti benedica.
user32882

questo non identifica i punti con un vicino che ha almeno 120 m di dislivello? Ho il sospetto che questo sia lo scopo della domanda, ma la formulazione è "a 120 m di differenza".
Llaves,

@Llaves Sì, hai ragione. Sospetto che trovare esattamente 120 m di differenza a esattamente 720 m richiederebbe uno script molto interessante.
Erica,

Indipendentemente da ciò, ci deve essere un intervallo poiché abbiamo a che fare con il terreno naturale. Per la mia particolare applicazione, differenze di elevazione superiori a 120 metri sono in realtà più interessanti. Avrei dovuto essere più preciso nella mia dichiarazione originale. Grazie comunque ragazzi.
user32882
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.