Okay, niemand hat eine Antwort auf diese Frage gegeben, also dachte ich, ich würde mich einschalten. Ich vermute, dass alle GIS, die den NoData-Wert unterstützen, dies genauso tun. Jede mathematische Operation , die auf ein Rasterbild angewendet wird, sucht nach dem Sonderfall von Gitterzellen, die NoData-Werte enthalten, und führt dann einen Pfad aus, der die Operation effektiv ignoriert und einen NoData-Wert für die entsprechende Gitterzelle im Ausgabebild ausgibt . Hier ist ein Beispiel aus dem Add- Tool im Open-Source-GIS-Whitebox-GAT:
Dies ist übrigens der Code, der auch ausgeführt wird, wenn Sie zwei Bilder in Whitebox 'Raster Calculator hinzufügen. In Whitebox kann jedes Raster einen eindeutigen NoData-Wert haben, da dieser in der Header-Datei des Rasters angegeben ist. Daher ist es nicht unbedingt dasselbe für beide hinzugefügten Bilder. Aus diesem Grund werden im obigen Code die Variablen noData1 und noData2 definiert. Wichtig ist, dass Sie sehen, dass der Code beim Durchlaufen jeder Rasterzelle im Rasterstapel die beiden Werte in den entsprechenden Eingabebildern für eine Zelle (z1 und z2) abruft und dann überprüft, ob beide nicht gleich NoData sind . Daher erfolgt die Addition nur, wenn beide Raster einen gültigen Wert in den Eingaben enthalten. Ist dies nicht der Fall, wird nichts in die Ausgangsgitterzelle eingegeben. Tatsächlich wurde das Ausgabebild mit einem eigenen NoData-Wert erstellt und initialisiert. Wenn Sie also keinen Mehrwert für eine Rasterzelle eingeben (da mindestens eine der Eingaben NoData ist), hat die Ausgabe auch den NoData-Wert. Ähnliche Operationen finden für jede der mathematischen Operationen statt, und tatsächlich folgen die meisten Tools, die Eingabe-Raster-Datasets beinhalten, einem ähnlichen Ansatz zur Behandlung des Sonderfalls von NoData-Werten. Zwei häufige Ausnahmen von dieser Regel, dass Operationen einen NoData-Wert für NoData-Eingaben ausgeben, finden sich in den meisten GIS in derCon und Set Null Tools. Das Con- Tool von ArcGIS gibt an: "Wenn NoData die Anforderungen nicht erfüllt, erhält es nicht den Wert von und bleibt NoData." Wenn also 'NoData' Teil der bedingten Anweisung ist und eine Gitterzelle mit diesem Wert auf 'TRUE' reduziert ist, kann ein Nicht-NoData-Wert ausgegeben werden. In ähnlicher Weise gibt das Werkzeug " Null setzen " tatsächlich einen Nicht-NoData-Wert für Eingabezellen aus, die NoData enthalten.
Ich hoffe, das hilft Ihnen, die Funktionsweise dieses mysteriösen NoData-Werts zu verstehen. Und denken Sie daran, Null ist nicht dasselbe wie NoData! (Es sei denn natürlich, Null wurde als NoData-Wert für ein bestimmtes Raster markiert.)