Zastanów się nad zestawem danych dotyczących pokrycia terenu NLCD2001 dla Alaski ( link do pobrania ). Muszę przeklasyfikować ten zestaw danych, aby zachowane były tylko piksele o wartości 41, 42 i 43; wszystkie pozostałe wartości w pikselach powinny stać się NoData (lub 0, jeśli to konieczne).
To wydaje się prostym zadaniem, wymagającym tylko jednego połączenia z narzędziem Przeklasyfikowania. Niestety każde połączenie powoduje niejasny i nieprzydatny komunikat o błędzie:
Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA
Start Time: Thu Jan 03 09:23:13 2013
ERROR 999998: Unexpected Error.
Failed to execute (Reclassify).
Failed at Thu Jan 03 09:23:13 2013 (Elapsed Time: 0.00 seconds)
Jak mogę zmienić klasyfikację tego zestawu danych rastrowych? Korzystam z ArcCatalog 10.0, Build 4000, z włączonym rozszerzeniem Spatial Analyst.
reclassify
powinno to być ostatecznością, ponieważ ma tak ogólny zakres, że prawdopodobnie wykorzystuje metody, które są mniej wydajne niż te, które można uzyskać, gdy przeklasyfikowanie łatwo wyrazić arytmetycznie lub logicznie. W niniejszej sprawie kryterium przeklasyfikowania jest tak proste, że najpierw należy wypróbować je, Con
a nawet proste operacje arytmetyczne (ponieważ są one szybkie). Na przykład "grid" * ("grid" >= 41) * ("grid" <= 43)
powinien to zrobić. Pamięć RAM nie powinna stanowić problemu - Spatial Analyst automatycznie wyświetla okna we / wy rastrowych i są to operacje lokalne.
Inlist
to fajne rozwiązanie (+1). Byłem w stanie używać con
i monitorować użycie pamięci RAM podczas operacji. Nigdy nie przekroczył 180 MB, czyli niewiele więcej niż pamięć RAM używana tylko do uruchomienia ArcMap. Kafelkowanie w ArcGIS jest automatyczne - nawet nie możesz go kontrolować (chyba że programujesz w interfejsie C / Fortran). Wygląda na to, że ograniczenia pamięci RAM nie mają większego znaczenia.
con
dla mnie pracował, pod warunkiem "Value" >= 41 AND "Value" <= 43
. Wybrałbym to rozwiązanie, ale nie jestem pewien, czy dodatkowe wartości rastrowe będą w przyszłości interesujące. Oczywiście mógłbym dodać OR
do klauzuli where, ale potem zaczyna się to komplikować. InList
wydaje się najprostszym rozwiązaniem w zakresie czytelności i łatwości konserwacji.