J'essaie de traiter certains fichiers raster bioclimatiques, tels que ceux qui peuvent être téléchargés à partir de http://www.worldclim.org/current (ensemble bioclim). Ils semblent avoir des valeurs nodata définies -3.4e+38
selon QGIS (en regardant la sortie de gdalinfo, c'est -3.39999999999999996e+38
).
Il semble que les outils gdal ne soient pas capables de gérer cette valeur nodata, et qgis ne semble pas non plus être capable de la reconnaître. Dans le style de calque, il existe une entrée pour -3.4e + 38 définie sur 100% transparent, mais elle affiche toujours ces valeurs, même si le sélecteur "Identifier les entités" les indique comme ayant la valeur -3.4e + 38.
J'ai essayé de créer un vrt pour convertir les valeurs de nodata à -9999 à la place, mais cela n'a pas fonctionné non plus.
Comment puis-je traiter ces fichiers pour avoir des valeurs de nodata utilisables?
Réponses:
GDAL peut gérer ces valeurs. En fait, la valeur NoData par défaut de GDAL est à peu près la même que la vôtre. Je pense que le problème est une erreur en virgule flottante dans QGIS. J'ai le même problème avec les valeurs NoData à virgule flottante.
Si vous souhaitez modifier la valeur NoData à l'aide de GDAL, vous pouvez utiliser gdalwarp ou peut-être gdal_translate et définir la valeur nodata sur un entier à partir de là (-dstnodata et -a_nodata respectivement). Par inastance, j'ai réussi à définir ma valeur NoData à -999 dans un raster flottant 64 bits dans le passé. Cependant, étant donné que nous avons établi qu'il existe un problème de virgule flottante à cet égard, je ne voudrais pas garantir que cela fonctionnera dans tous les cas.
la source
gdal_translate -a_nodata -9999 input.tif output.tif
biengdalwarp -dstnodata -9999 input.tif output.tif
fait l'affaire. À partir d'un fichier d'entrée de 9 Mo, mon approche a abouti à un fichier de 26 Mo, tandis que gdalwarp a abouti à un fichier de sortie de 52 Mo. Cependant, si le raster contient des valeurs flottantes, mon approche ne fonctionnera pas où celle-ci le sera.-co COMPRESS=LZW
.J'ai réussi à trouver une solution à ce problème en convertissant le format de données en Int16 à partir de Float32. La valeur minimale est alors -32768 et peut être traitée comme une valeur nodata. La commande suivante a fait l'affaire:
Il y a probablement une meilleure solution, mais cela résout au moins mon problème immédiat.
la source
La réponse à cette question résoudrait probablement aussi ce problème: Changer les pixels nodata de -3.40282347e + 38 en un nombre différent dans QGIS
En résumé, vous pouvez utiliser r.null de la boîte à outils de traitement pour modifier les valeurs.
la source
vous pouvez essayer gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NoDataValue = 0
la source