Comment changer la couleur du géotiff «sans données» en blanc / transparent plutôt qu'en noir?

17

Je prépare les données à inclure dans un nœud de géo-réseau, où les cartes sont affichées via le géoserveur.

Le problème est que les cellules qui n'ont "aucune donnée" s'affichent en noir dans le géotiff et je souhaite que la couleur soit définie sur blanc ou transparent.

J'utilise ArcView et je n'ai accès ni à Spatial Analyst ni à 3D Analyst.

Je préférerais ne pas avoir à attribuer un nouveau fichier sld et j'utilise actuellement "Utiliser la palette de couleurs" lors de l'exportation à partir d'ArcGIS Desktop.

enmapping
la source

Réponses:

7

Dans le concept, vous devez déterminer quelles valeurs de pixels représentent des cellules sans données, puis modifier votre table de couleurs pour attribuer les valeurs ROUGE, VERT, BLEU (RVB) dans la table de couleurs à 255255255 pour cette valeur de cellule.

Si vous ne disposez pas de la licence appropriée pour le faire dans Arc, vous pouvez utiliser l'outil gdal_translate (l'un des outils de ligne de commande gdal / ogr)

  1. exporter la table des couleurs de votre tif sous forme de fichier XML.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. ouvrez le fichier .vrt dans un éditeur de texte et recherchez l'entrée de la valeur de vos pixels sans données. Il n'y a pas de numéro d'index pour les valeurs des cellules, vous devez donc compter à rebours jusqu'à l'entrée correcte.

  3. modifier cette valeur pour être <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. maintenant, créez un nouveau tif basé sur la nouvelle table des couleurs
    gdal_translate outColorTable.vrt newCorrected.tif

(exemple ajouté sur la base du commentaire ci-dessous)

Lorsque j'exécute la commande de l'élément n ° 2 ci-dessus et ouvre le fichier .vrt dans un éditeur de texte, je vois le contenu XML.

Une partie du fichier comprend des lignes qui ressemblent à ceci, j'ai coupé la plupart d'entre elles.

DavidF
la source
Salut DavidF. Merci pour la réponse que j'ai essayé de réaliser avec FWTools (un peu plus facile à naviguer pour le novice). Mais j'ai du mal à trouver la "valeur" dans le fichier vrt parce que lorsque j'ouvre le fichier avec le bloc-notes, leurs mots sont désormais discernables et il est composé principalement de texte aléatoire (code). Est-ce que je fais quelque chose de mal? - toute aide supplémentaire grandement appréciée.
enmapping
@ user1106 - Essayez à nouveau les commandes ci-dessus, j'avais laissé de côté l'option de format de sortie. Ça devrait marcher maintenant!
DavidF
9

J'ai écrit un petit script gdal python pour cela, gdalsetnull.py , un simple programme en ligne de commande pour définir la valeur de raster spécifiée NODATA, sans créer de nouveau raster. Le chemin le plus simple pour installer GDAL sur Windows est via OSGeo4W . Exemples:

python gdalsetnull.py foobar.tif 0            # pure black is transparent
python gdalsetnull.py foobar.tif 0 255 0      # pure green is
python gdalsetnull.py foobar.tif 50 23 77 100 # arbitrary value in 4 band image

Si cela ne vous dérange pas de traiter les frais généraux et de créer une nouvelle image plutôt que de les modifier sur place, il y a aussi gdal_calc qui permet de changer les valeurs des cellules plutôt que de simplement mettre à jour les métadonnées.

Définissez les valeurs de zéro et inférieures à null:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
Matt Wilkie
la source
Bien joué Matt!
DavidF
Est-ce que cela répond vraiment à la question? Votre script (sympa!) Définira une couleur sur NULL, mais je suppose qu'il est toujours spécifique à l'implémentation WMS, dans laquelle la couleur (disons transparente est également une couleur) les valeurs NODATA sont rendues.
alfonx
@alfonx, oui, il y a une différence entre une cellule qui est enregistrée comme nodataet une cellule qui dit que je suis0 et l'application décide si elle ou une autre valeur doit être ignorée. ArcGIS respecte les résultats de gdalsetnull.py; Je n'ai aucune expérience avec GeoServer.
matt wilkie
1
On dirait qu'il a été déplacé à nouveau, maintenant sur: github.com/maphew/maphew-gcode-archive/blob/…
Steve Bennett
lien fixe, merci pour la note! @SteveBennett, nous devons supprimer ces méta-commentaires maintenant.
matt wilkie