Czy wartości danych rozpoznane w rastrze w ArcGIS Desktop są niezgodne z regułami symboliki?

9

Mam raster GeoTIFF w ArcGIS Desktop, który można pobrać z następujących dwóch linków:

  1. http://www.rtwilson.com/downloads/MODIS_MOD04_16-06-2006_Subset.tfw
  2. http://www.rtwilson.com/downloads/MODIS_MOD04_16-06-2006_Subset.tif

Jeśli załadujesz je do ArcGIS Desktop, zobaczysz duże jednolite obszary. Kliknięcie tych obszarów za pomocą narzędzia Informacje pokazuje wartość piksela jako Brak danych. Jeśli jednak wybierzesz wyświetlanie wartości Brak danych jako przezroczystych (lub jako dowolny kolor) w preferencjach Symboliki dla warstwy, wartości Brak danych nie będą zgodne z tą regułą.

Co ciekawe, wartości Brak danych poza głównym obszarem obrazu są zgodne z regułą (ustaw kolor na czerwony, aby to zobaczyć), ale te wewnątrz obrazu nie.

Naprawdę starałem się rozwiązać ten problem - i nie mogę w ogóle wymyślić, jak to zrobić.

Czy ktoś ma jakieś pomysły?

robintw
źródło

Odpowiedzi:

3

Pobrałem plik i przekonwertowałem go na tablicę numpy, a kiedy zapętlam wartości w tablicy, widzę, że dostaję -3,40282347e + 38 i NaN jako wartości nodata. Być może możesz przeklasyfikować je do wartości na jedną lub drugą, aby wszystkie wartości nodata były takie same.

Możesz użyć narzędzia do przeklasyfikowania, arcpy.sa.setnulllub jestem pewien, że numpy ma kilka fantazyjnych funkcji, które mogłyby to zrobić, jeśli przekonwertujesz obraz na tablicę numpy.

Tłumaczenie Gdal może być również przydatne, jeśli chcesz pójść ścieżką open source.

Dango
źródło
Czy masz pojęcie, jak mogę przeklasyfikować te wartości? Wydaje mi się, że ArcGIS nie rozpoznaje niczego dla NaN i wydaje się, że nie radzi sobie z bardzo niską wartością (wydaje się, że jest to zasadniczo NaN - ponieważ taki jest zakres liczb zmiennoprzecinkowych w Arc).
robintw
Gdybym to był ja, przekonwertowałbym każdy obraz na tablicę numpy, zapętlając tablicę, konwertując wszystkie wartości nodata na -9999 lub cokolwiek, a następnie przenoszę tablicę z powrotem na obraz. Jestem pewien, że jest na to mądrzejszy sposób, ale nie pracowałem tak często z Numpy.
dango,
jeśli zdecydujesz się użyć metody, którą zasugerowałem powyżej, możesz spróbować użyć funkcji python math.isnan () do identyfikacji wartości NaN.
dango,
4

Z tym plikiem / danymi na pewno dzieje się coś bardzo fajnego.

Masz rację, że ArcGIS pokazuje dwa różne typy NoData, mimo że oba atrybuty pokazują to samo. QGIS też to robi. Nie mam absolutnie pojęcia, co dzieje się z danymi (ale domyślam się, że za sceną stosowane są dwie różne wartości „noData”, jedna może być na przykład „null”, a druga „-9999”), ale byłbym zainteresowany wiedzieć, może ktoś inny może nas oświecić.

Istnieje jednak kilka możliwych obejść:

Eksportuj dane - jeśli wyeksportujesz dane, używając „renderera”, zacznie działać poprawnie. Jeśli nie zaznaczysz modułu renderującego użycie, twój nowy plik będzie miał te same problemy. Z drugiej strony konwertuje to na dane 8-bitowe (0-255). Inne narzędzie może je ponownie renderować, zachowując dane jako zmiennoprzecinkowe 32-bitowe.

Użyj sklasyfikowanej - Metoda sklasyfikowanej symboliki wydaje się poprawnie wyświetlać oba typy NoData (tj. Jako to samo), więc użyj tej opcji, jeśli to możliwe, i nie chcesz zmieniać danych. Rozciągnięty pokazuje zgłoszony błąd, a „Unikalne wartości” po prostu nic nie pokazuje.

(Korzystanie z ArcGIS 9.3.1)

GIS-Jonathan
źródło
Dzięki za odpowiedź - Cieszę się, że to nie tylko ja myślę, że to dziwne. Niestety sklasyfikowana symbolika nie będzie odpowiednia do tego, co muszę zrobić, ale w tej chwili dokonam eksportu za pomocą mechanizmu renderującego. Frustrujące jest to, że dzieje się tak w przypadku wszystkich plików, które otrzymuję z satelity MODIS za pomocą internetowego systemu przetwarzania MODIS. Myślę, że problemem mogą być dwa różne typy NoData - myślę, że w tym przypadku mogą być „zerowe” i NaN, ale nie wiem.
robintw
Myślę, że „Użyj sklasyfikowanego” jest zdecydowanie najmniej uciążliwym ze wszystkich sugerowanych technik obejścia tego błędu. Możesz przybliżyć wszystko, co możesz zrobić, w menu „Rozciągnięty” w menu „Sklasyfikowane”.
Alexander
2

Właśnie natrafiłem na ten sam problem - i znalazłem „rozwiązanie”. Jeśli pomnożysz raster przez 1,0 za pomocą kalkulatora rastrowego, ArcMap rozpozna wartości NoData.

Hellski
źródło
1

Miał ten sam problem z 32-bitowymi siatkami ESRI. 16-bitowe działały dobrze i NoData był niewidoczny, ale pokazywał się czarny dla 32-bitowych. Naprawiono to, eksportując indywidualnie i zmieniając wartość nodata na -32768 w przeciwieństwie do -2147483647, które zwykle mają 32-bitowe.

Kai
źródło
1

Miałem ten sam problem. Dla mnie zadziałało wyeksportowanie rastra do folderu geobazy. Jeśli raster jest eksportowany do geobazy, arcmap wyświetla poprawnie wartości NoData.

Fernando Ribeiro
źródło
0

Mam podobny problem z obrazami Landsat 8-OLI podczas wykonywania mozaiki. Wartości „NoData” na zewnątrz (tło) nic nie robią, ale wszelkie brakujące bloki danych, takie jak usuwanie chmur / cieni wewnątrz, zmienią kolor referencyjnej warstwy mozaiki. Wykonałem to w ERDAS i Arcmap, oba te same wyniki. Z jakiegoś powodu ma to wpływ na symbolikę, ale jeśli użyjesz narzędzia „Identyfikuj”, wartości pikseli są prawidłowe. Jeśli idziesz po wynikach, a nie wyświetla się, powinno być w porządku.

Zman3
źródło