Wczytanie i zapis rastra w R
Odczyt i zapis rastrów z georeferencją w R wykonujemy z zastosowaniem biblioteki raster. Instalację biblioteki wykonujemy używając linii kodu:
1 |
install.packages(‘raster’) |
Po zainstalowaniu należy ją zainicjować (włączyć), aby funkcje w niej zawarte były dostępne do wykorzystania:
1 |
library(raster) |
Na potrzeby tego ćwiczenia pobrałem zobrazowanie składające się z 4 kanałów (niebieskiego, zielonego, czerwonego i bliskiej podczerwieni) z Sentinela 2 dostępne nieodpłatnie. Każdy z kanałów jest zapisany w innym pliku, które należy wczytać do R. Używając funkcji raster.
1 2 3 4 5 6 7 |
b2 = raster(’F:/B02.tif') b3 = raster(’F:/B03.tif') b4 = raster(’F:/B04.tif') b8 = raster(’F:/B08.tif') |
Możemy wyświetlić podstawowe informacje o każdym z nich wprowadzając w konsoli nazwę zmiennej do której zostały zapisane:
1 2 3 4 5 6 7 8 9 10 |
b2 class : RasterLayer dimensions : 10980, 10980, 120560400 (nrow, ncol, ncell) resolution : 10, 10 (x, y) extent : 399960, 509760, 5690220, 5800020 (xmin, xmax, ymin, ymax) coord. ref. : +proj=utm +zone=34 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 data source : F:\B02.tif names : B02 values : 0, 15810 (min, max) |
Dane teledetekcyjne składają się najczęściej z wielu kanałów, które są zapisane w jednym lub wielu plikach (w przykładzie oddzielne pliki) . Do łączenia kanałów i odczytywania danych rastrowych z wielokanałowych służy funkcja (struktura) stack. Jako zmienne funkcji wstawiamy zestaw kanałów, który chcemy zapisać pod jedną zmienną.
1 |
b_all = stack(b2,b3,b4,b8) |
Po wyświetleniu w konsoli zmiennej b_all
1 2 3 4 5 6 7 8 9 10 11 |
b_all class : RasterStack dimensions : 10980, 10980, 120560400, 4 (nrow, ncol, ncell, nlayers) resolution : 10, 10 (x, y) extent : 399960, 509760, 5690220, 5800020 (xmin, xmax, ymin, ymax) coord. ref. : +proj=utm +zone=34 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 names : B02, B03, B04, B08 min values : 0, 0, 0, 0 max values : 15810, 18613, 28000, 25910 |
Można podejrzeć informację o każdym z kanałów. Przy wczytywaniu pliku z wieloma kanałami używamy również tej funkcji z tym, że jako argument wstawiamy ścieżkę do pliku:
1 |
b_all = stack('F:/B_ALL.tif') |
W zmiennej b_all, która jest listą plików rastrowych nadal mamy możliwość wydobycia pojedynczych kanałów używając:
1 2 3 4 5 6 7 8 9 |
b_all[[1]] class : RasterLayer dimensions : 10980, 10980, 120560400 (nrow, ncol, ncell) resolution : 10, 10 (x, y) extent : 399960, 509760, 5690220, 5800020 (xmin, xmax, ymin, ymax) coord. ref. : +proj=utm +zone=34 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0 data source : F:\B02.tif names : B02 values : 0, 15810 (min, max) |
Zapis pliku rastrowego dokonujemy funkcją writeRaster(‘nazwa zmiennej’, filename = ”ścieżka zapisu”,format = ”format zapisu”):
1 |
writeRaster(b_all, filename = "F:/B_all.tif", format = "GTiff") |
Formaty w których można zapisać dane rastrowe można podejrzeć wpisując:
1 |
writeFormats() |
Zapisany plik GeoTIFF zawiera 4 kanały, które można wykorzystać do tworzenia kompozycji barwnych:

