J'ai un ensemble de rasters (.vrt) avec des données quotidiennes sur l'humidité du sol. Je veux additionner les pixels de tous les rasters afin d'avoir une mesure par mois. Cependant, le monde entier n'est pas couvert chaque jour, ce qui se traduit par des valeurs de nodata aux endroits où des mesures existent pour les autres jours.
Ce que je veux faire, c'est additionner les valeurs de chaque raster. Cependant, il semble que chaque fois qu'un pixel nodata est dans la somme, le pixel résultant est directement classé comme nodata. Je voudrais avoir le contraire: ignorer toutes les valeurs de nodata et additionner le reste.
J'ai pensé à 2 façons de résoudre le problème:
- sommation des rasters en ignorant les valeurs nodata
- convertir les pixels nodata en valeur 0, puis additionner tous les rasters
Malheureusement, je ne trouve aucun outil pour le faire.
Quelqu'un peut-il m'aider?
Réponses:
Si vous avez accès à ArcGIS, l' outil Cell Statistics a la faculté d'ignorer les nodata que vous additionnez \ mean \ min \ max vos rasters.
la source
Tout d'abord, vous pouvez utiliser gdal_calc.py pour changer tout -9999 en 0 et définir la valeur NoData sur 0.
Par exemple:
Ensuite, vous pouvez ignorer la valeur NoData à l'aide de gdal_translate avec l' option -a_nodata suivie de none .
Exemple:
la source
gdal_translate -a_nodata none ...
. Par exemple:gdal_calc.py -A input.tif --outfile=input_with_NoData.tif --type=Int16 --calc="A+9999*(A==-9999)" --NoDataValue=0
cd
commande et réessayez afin d'avoir seulement-A test.tif
.Dans R:
la source
s
, l'argumentna.rm=TRUE
entraînant l'ignorance desNA
valeurs. L'objet de sortiess
est unraster
objet qui peut être exporté avecwriteRaster
(voir?writeRaster
). (@RobertH est le créateur duraster
package R. )L'outil conditionnel dans Spatial Analyst est un moyen simple de convertir des valeurs nulles en zéros. Prendre ensuite les sommes devrait être un jeu d'enfant.
la source
J'ai eu le même problème il y a quelque temps et j'ai réussi à le résoudre.
Tout comme une note sur l'affichage des valeurs de nodata dans QGIS: les valeurs de nodata sont toujours affichées en tant que valeurs de nodata dans la fenêtre de carte et lors de l'utilisation de l'outil "informations sur l'objet", qu'elles aient réellement la valeur -9999, 0, NULL, etc. Ainsi, après le reclassement des valeurs de nodata à 0, si vous allez dans les paramètres de calque, vous trouverez dans les métadonnées que les nodata ont la valeur 0.
J'ai finalement trouvé l'outil parfait pour la quête, l'herbe
r.series
. Avec le paramètre "opération d'agrégation" définissant "maximum" et la "propagation des valeurs NULL" décochée, l'outil créera un calque qui correspond à vos besoins.la source
Je me souviens avoir eu ce problème il y a quelque temps. Comme solution, je pense que j'ai fait +1 à toutes les cellules du raster, ajouté les rasters ensemble, puis fait une soustraction finale (du nombre de +1 que vous avez ajouté). C'est assez grossier mais si ça fait le boulot ...!
Vous pouvez également utiliser la «Reclassification des valeurs de grille» dans la boîte à outils Traitement dans QGIS pour convertir vos valeurs nulles en zéro.
la source