Ponownie próbkuj binarny raster, aby uzyskać * proporcję * w nowym oknie komórki

9

Chciałbym przejść z binarnego rastra lasu / nieleśnego w rozdzielczości 30 m do rastra w rozdzielczości 240 m, przy czym wartość każdej komórki jest proporcją tej zalesionej komórki - tzn. Wartości danych dla komórek 240 m zmieniłyby się od 0 (gdzie wszystkie komórki w rastrze 30 m były zerowe / nieleśne) przez 0,5 (gdzie połowa z 30 m komórek była lasem, połowa nie była lasem) do 1 (gdzie wszystkie komórki w rastrze 30 m były zalesione).

Chociaż zasugerowano, aby nie stosować interpolacji dwuliniowej w przypadku danych dyskretnych, o ile mogę powiedzieć, że wynikiem danych binarnych 0/1 byłoby podanie wartości średniej (tj. Proporcji między 1 a 0). Czy to rozsądny sposób, aby to zrobić, czy jest lepsza metoda?

Mogę używać Arc, QGIS i Idrisi.

stuckGIS
źródło

Odpowiedzi:

13

Użyj statystyk blokowania .

Działa to podobnie do statystyki ogniskowej, obliczając podsumowanie statystyczne (takie jak pożądana średnia) w określonym sąsiedztwie komórek (takim jak kwadrat 8 na 8, gdzie 8 = 240 m / 30 m), z tym że wykonuje to tylko dla regularny podział siatki zamiast zestawu nakładających się dzielnic, po jednym w każdej komórce.

Możesz także skorzystać ze statystyk Ogniskowych, jeśli naprawdę chcesz: po obliczeniu średniej ogniskowej ponad 8 na 8 kwadratów, ponownie próbkuj do 240-metrowej siatki przy użyciu próbkowania najbliższego sąsiada . Kiedy siatki są wzajemnie zarejestrowane ( tzn . Mają to samo pochodzenie), powinno to dać taki sam wynik jak block statistics. (Nie gwarantuję tego: niektóre arbitralne wybory muszą być dokonane, gdy nowe centra komórkowe pokrywają się ze starymi narożnikami komórki - tak jak tutaj - i, jeśli różne komitety kodowały obie procedury, mogliby dokonać różnych wyborów: mało Obawiam się, że ArcGIS jest naprawdę spójny.)

Innym podejściem jest utworzenie siatki stref, jednej strefy na kwadrat, w której pożądana jest średnia, i wykonanie streszczenia strefowego jako siatki. Strefy można obliczyć matematycznie z siatek współrzędnych wiersza i kolumny (za pomocą funkcji floorlub int, przez przeklasyfikowanie lub przez połączenie odpowiedniej tabeli z tabelą atrybutów).

Zakończę stwierdzeniem, że interpolacja dwuliniowa, chociaż rzeczywiście da wartości w zakresie 0..1, nie jest tym, czego chcesz: działa, znajdując co najwyżej cztery oryginalne (30 m) komórki siatki otaczające środek nowej ( 240 m) komórka i interpolacja tylko ich wartości. W związku z tym przeoczy pozostałe 8 * 8–4 = 60 oryginalnych komórek należących do każdego nowego bloku. Ilustruję interpolację dwuliniową na stronie http://www.quantdec.com/SYSEN597/GTKAV/section9/map_algebra.htm : dyskusja rozpoczyna się w pobliżu połowy strony.

Whuber
źródło
Dzięki, whuber, właśnie to zrobiłem - wykorzystałem statystyki bloków w Arc do wygenerowania sumy grupy 8x8, a następnie użyłem kalkulatora rastrowego w QGIS do podzielenia przez 64 i wyrównania pochodzenia, zasięgu i wielkości komórki z resztą moich danych.
stuckGIS
StuckGIS, możesz pominąć drugi krok, używając statystyki bloku do obliczenia średniej z każdego bloku 8 x 8. Wyrównanie nowej siatki polega na odpowiednim określeniu środowiska analizy rastrowej, które - jeśli zostanie wykonane przed rozpoczęciem obliczeń - nastąpi automatycznie. To zmniejsza przepływ pracy do jednego kroku: wykonaj średnią dla bloku.
whuber
4

W ArcGIS, gdy ponownie próbkujesz dane za pomocą dwuliniowego próbkowania, sprawdza tylko wartości czterech środkowych komórek ( dokumentacja ponownego próbkowania ). W związku z tym za pomocą tej metody nadal stracisz dane, jeśli nie zrekompensujesz utraty danych.

Biorąc pod uwagę, że wiemy, że w przypadku ponownie próbkowanych komórek poszukujesz części komórek, które są zalesione, możemy myśleć o tym jako o sumie komórek 30m podzielonych przez 64 (w bloku 240m znajdują się 64 komórki 30m).

Oznacza to, że jeśli możemy utworzyć nowy raster z wartościami środkowymi jako sumą otaczających wartości przy rozdzielczości 30 m, obniżenie rozdzielczości za pomocą ponownego próbkowania z najbliższym sąsiadem lub interpolacja dwuliniowa da nam komórki 240m, które są sumą komórek 30m pokrywa. Możemy to zrobić za pomocą narzędzia sumy ogniskowej na rastrze 30 m.

Wreszcie, gdy mamy 240-metrowy raster ogniskowej, podziel przez 64, aby uzyskać proporcjonalną odpowiedź.

W Idrisi nie jestem pewien algorytmów próbkowania obrazu, podobnie jak w QGIS, ale wyobrażam sobie, że istnieje coś podobnego. Z pewnością w QGIS można przetwarzać raster w Pythonie za pomocą scipy ndimage lub podobnego.

om_henners
źródło