J'ai une orthoimage RVB qui a une zone noire au lieu de NoData, comme illustré ici:
Lorsque j'utilise l'outil SetNull, il supprime la zone noire, mais il la transforme ensuite en une orthoimage en niveaux de gris, ce qui n'est pas ce que je veux.
Je sais qu'il existe un moyen de contourner cela en utilisant l'outil Couper (Gestion des données) pour couper le raster sur lui-même et là-dedans, vous pouvez définir la valeur NoData comme étant la valeur des cellules noires (0). Cependant, je crée un atelier pour les étudiants et j'aimerais utiliser une méthode moins contre-intuitive.
Il y a bien sûr la possibilité d'exécuter l'outil NoData sur chaque bande individuellement, puis de combiner les trois bandes ensemble, mais je dois avoir une condition où band1, band2 et band3 sont tous égaux à 0 pour définir cela comme NoData. Être capable de le faire dans ModelBuilder serait idéal, mais l'écrire à l'aide d'ArcPy serait également bon.
J'utilise ArcGIS 10.2 Desktop avec une licence avancée.
la source
Réponses:
Ce que vous voulez faire, c'est définir les propriétés du raster dans un script ou le modifier manuellement dans ArcCatalog. Cela ne créera pas de nouveau raster ni ne prendra même très longtemps.
En python, c'est un peu délicat:
Parce que les nodata sont en bas de la liste, je trouve plus facile de spécifier cela; les paramètres sont Valeur de bande; Valeur de bande; ... jusqu'à ce que toutes les bandes soient adressées. Si vous êtes susceptible d'avoir plus de bandes (ou moins) dans le même dossier, vous devrez utiliser arcpy.Describe et la propriété bandCount pour définir la valeur null pour le nombre correct de bandes:
Dans ArcCatalog, cliquez avec le bouton droit sur la couche et accédez aux propriétés:
appuyez sur le bouton d'édition:
Entrez les valeurs, puis appuyez sur OK pour fermer l'éditeur NoData et sur OK pour appliquer la modification.
Le raster n'affichera plus rien dans ArcMap où la valeur de la cellule est 0,0,0.
la source
Si vous accédez aux propriétés du raster et si la symbologie est définie comme composite RVB (ce qui semble être le cas), vous pouvez cocher la case Afficher les valeurs d'arrière-plan (RVB) et définir ce que vous voulez comme arrière-plan creux. Il vous suffit donc de définir 0 0 0 comme valeur d'arrière-plan et vous devriez être en affaires.
la source
Je pense que la manière la plus simple d'y parvenir serait de créer d'abord un raster de condition nulle, puis d'utiliser ce raster pour affecter séparément les valeurs NoData à chaque bande.
Essayez d'exécuter la fonction Con pour créer le raster de condition nulle.
Utilisez ensuite le raster de condition nulle pour affecter des valeurs NoData à chaque bande avec la fonction Null définie . Vous devriez pouvoir le faire avec le générateur de modèles ou python.
la source
Je crois que vous pouvez utiliser des procédures d'arbre différentes que théoriques devraient fonctionner. Calculatrice raster où vous pouvez utiliser cette expression
SETNULL([raster] == value, [raster])
Reclasser où vous ne devez reclasser que la valeur souhaitée. Et en utilisant ArcPy, vous pouvez utiliser ce script que j'ai trouvé ici https://gis.stackexchange.com/a/24578/47790la source