Czy istnieje znormalizowana lub „najczęściej używana” wartość manekina Z?


10

Podczas tworzenia i importowania danych 2D i 3D wielokrotnie spotkałem się z sytuacją, w której nie mam wartości Z dla zestawu współrzędnych, że wartość współrzędnej Z wydaje się poza zakresem (np. -99, -9999, -inf lub podobna ) lub że muszę utworzyć fikcyjną współrzędną Z.

Wiem, że odpowiedź na moje pytanie brzmi:

„Po prostu użyj wartości, która zdecydowanie nie mieści się w Twoim przypadku”.

Ale odłożyłem tę odpowiedź na bok. Zastanawiam się, czy społeczność GIS ma znormalizowaną lub najczęściej używaną wartość dla pozornej współrzędnej Z?

Odpowiedzi:


5

Wszystkie aktualne odpowiedzi dają dobre porady. Ogólną zasadą (od społeczności naukowców zajmujących się komputerami), która działa dobrze w przypadkach, w których nie można przechowywać prawdziwych wartości zerowych lub NaN, jest stosowanie najmniejszej (najbardziej negatywnej) wartości, którą pole (ważnie) będzie przechowywać.

Przykłady:

  • Pole dziesiętne 7,2 może zawierać wartość tak małą jak -9999.99.

  • Raster liczb całkowitych może przechowywać liczby tak małe jak -32768, ale często (z powodu awersji do binarnych i powinowactwa do podstawy 10) używana jest zamiast tego wartość -9999.

  • Liczba zmiennoprzecinkowa może zawierać liczby rzędu -10 ^ (38). Jeśli nie możesz umieścić NaN w polu, znajdź najmniejszy pływak, który będzie pasował (co jest bólem) lub po prostu użyj czegoś takiego jak -10 ^ (38). W przypadku podwójnych, -10 ^ (303) działa dobrze, ale tak samo działa -10 ^ (38): jest wystarczająco duży i ujemny, aby służyć jako wyraźny znacznik wartości zerowej.

Ta reguła jest łatwa do zapamiętania, spójna, łatwa do zastosowania, łatwa do udokumentowania w prosty sposób (dla twoich metadanych) i rzadko prowadzi do niezamierzonych błędów (ponieważ najbardziej ujemna liczba jest zwykle tak różna od danych, że jej niewłaściwe użycie jako rzeczywista wartość, zamiast zerowego, psuje podsumowania statystyczne i inne obliczenia wystarczające, aby podnieść flagę, że występuje problem).


5

Jeśli dane znajdują się w bazie danych, najlepiej byłoby użyć wartości NULL :

przedstawienie „brakujących informacji i nieistotnych informacji”

Może to jednak powodować problemy z aplikacjami klienckimi i kodem, i nie wierzę, że w DBF jest obsługiwany NULL. Ta wartość powinna być inna dla różnych konwencji organizacyjnych. Bez względu na wybraną wartość fikcyjną, upewnij się, że jest zapisana w metadanych zestawu danych.

Jeśli żaden punkt zestawu danych nie ma wartości Z, nie rozumiem, dlaczego nie można użyć 0, chociaż w takim przypadku być może najlepiej jest całkowicie usunąć świadomość Z zestawu danych, aby uniknąć nieporozumień.


2
+1 Większość produktów ESRI, a także większość innych programów, odczyta wartości zerowe w polach liczbowych dBase jako zera. Jest to śmiertelnie niebezpieczne, dlatego zwykle ważne jest stosowanie jawnego kodowania zerowego w plikach .dbf (w tym plików kształtów).
whuber

4

Większość rastrów, z którymi się zetknąłem, używa jako standardu -9999.0 dla danych zmiennoprzecinkowych, a GDAL użyje -dbl_inf podczas pisania kodu dla obrazu, który nie ma wartości nodata / dummy. 8-bitowy RGB zwykle używa 0 0 0 lub 255 255 255 lub ma kanał alfa lub maskowy.

Pokrycia w GML 3 (na które obecnie nie ma dużego wsparcia, ale zmieni się to po ratyfikacji specyfikacji WCS 2) ma kilka fałszywych wartości, które są reprezentowane jako tekst, taki jak „brak” i „wstrzymany”.

Z mojego doświadczenia wynika, że ​​wszelkie ustawienia domyślne są związane z domeną lub dostawcą. Jeśli jesteś producentem danych, a nie konsumentem, wybierz numer i trzymaj się go, a także upewnij się, że twoi konsumenci są tego świadomi.


2

Użyłbym NaN ponieważ operacje matematyczne będzie produkować inne Nans lub wyjątki rzut. W ten sposób możesz wykryć, że popsułeś się, ponieważ używasz fałszywej wartości


2
NaN byłby odpowiedni do obliczeń (z wartościami zmiennoprzecinkowymi), ale nie można przechowywać NaN w wielu bazach danych lub formatach danych GIS
geographika

2
+1 @geographika jest poprawna. Niemniej jednak kwestia użycia wartości, która zakłóci obliczenia, jest doskonała.
whuber

dla liczb całkowitych możesz mieć NaNs: numeric_limits <int> :: quiet_NaN ()
Ragi Yaser Burhum

Również moje zalecenie było za korzystanie z Nan, ponieważ odnosi się do wartości Z wewnętrznej geometrii. Niezależnie od tego, czy wartość znajduje się w bazie danych, czy nie, IMHO powinna być serializowana z geometrią - więc powinna po prostu działać ...
Ragi Yaser Burhum
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.