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.
Respuestas:
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.
fuente
Aquí están las expresiones mapcalc de GRASS para establecer un rango en NULL:
fuente
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:
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.
fuente
Muchas gracias a Dominik. Mi primera respuesta no es correcta para QGIS 2.8.3 (la expresión
"myraster@1" > 0
devuelve 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 :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 :
o
Esto convertirá todos los valores menores o iguales a 0 en nodata (0/0).
fuente
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.
fuente
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.
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).
fuente
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.
fuente