Celem ćwiczenia jest wykorzystanie danych sagelitarnych oraz lotniczych i na ich podstawie dokonanie oceny ich dokładności. W tym celu zostaną wykorzystane następujące rastry: lotnicze2.tif, sentinel2.tif oraz landsat8.tif
W ramach tego projektu użyte zostały:
• rastry: lotnicze2.tif, sentinel2.tif oraz landsat8.tif
• plik „dana_ref.shp”
Obszarem badań jest miasto Post Falls i jego okolice w północno-zachodniej części stanu Idaho.
Na samym początku należy zainstalować oraz wczytać pakiet: raster, sf, plotly oraz RStoolbox.
Następnie wczytujemy rastry lotnicze2.tif, sentinel2.tif oraz landsat8.tif wykorzystując funkcję stack().
lotnicze = stack("lotnicze2.tif")
sentinel = stack("sentinel2.tif")
landsat = stack("landsat8.tif")
Kolejnym krokiem jest zainstalowanie i wczytanie pakietu RStoolbox. Zawiera on szereg narzędzi przydatnych w teledetekcji m.in.: superClass(), który zostanie wykorzystany w dalszej części.
Potem wczytujemy plik „dane_ref.shp” (za pomocą funkcji shapefile() z pakietu raster), zawierający poligony reprezentujące 5 klas pokrycia terenu: wodę, gleby, lasy, niską roślinność oraz zabudowę.
poligony = shapefile("dane_ref.shp")
Potem wykonujemy klasyfikacje przu użuciu funkcji superClass. Do jej wykonania należy się posłużyć: rastrem, danymi treningowymi (trainData) oraz zmienną mówiąca nam o klasie pokrycia terenu (responseCol). Klasyfikację wykonujemy dla każdego z 3 rastrów.
klasyfikacja1 = superClass(landsat, dane_tr, responseCol = "klasa", model = "rf")
klasyfikacja2 = superClass(sentinel, dane_tr, responseCol = "klasa", model = "rf")
klasyfikacja3 = superClass(lotnicze, dane_tr, responseCol = "klasa", model = "rf")
Do ich wizualizacji można posłużyć się funkcją plot().
Następnym krokiem jest wczytanie pliku “dane_wal”.
dane_val = shapefile("dane_wal.shp")
Po jego wczytaniu wykorzystujemy funkcję superClass. W tym przypadku podstawiamy poligon “dane_wal.shp” jako dane valData. Pozwoli nam wtedy na ocenę dokładności.
klasyfikacja1_1 = superClass(landsat, dane_tr, dane_val, responseCol = "klasa", model = "rf")
klasyfikacja1_2 = superClass(sentinel, dane_tr, dane_val, responseCol = "klasa", model = "rf")
klasyfikacja1_3 = superClass(lotnicze, dane_tr, dane_val, responseCol = "klasa", model = "rf")
Do ich wizualizacji można posłużyć się funkcją plot().
Lista plotów:
landsat
sentinel
zdjęcie lotnicze
Warto w tym przypadku zwrócić uwagę na rożdzielczość tych rastrów. Zarówno rastry pozyskane z Landsata i Sentinela mają rozdzielczość 30x30, natomiast dane lotnicze 1x1. Ma to swoje przełożenie na efekt końcowy, gdyż te ostatnie są bardziej dokładne i precyzyjne.