Come impostare tutti i pixel con valore <= 0 su "nodata" in DEM raster?


28

Ho un raster DEM con valori di pixel compresi tra circa 3000 e -0.0003. Ho bisogno di impostare tutti i pixel con un valore di 0 e smaler (<= 0) su "nodata" (per i calcoli raster successivi e per ridurre le dimensioni del file).

Mi sembra che questo sia un compito per il calcolatore raster (imposta il valore dei pixel <= 0 su "nodata") o una riclassificazione (imposta il valore dei pixel <= 0 su "nodata" e mantieni tutti gli altri valori) ma non lo faccio competenza.


Devo anche impostare tutti i pixel con un valore <0 su "nodata". Quindi il post di vascobnunes non mi aiuta.
MAPPA

Siamo spiacenti, ma non mi aiuta a cambiare lo stile di visualizzazione del raster. Devo modificare con cura il mio file raster.
MAP

Dai commenti e dai suggerimenti di chiusura sembra che dovresti modificare la tua Domanda per chiarire esattamente cosa vuoi e cosa hai già provato.
PolyGeo

Risposte:


29

Non ho trovato una soluzione a uno strumento, ma è possibile innanzitutto utilizzare la calcolatrice raster per portare a zero tutti i valori al di sotto di una determinata soglia e quindi utilizzare gdal_translate con -a_nodata 0 per trasformare lo 0 in nodata.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


17

Ecco le espressioni mapcalc di GRASS per impostare un intervallo su NULL:

r.mapcalc "dem_corrected = if(dem<=0, null(), dem)"

Ottimo, funziona per me!
ilFonta,

16

Può essere eseguito in un solo passaggio in QGIS nel calcolatore raster.

In QGIS3, per un livello raster denominato "x", utilizzare la seguente espressione:

(("x">0)*"x") / (("x">0)*1 + ("x"<=0)*0)

Questo trucco mappa i valori raster x> 0 nel rapporto x / 1 = x e i valori raster x <= 0 nel rapporto 0/0 = NaN. Questo NaN viene visualizzato come FLOAT_MIN (aka -3.402832 ... e + 38) se il raster è float a 4 byte.

Stranamente questa domanda sembra essere stata in giro da un po ', con (per quanto mostra la mia rapida ricerca su Google oggi) la maggior parte degli intervistati afferma che non può essere fatta in un solo passaggio. Certamente non dovrebbe essere necessario essere hackerato in questo modo. Anche la documentazione di QGIS potrebbe essere migliore.


10

Mille grazie a Dominik. La mia prima risposta non è corretta per QGIS 2.8.3 (l'espressione "myraster@1" > 0restituisce 0 o 1 per l' input non nodata , per l' input nodata restituisce nodata ).

La seguente espressione del calcolatore raster QGIS dovrebbe essere sufficiente (livello raster denominato "miracolo"), poiché il calcolatore raster QGIS imposta tutti i pixel che non soddisfano la condizione su nodata :

("myraster @ 1"> 0) * "myraster @ 1"

La seguente soluzione si basa su https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.html e funziona con QGIS 2.8.3 con SAGA 2.1.2.

Nell'elaborazione QGIS, utilizzare il calcolatore SAGA Raster e immettere quanto segue in Formula :

ifelse(g1=0, 0/0, ifelse(g1<0, 0/0, g1))

o

ifelse(a=0, 0/0, ifelse(a<0, 0/0, a))

Ciò trasformerà tutti i valori inferiori o uguali a 0 in nodati (0/0).


questo non funziona perché i pixel che non soddisfano la condizione sono 0, non nodata
Dominik

Super. Può usarlo per il filtro valore raster: ad esempio filtro (0,5; 23]: ifelse (g1 <0,5, 0/0, ifelse (g1> 23, 0/0, g1))
lolipop

10

Puoi anche salvare il layer (tasto destro, salva con nome ...) e specificare un intervallo di nodati. Ciò manterrà i nodati originali e creerà nuovi nodati per l'intervallo di valori specificato.


Questa è la soluzione migliore
Alexander

5

Ho avuto un problema simile, ma ENTRAMBI i valori che volevo convertire in valori senza dati E senza dati nel raster.

Identificare i risultati

Sono venuto a questa pagina per chiedere aiuto, ma penso che ci sia un avvertimento sugli approcci qui. I metodi di @underdark e @Micha sembrano funzionare solo dove non sono presenti valori senza dati nel raster.

Per ovviare a questo, è necessario convertire sia i valori senza dati, sia i valori che si desidera convertire in nessun dato, in un numero coerente. È quindi possibile utilizzare il secondo passaggio di @underdark.

Per fare ciò, utilizzare la Casella degli strumenti di elaborazione> Riclassifica valori griglia (SAGA) per convertire contemporaneamente i valori e i valori senza dati in un numero comune (ad esempio -999). In particolare, utilizzare il metodo "intervallo" e specificare l'intervallo. Quindi, in Sostituisci valori senza dati, scegli questo stesso valore (es. -999). Deseleziona sostituisci altri valori. Funziona per una singola modifica del valore o anche per modifiche più complesse.

Quindi segui il metodo di @underdark e salva il raster usando Raster> Conversione> Traduci, e spunta nessun dato, inserendo il valore che hai usato (es. -999).


-3

Fare clic con il tasto destro del mouse sul raster, selezionare Proprietà raster, selezionare la terza opzione "Trasparenza", nella scheda Nessun valore di dati, aggiungere un valore aggiuntivo 0 e fare clic su Applica. Questa è l'opzione simile "Visualizza valore di sfondo" in Arcgis.


4
Non è un buon metodo. In realtà non stai modificando i dati, quindi se hai bisogno di calcolare le statistiche o fare analisi i risultati non saranno corretti
khafen
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.