Regeln des Knotenwertes?

9

Welche arithmetischen Regeln gelten für Nodata-Werte? Unabhängig davon, wie diese Nullwerte definiert sind? Ich verwende ArcMap Raster Calculator.

Ich denke speziell an Operationen wie 1 * Nodata (oder 1 * null), 1 / Nodata, 1 + Nodata, 1-Nodata, Nodata-1 usw. ...

user32882
quelle
3
Nodata-Zellen werden ignoriert. Sie müssen jedoch bestimmte Vorgänge überprüfen, um zu bestätigen, dass Divide Nodata-Zellen ignoriert. Weitere Informationen finden Sie unter resources.arcgis.com/en/help/main/10.2/index.html#//…
3
Ich möchte nur hinzufügen, dass für jede mathematische Operation, an der ein Operand mit NoData beteiligt ist, das Ergebnis immer NoData ist, selbst wenn andere Operanden gültige Werte haben.
WhiteboxDev
Es kann sinnvoll sein zu beachten, dass es einige Arten von Knotenzellen gibt, die mithilfe einiger Interpolationsmethoden "ausgefüllt" werden können. Dies ist besonders praktisch, wenn eines Ihrer Raster einige Flecken enthält, Ihre anderen Raster jedoch sauber sind.
user1269942
Hallo Whitebox, ich kann mir tatsächlich ein paar Operationen vorstellen, bei denen Ihre Aussage möglicherweise nicht 100% korrekt ist (Nachbarschaftsmittel beispielsweise in einer NoData-Zelle). Natürlich können diese, wie Sie sagen, nicht als rein mathematische Operatoren betrachtet werden, aber ich denke, es ist den Kommentar wert.
Wenn Sie nicht wissen - nur GIS

Antworten:

4

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:

Geben Sie hier die Bildbeschreibung ein

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.)

WhiteboxDev
quelle
3

Für jedes Ihrer Beispiele lautet die Antwort tatsächlich NoData

1 * Nodata (oder 1 * null) = NoData

1 / Nodata = NoData

1 + Nodata = NoData

1-Nodata = NoData

Nodata-1 = NoData

Ich sollte hinzufügen, dass viele Operationen Ihnen die Option geben, NoData in einer Funktion zu "überspringen".

Wenn Sie nicht wissen, nur GIS
quelle