Gibt es einen standardisierten oder am häufigsten verwendeten Dummy-Z-Wert?

10

Beim Erstellen und Importieren von 2D- und 3D-Daten bin ich häufig auf die Situation gestoßen, dass ich keinen Z-Wert für einen Koordinatensatz habe und der Wert einer Z-Koordinate außerhalb des Bereichs liegt (z. B. -99, -9999, -inf oder ähnliches) ) oder dass ich eine Dummy- Z-Koordinate erstellen muss .

Ich weiß, dass die Antwort auf meine Frage lautet:

"Verwenden Sie einfach einen Wert, der in Ihrem Fall definitiv außerhalb des Bereichs liegt."

Aber diese Antwort beiseite gelegt Ich frage mich, ob die GIS-Community einen standardisierten oder am häufigsten verwendeten Wert für eine Dummy- Z-Koordinate hat.

Chau
quelle

Antworten:

5

Aktuelle Antworten geben alle gute Ratschläge. Eine allgemeine Regel (aus der wissenschaftlichen Computergemeinschaft), die in Fällen gut funktioniert, in denen Sie keine echten Nullen oder NaNs speichern können, ist die Verwendung des kleinsten (negativsten) Werts, den das Feld (gültig) enthält.

Beispiele:

  • Ein 7,2-Dezimalfeld kann einen Wert von -9999,99 enthalten.

  • Ein ganzzahliges Raster kann Zahlen bis zu -32768 enthalten, aber häufig (aufgrund einer Abneigung gegen Binärdaten und einer Affinität zur Basis 10) wird stattdessen der Wert -9999 verwendet.

  • Ein Float kann Zahlen in der Größenordnung von -10 ^ (38) enthalten. Wenn Sie kein NaN ins Feld bringen können, suchen Sie entweder den kleinsten Schwimmer, der passt (was ein Schmerz ist), oder verwenden Sie einfach so etwas wie -10 ^ (38). Für Doppel funktioniert -10 ^ (303) gut, aber -10 ^ (38) auch: Es ist groß genug und negativ genug, um als eindeutiger Marker für einen Nullwert zu dienen.

Diese Regel ist einfach zu merken, konsistent, einfach anzuwenden, leicht zu dokumentieren (für Ihre Metadaten) und führt selten zu versehentlichen Fehlern (da sich die negativste Zahl normalerweise so stark von den Daten unterscheidet, dass sie als missbraucht wird Der tatsächliche Wert anstelle von Null korrumpiert statistische Zusammenfassungen und andere Berechnungen so stark, dass ein Flag angezeigt wird, dass ein Problem vorliegt.

whuber
quelle
5

Wenn sich Ihre Daten in einer Datenbank befinden, verwenden Sie idealerweise einen NULL- Wert:

eine Darstellung von "fehlenden Informationen und nicht anwendbaren Informationen"

Dies kann jedoch zu Problemen mit Clientanwendungen und Code führen, und ich glaube nicht, dass NULL in DBFs unterstützt wird. Was dieser Wert sein sollte, ist meiner Meinung nach für verschiedene Organisationskonventionen unterschiedlich. Unabhängig davon, welchen Dummy-Wert Sie auswählen, stellen Sie sicher, dass er in den Metadaten des Datasets aufgezeichnet ist.

Wenn keiner der Punkte für einen Datensatz einen Z-Wert hat, kann ich nicht verstehen, warum 0 nicht verwendet werden konnte. In diesem Fall ist es jedoch möglicherweise am besten, die Z-Erkennung des Datensatzes vollständig zu entfernen, um Verwirrung zu vermeiden.

geographika
quelle
2
+1 Die meisten ESRI-Produkte sowie die meisten anderen Programme lesen Nullen in numerischen dBase-Feldern als Nullen. Das ist tödlich, daher ist es normalerweise wichtig, eine explizite Nullcodierung in DBF-Dateien (einschließlich Shapefiles) zu verwenden.
whuber
4

Die meisten Raster, auf die ich gestoßen bin, verwenden -9999.0 für Gleitkommadaten als Konvention, und GDAL verwendet -dbl_inf, wenn Sie Code für ein Bild schreiben, das keinen Nodata / Dummy-Wert hat. 8-Bit-RGB verwendet normalerweise 0 0 0 oder 255 255 255 oder hat einen Alpha- oder Maskenkanal.

GML 3-Deckungen (für die es derzeit nicht viel Unterstützung gibt, die sich jedoch ändern werden, wenn die WCS 2-Spezifikation ratifiziert wird) enthalten mehrere Dummy-Werte, die als Text dargestellt werden, z. B. "fehlt" und "zurückgehalten".

Nach meiner Erfahrung ist jeder Standard eher domänenspezifisch oder herstellerspezifisch. Wenn Sie eher Datenproduzent als Verbraucher sind, wählen Sie eine Nummer und bleiben Sie dabei. Stellen Sie sicher, dass Ihre Verbraucher darauf aufmerksam gemacht werden.

MerseyViking
quelle
2

Ich würde NaN verwenden, weil mathematische Operationen andere NaNs erzeugen oder Ausnahmen auslösen. Auf diese Weise können Sie deutlich erkennen, dass Sie Fehler machen, weil Sie einen falschen Wert verwenden

Ragi Yaser Burhum
quelle
2
NaN wäre gut für Berechnungen (mit Gleitkommawerten), aber Sie können NaN nicht in vielen Datenbanken oder GIS-Datenformaten speichern
geographika
2
+1 @geographika ist korrekt. Trotzdem ist der Punkt, einen Wert zu verwenden, der die Berechnungen durcheinander bringt, ein ausgezeichneter.
whuber
für ganze Zahlen können Sie NaNs haben: numeric_limits <int> :: quiet_NaN ()
Ragi Yaser Burhum
Außerdem war meine Empfehlung für die Verwendung von NaN, da es sich um den Z-Wert innerhalb der Geometrie handelt. Unabhängig davon, ob sich der Wert in einer Datenbank befindet oder nicht, sollte er
meiner Meinung nach