Ich habe ein RGB-Orthobild mit schwarzem Bereich anstelle von NoData, wie hier abgebildet:
Wenn ich das SetNull-Werkzeug verwende, wird der schwarze Bereich zwar entfernt, aber dann in ein Graustufen-Orthobild umgewandelt, was ich nicht möchte.
Ich weiß, dass es einen Weg gibt, dies zu umgehen, indem Sie das Raster mit dem Clip-Tool (Datenverwaltung) in sich selbst schneiden. Dort können Sie den NoData-Wert auf den Wert der schwarzen Zellen (0) festlegen. Ich erstelle jedoch einen Workshop für Studenten und möchte eine weniger kontraintuitive Methode anwenden.
Es besteht natürlich die Möglichkeit, das NoData-Tool für jedes Band einzeln auszuführen und dann die drei Bänder miteinander zu kombinieren. Ich muss jedoch eine Bedingung haben, bei der Band1, Band2 und Band3 alle gleich 0 sind, um dies als NoData festzulegen. Dies in ModelBuilder zu tun, wäre ideal, aber es wäre auch gut, Skripte mit ArcPy zu erstellen.
Ich verwende ArcGIS 10.2 Desktop mit erweiterter Lizenz.
quelle
Antworten:
Was Sie tun möchten , ist Set Raster - Eigenschaften in einem Skript oder in ArcCatalog manuell ändern. Dadurch wird kein neues Raster erstellt oder es dauert nicht einmal sehr lange.
In Python ist es etwas schwierig:
Da die Nodata ganz unten in der Liste stehen, fällt es mir leichter, dies anzugeben. Die Parameter sind Bandwert; Bandwert; ... bis alle Bänder adressiert sind. Wenn Sie wahrscheinlich mehr Bänder (oder weniger) im selben Ordner haben, müssen Sie arcpy.Describe und die Eigenschaft bandCount verwenden , um die Null für die richtige Anzahl von Bändern festzulegen :
Klicken Sie in ArcCatalog mit der rechten Maustaste auf die Ebene und gehen Sie zu Eigenschaften:
Klicken Sie auf die Schaltfläche Bearbeiten:
Geben Sie die Werte ein und klicken Sie auf OK, um den NoData-Editor zu schließen, und auf OK, um die Änderung zu erzwingen.
Jetzt zeigt das Raster in ArcMap nichts an, wobei der Zellenwert 0,0,0 beträgt.
quelle
Wenn Sie zu den Rastereigenschaften wechseln und die Symbologie als RGB-Verbund festgelegt ist (was anscheinend der Fall ist), können Sie das Kontrollkästchen Hintergrundwerte anzeigen (RGB) aktivieren und einen beliebigen hohlen Hintergrund festlegen. Stellen Sie einfach 0 0 0 als Hintergrundwert ein und Sie sollten im Geschäft sein.
quelle
Ich denke, der einfachste Weg, dies zu erreichen, wäre, zuerst ein Raster mit Nullbedingungen zu erstellen und dann dieses Raster zu verwenden, um die NoData-Werte jedem Band separat zuzuweisen.
Führen Sie die Con-Funktion aus , um das Nullbedingungsraster zu erstellen.
Verwenden Sie dann das Null-Bedingungsraster, um jedem Band mit der eingestellten Null-Funktion NoData-Werte zuzuweisen . Sie sollten dies mit Model Builder oder Python tun können.
quelle
Ich glaube, dass Sie verschiedene Baumverfahren anwenden können, die theoretisch funktionieren sollten. Rasterrechner, in dem Sie diesen Ausdruck verwenden können
SETNULL([raster] == value, [raster])
Reklassifizieren Sie, wo Sie nur den gewünschten Wert neu klassifizieren sollten. Mit ArcPy können Sie dieses Skript verwenden, das ich hier gefunden habe: /gis//a/24578/47790quelle