¿Cómo configurar todos los píxeles con valor <= 0 a "nodata" en el ráster DEM?

28

Tengo un ráster DEM con valores de píxeles entre aproximadamente 3000 y -0,0003. Necesito establecer todos los píxeles con un valor de 0 y más pequeño (<= 0) en "nodata" (para cálculos posteriores de ráster y para reducir el tamaño del archivo).

Me parece que esta es una tarea para la calculadora ráster (establecer el valor de píxeles <= 0 a "nodata") o una reclasificación (establecer el valor de píxeles <= 0 a "nodata" y mantener todos los demás valores) pero no saber como.

MAPA
fuente
También necesito configurar todos los píxeles con un valor de <0 a "nodata". Entonces la publicación de vascobnunes no me está ayudando.
MAPA
Lo siento, pero no me está ayudando a cambiar el estilo de visualización del ráster. Necesito editar pysicaly mi rasterfile.
MAPA
Según los comentarios y las sugerencias de cierre, parece que debería editar su pregunta para aclarar con precisión lo que desea y lo que ya ha intentado.
PolyGeo

Respuestas:

29

No encontré una solución de una herramienta, pero primero puede usar la calculadora ráster para convertir todos los valores por debajo de cierto umbral a cero y luego usar gdal_translate con -a_nodata 0 para convertir el 0 en nodata.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

bajo oscuro
fuente
17

Aquí están las expresiones mapcalc de GRASS para establecer un rango en NULL:

r.mapcalc "dem_corrected = if(dem<=0, null(), dem)"
Micha
fuente
¡Genial, funciona para mí!
ilFonta
16

Se puede hacer en un solo paso en QGIS en la calculadora ráster.

En QGIS3, para una capa ráster llamada "x", use la siguiente expresión:

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

Este truco asigna valores ráster x> 0 en la relación x / 1 = x, y valores ráster x <= 0 en la relación 0/0 = NaN. Este NaN se representa como FLOAT_MIN (también conocido como -3.402832 ... e + 38) si el ráster es flotante de 4 bytes.

Curiosamente, esta pregunta parece haber existido por un tiempo, con (según mi búsqueda rápida en Google hoy) la mayoría de los encuestados dicen que no se puede hacer en un solo paso. Ciertamente no debería necesitar ser pirateado de esta manera. La documentación de QGIS también podría ser mejor.

Colin Stark
fuente
10

Muchas gracias a Dominik. Mi primera respuesta no es correcta para QGIS 2.8.3 (la expresión "myraster@1" > 0devuelve 0 o 1 para no nodata entrada para nodata entrada devuelve sin datos ).

La siguiente expresión de la Calculadora ráster QGIS debería ser suficiente (capa ráster denominada "myraster"), ya que la Calculadora ráster QGIS establece todos los píxeles que no satisfacen la condición en nodata :

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

La siguiente solución se basa en https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.html , y funciona para QGIS 2.8.3 con SAGA 2.1.2.

En Procesamiento QGIS, use la calculadora Ráster SAGA e ingrese lo siguiente en Fórmula :

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

o

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

Esto convertirá todos los valores menores o iguales a 0 en nodata (0/0).

Håvard Tveite
fuente
esto no funciona porque los píxeles que no satisfacen la condición son 0, no nodata
Dominik
Súper. Puede usarlo para el filtro de valor ráster: Por ejemplo, filtro (0.5; 23]: ifelse (g1 <0.5, 0/0, ifelse (g1> 23, 0/0, g1))
lolipop
10

También puede guardar la capa (clic derecho, guardar como ...) y especificar un rango de nodos. Esto mantendrá los nodatos originales y creará nuevos nodatos para el rango de valores especificado.

Joost Beckers
fuente
Esta es la mejor solución
Alexander
5

Tuve un problema similar, pero tenía AMBOS valores que quería convertir a sin datos y valores sin datos existentes en el ráster.

Identificar resultados

Vine a esta página en busca de ayuda, pero creo que hay una advertencia sobre los enfoques aquí. Los métodos de @underdark y @Micha solo parecen funcionar donde no hay valores sin datos existentes en el ráster.

Para evitar esto, debe convertir los valores sin datos y los valores que desea convertir en sin datos, a un número consistente. Entonces está bien usar el segundo paso de @underdark.

Para hacer esto, use la Caja de herramientas de procesamiento> Reclasificar valores de cuadrícula (SAGA) para convertir los valores y los valores sin datos a un número común (por ejemplo, -999), al mismo tiempo. Específicamente, utilice el método "rango" y especifique el rango. Luego, en reemplazar valores sin datos, elija este mismo valor (por ejemplo, -999). Desmarque reemplazar otros valores. Esto funciona para un cambio de valor único o cambios más complejos también.

Luego siga el método de @underdark y guarde el ráster usando Ráster> Conversión> Traducir y marque sin datos, ingresando el valor que usó (por ejemplo, -999).

Sarracenia
fuente
-3

Haga clic derecho en el ráster, vaya a las propiedades del ráster, seleccione la tercera opción "transparencia", en la pestaña sin valor de datos, agregue el valor adicional 0 y haga clic en aplicar. Esta es la opción similar "mostrar valor de fondo" en arcgis.

Bharadwaj AK
fuente
44
No es un buen método. En realidad, no está cambiando los datos, por lo que si necesita calcular estadísticas o hacer un análisis, los resultados serán incorrectos
Khafen