GISProjekt R

Przyspieszanie skryptów – zewnętrzny program (RSAGA)

Co w przypadku, gdy wszystkie funkcje które przetestowaliśmy/napisaliśmy nie pozwalają nam uzyskać zadowalających czasów wykonania zaplanowanego zadania? Możemy skorzystać z innych programów, które posiadają interesujące nas funkcje i mają zaimplementowaną bibliotekę w R. 

Pokażemy Wam jak to zrobić na przykładzie poczciwego Zonal Statistics, który męczymy już od jakiegoś czasu. Do przetwarzania naszych danych wykorzystamy inne otwarte oprogramowanie jakim jest SAGA GIS (http://www.saga-gis.org).

Potrzeba nam będzie do tego biblioteka RSAGA:

install.packages(“RSAGA”)
library(RSAGA)

Biblioteka potrzebuje programu SAGA-GIS zainstalowanego na naszym komputerze. Domyślnie szuka dostępu do niego pod ścieżkami:

C:/Program Files/SAGA-GIS
C:/SAGA-GIS
C:/OSGeo4W64/apps/saga
C:/OSGeo4W64/apps/saga-ltr

W przypadku zainstalowania go w inny miejscu biblioteka będzie szukała go na całym dysku. W celu przyspieszenia całego procesu możemy podać ścieżkę do środowiska SAGI sami:

my_saga_env = rsaga.env("D:/programs/saga-7.0.0_x64/")

Sprawdźmy czy poprawnie utworzyliśmy środowisko wyświetlając wersję naszej SAGI:

rsaga.get.version(env = my_rsaga_env)
[1] "7.0.0"

SAGA-GIS umożliwia przetwarzanie danych poprzez swoje GUI (saga_gui.exe) oraz linię komend (saga_cmd.exe). Biblioteka RSAGA wykorzystuje linię komend. Jak tworzyć komendy można zapoznać się w dokumentacji każdej z wersji dostępnej tutaj: http://www.saga-gis.org/saga_tool_doc/

Krótko mówiąc narzędzia pogrupowane są w biblioteki. Dla każdego z narzędzi możemy zdefiniować parametry. W naszym przypadku skorzystamy z narzędzia “Grid Statistics for Polygons” znajdującego się w bibliotece “shapes_grid”. W R saga_cmd uruchomimy poprzez funkcję rsaga.geoprocessor:

rsaga.geoprocessor(lib = "shapes_grid",module = 2,param = list(GRIDS="d:/GIS_in_R/B08.tif",POLYGONS="d:/GIS_in_R/grid_10x100.shp",RESULT="d:/GIS_in_R/grid_100x100_result.shp"),env = my_rsaga_env)

,gdzie:

lib – to biblioteka z interesującym nas narzędziem

module – to numer porządkowy naszego narzędzia 

param – to lista parametrów narzędzia

W celu zapoznania się jak powinna wyglądać nasza komenda najlepiej zajrzeć do dokumentacji. Na dole opisu każdego narzędzia jest przykład komendy:

http://www.saga-gis.org/saga_tool_doc/7.0.0/shapes_grid_2.html

Po wykonaniu w lokalizacji podanej w RESULT pojawi się plik wektorowy z przypisanymi wartościami statystyk z rastra. Wczytajmy go:

library(sf)
shp = read_sf("d:/GIS_in_R/grid_100x100_result.shp")

I przejrzyjmy statystyki:

> shp

Simple feature collection with 1000 features and 9 fields
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 405440 ymin: 5690759 xmax: 504280 ymax: 5799481
epsg (SRID):    32634
proj4string:    +proj=utm +zone=34 +datum=WGS84 +units=m +no_defs
# A tibble: 1,000 x 10

     FID B08..CELLS. B08..MIN. B08..MAX. B08..RANGE. B08..SUM. B08..MEAN. B08..VARIAN B08..STDDEV                          geometry

   <dbl>       <dbl>     <dbl>     <dbl>       <dbl>     <dbl>      <dbl>       <dbl>       <dbl>                     <POLYGON [m]>

 1     0           4      2157      2219          62      8776      2194         601         24.5 ((405460 5690769, 405460 5690768~

 2     1           4      1758      2468         710      8434      2108.      67641.       260.  ((416440 5690769, 416440 5690768~

 3     2           4      2217      2313          96      9042      2260.       1173.        34.2 ((427420 5690769, 427420 5690768~

 4     3           4      2561      2735         174     10478      2620.       5017.        70.8 ((438400 5690769, 438400 5690768~

 5     4           4      2770      2861          91     11274      2818.       1197.        34.6 ((449380 5690769, 449380 5690768~

 6     5           4      2222      2367         145      9184      2296        3534.        59.4 ((460360 5690769, 460360 5690768~

 7     6           4      2568      2869         301     10939      2735.      12941.       114.  ((471340 5690769, 471340 5690768~

 8     7           4      1774      1902         128      7360      1840        3252.        57.0 ((482320 5690769, 482320 5690768~

 9     8           4      1970      2113         143      8161      2040.       4542.        67.4 ((493300 5690769, 493300 5690768~

10     9           4      1916      2092         176      7974      1994.       4463.        66.8 ((504280 5690769, 504280 5690768~

# ... with 990 more rows

Biblioteka RSAGA posiada zaimplementowaną część narzędzi SAGA-GIS bezpośrednio w R, których można użyć bez szczegółowej znajomości dokumentacji. Taką funkcją jest na przykład rsaga.contour służąca do generowania warstwic. Zapoznanie tych funkcji pozostawiamy już Wam.

Już niebawem w kolejnym wpisie pokażemy Wam jak możecie wykorzystać funkcje innych programów w Waszym kodzie, które nie mają jeszcze biblioteki w R.