J'ai un raster DEM avec des valeurs de pixels entre environ 3000 et -0,0003. J'ai besoin de définir tous les pixels avec une valeur de 0 et plus petit (<= 0) à "nodata" (pour les calculs raster ultérieurs et pour réduire la taille du fichier).
Il me semble que c'est une tâche pour la calculatrice raster (définir la valeur des pixels <= 0 à "nodata") ou une reclassification (définir la valeur des pixels <= 0 à "nodata" et conserver toutes les autres valeurs) mais je ne le fais pas savoir-faire.
Réponses:
Je n'ai pas trouvé de solution à un seul outil, mais vous pouvez d'abord utiliser la calculatrice raster pour transformer toutes les valeurs en dessous d'un certain seuil à zéro, puis utiliser gdal_translate avec -a_nodata 0 pour transformer le 0 en nodata.
la source
Voici les expressions mapcalc GRASS pour définir une plage sur NULL:
la source
Cela peut être fait en une seule étape dans QGIS dans la calculatrice raster.
Dans QGIS3, pour une couche raster nommée "x", utilisez l'expression suivante:
Cette astuce mappe les valeurs raster x> 0 dans le rapport x / 1 = x et les valeurs raster x <= 0 dans le rapport 0/0 = NaN. Ce NaN est rendu sous la forme FLOAT_MIN (aka -3.402832 ... e + 38) si le raster est un flottant de 4 octets.
Curieusement, cette question semble avoir été autour d'un certain temps, avec (pour autant que ma recherche rapide sur Google le montre aujourd'hui) la plupart des répondants disent que cela ne peut pas être fait en une seule étape. Il ne devrait certainement pas avoir besoin d'être piraté comme ça. La documentation QGIS pourrait aussi être meilleure.
la source
Un grand merci à Dominik. Ma première réponse n'est pas correcte pour QGIS 2.8.3 (l'expression
"myraster@1" > 0
renvoie 0 ou 1 pour une entrée non nodata , pour une entrée nodata, elle renvoie nodata ).L' expression QGIS Raster Calculator suivante devrait être suffisante (couche raster nommée "myraster"), car QGIS Raster Calculator définit tous les pixels qui ne remplissent pas la condition sur nodata :La solution suivante est basée sur https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.html et fonctionne pour QGIS 2.8.3 avec SAGA 2.1.2.
Dans QGIS Processing, utilisez la calculatrice SAGA Raster et entrez les éléments suivants dans Formula :
ou
Cela transformera toutes les valeurs inférieures ou égales à 0 en nodata (0/0).
la source
Vous pouvez également enregistrer le calque (clic droit, enregistrer sous ...) et spécifier une plage de nodata. Cela conservera les nodata d'origine et créera de nouveaux nodatas pour la plage de valeurs spécifiée.
la source
J'ai eu un problème similaire, mais j'avais LES DEUX valeurs que je voulais convertir en aucune donnée ET aucune valeur existante dans le raster.
Je suis venu sur cette page pour obtenir de l'aide, mais je pense qu'il y a une mise en garde aux approches ici. Les méthodes de @underdark et @Micha ne semblent fonctionner que là où il n'y a pas de valeurs sans données dans le raster.
Pour contourner cela, vous devez convertir à la fois les valeurs sans données et les valeurs que vous souhaitez convertir en sans données en un nombre cohérent. Vous pouvez alors utiliser la deuxième étape de @underdark.
Pour ce faire, utilisez la boîte à outils de traitement> Reclassifier les valeurs de grille (SAGA) pour convertir simultanément les valeurs et les valeurs sans données en un nombre commun (par exemple, -999). Plus précisément, utilisez la méthode "plage" et spécifiez la plage. Puis, pour remplacer les valeurs sans données, choisissez cette même valeur (par exemple -999). Décochez remplacer les autres valeurs. Cela fonctionne aussi pour un changement de valeur unique ou des changements plus complexes.
Suivez ensuite la méthode de @underdark et enregistrez le raster à l'aide de Raster> Conversion> Traduire, et cochez no-data, en entrant la valeur que vous avez utilisée (par exemple -999).
la source
Cliquez avec le bouton droit sur le raster, accédez aux propriétés du raster, sélectionnez la troisième option "transparence", dans aucun onglet de valeur de données, ajoutez une valeur supplémentaire 0 et cliquez sur appliquer. Il s'agit de l'option similaire "afficher la valeur d'arrière-plan" dans arcgis.
la source