2 R a dane przestrzenne

2.1 Wprowadzenie

2.1.1 Reprezentacja danych nieprzestrzennych

Skrypty i funkcje w języku R są zbudowane na podstawie szeregu obiektów nieprzestrzennych. Do wbudowanych typów obiektów należą:

  • Wektory (ang. vector):
    • liczbowe (ang. integer, numeric) - c(1, 2, 3) i c(1.21, 3.32, 4.43)
    • znakowe (ang. character) - c("jeden", "dwa", "trzy")
    • logiczne (ang. logical) - c(TRUE, FALSE)
  • Ramki danych (ang. data.frame) - to zbiór zmiennych (kolumn) oraz obserwacji (wierszy) zawierających różne typy danych
  • Macierze (ang. matrix) - to zbiór kolumn oraz wierszy zawierających wektory jednego typu
  • Listy (ang. list) - to sposób przechowywania obiektów o różnych typach i różnej długości

Dokładniejsze wyjaśnienie powyższych typów obiektów można znaleźć w rozdziałach 5 i 7 książki Elementarz programisty: Wstęp do programowania używając R.

2.1.2 Pakiety

R zawiera także wiele funkcji pozwalających na przetwarzanie, wizualizację i analizowanie danych przestrzennych. Zawarte są one w szeregu pakietów (zbiorów funkcji), między innymi:

  • Obsługa danych przestrzennych - sf, stars, raster, terra, sp, rgdal, rgeos
  • Geostatystyka - gstat, geoR, geoRglm

Więcej szczegółów na ten temat pakietów R służących do analizy przestrzennej można znaleźć pod adresem https://cran.r-project.org/web/views/Spatial.html.

2.1.3 Reprezentacja danych przestrzennych

Dane przestrzenne mogą być reprezentowane w R poprzez wiele różnych klas obiektów z użyciem różnych pakietów R. Przykładowo dane wektorowe mogą być reprezentowane poprzez obiekty klasy Spatial* z pakietu sp oraz obiekty klasy sf z pakietu sf.

Pakiet sf oparty jest o standard OGC o nazwie Simple Features. Łączy on możliwości zarówno pakietu sp jak i pakietów rgdal i rgeos. Więkość jego funkcji zaczyna się od prefiksu st_. Ten pakiet definiuje klasę obiektów sf, która jest sposobem reprezentacji przestrzennych danych wektorowych. Pozwala on na stosowanie dodatkowych typów danych wektorowych (np. poligon i multipoligon to dwie oddzielne klasy), łatwiejsze przetwarzanie danych, oraz obsługę przestrzennych baz danych takich jak PostGIS. Pakiet sf jest używany przez kilkadziesiąt dodatkowych pakietów R, jednak wiele metod i funkcji nadal wymaga obiektów klasy sp. Porównanie funkcji dostępnych w pakietach sp i sf można znaleźć pod adresem https://github.com/r-spatial/sf/wiki/Migrating. Więcej o pakiecie sf można przeczytać w rozdziale drugim książki Geocomputation with R.

Dane rastrowe są reprezentowane między innymi poprzez klasę SpatialGridDataFrame z pakietu sp, obiekty klasy Raster* z pakietu raster, oraz klasę stars z pakietu stars.

Pakiet stars (scalable, spatiotemporal tidy arrays) pozwala na obsługę różnorodnych danych przestrzennych i czasoprzestrzennych reprezentowanych jako kostka danych (ang. data cubes). Obejmuje to, między innymi, regularne i nieregularne dane rastrowe, ale także czasoprzestrzenne dane wektorowe. Ten pakiet zapewnia klasy i metody do wczytywania, przetwarzania, wizualizacji czy zapisywania kości danych. Posiada on także wbudowaną integrację z pakietem sf.

2.1.4 GDAL/OGR

Pakiety sf czy stars wykorzystują zewnętrzne biblioteki GDAL/OGR w R do wczytywania i zapisywania danych przestrzennych. GDAL to biblioteka zawierająca funkcje służące do odczytywania i zapisywania danych w formatach rastrowych, a OGR to biblioteka służąca to odczytywania i zapisywania danych w formatach wektorowych.

2.1.5 PROJ

Dane przestrzenne powinny być zawsze powiązane z układem współrzędnych - w ten sposób możliwe jest określenie gdzie są one położone, a także jak wykonywane są na nich operacje przestrzenne. Biblioteka PROJ jest używana przez pakiety sf i stars do określania i konwersji układów współrzędnych. Układy współrzędnych mogą być opisywane na szereg sposobów, np. poprzez systemy kodów. Najpopularniejszym z nich jest system kodów EPSG (ang. European Petroleum Survey Group), który pozwala on na łatwe identyfikowanie układów współrzędnych. Przykładowo, układ PL 1992 może być określony jako "EPSG:2180". Taki sposób określania układów współrzędnych wymaga jedynie znajomości odpowiedniego numery dla danego obszaru.

Dane przestrzenne przechowują też opis tego układu współrzędnych w bardziej złożny sposób nazwany WKT2. Zawiera on opis elementów związanych z konkretnym układem współrzędnych, takich jak jednostka, elipsoida odwzorowania, itd.

Warto też wiedzież, że przez wiele lat główną rolę pełniła reprezentacja proj4string, np. "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_0=-5300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs", która określała własności układu współrzędnych. Współcześnie jednak ta reprezentacja nie jest zalecana do użycia.

Strona http://www.spatialreference.org/ zawiera bazę danych układów współrzędnych.

2.1.6 Układy współrzędnych

Dane przestrzenne mogą być reprezentowane używając układów współrzędnych geograficznych lub prostokątnych płaskich.

W układzie współrzędnych geograficznych proporcje pomiędzy współrzędną oznaczającą długość geograficzną (X) a oznaczającą szerokość geograficzną (Y) nie są równe 1:1. Realna wielkość oczka siatki (jego powierzchnia) jest zmienna, a jednostka mapy jest abstrakcyjna w tych układach. W efekcie nie pozwala to na proste określanie odległości czy powierzchni. Powyższe cechy układów współrzędnych geograficznych powodują, że do większości algorytmów w geostatystyce wykorzystywane są układy współrzędnych prostokątnych płaskich.

Układy współrzędnych prostokątnych płaskich określane są w miarach liniowych (np. metrach). W tych układach proporcje między współrzędną X a Y są równe 1:1, a wielkość oczka jest stała.

2.1.7 GEOS

Pakiet sf używa biblioteki GEOS do wykonywania operacji przestrzennych. Przykładowe funkcje tej biblioteki to tworzenie buforów, wyliczanie centroidów, określanie relacji topologicznych (np. przecina, zawiera, etc.) i wiele innych.

2.2 Import danych

R pozwala na odczytywanie danych przestrzennych z wielu formatów. Do najpopularniejszych należą dane tekstowe z plików o rozszerzeniu .csv, dane wektorowe z plików .shp, dane rastrowe z plików w formacie GeoTIFF, oraz bazy danych przestrzennych z plików rozszerzeniu .gpkg.

2.2.1 Format .csv (dane punktowe)

Dane z plików tekstowych (np. rozszerzenie .csv) można odczytać za pomocą uogólnionej funkcji read.table() lub też funkcji szczegółowych - read.csv() lub read.csv2().

##       srtm clc      temp      ndvi      savi        x        y
## 1 175.7430   1 13.852222 0.6158061 0.4189449 750298.0 716731.6
## 2 149.8111   1 15.484209 0.5558816 0.3794864 753482.9 717331.4
## 3 272.8583  NA 12.760814 0.6067462 0.3745572 747242.5 720589.0
## 4 187.2777   1 14.324648 0.3756170 0.2386246 755798.9 718828.1
## 5 260.1366   1 15.908549 0.4598393 0.3087599 746963.5 717533.5
## 6 160.1416   2  9.941118 0.5600288 0.3453627 756801.6 720474.1

Po wczytaniu za pomocą funkcji read.csv(), nowy obiekt (np. dane_punktowe) jest reprezentowany za pomocą klasy nieprzestrzennej data.frame. Aby obiekt został przetworzony do klasy przestrzennej, konieczne jest określenie które kolumny zawierają informacje o współrzędnych; w tym wypadku współrzędne znajduję się w kolumnach x oraz y. Nadanie układu współrzędnych odbywa się poprzez funkcję st_as_sf().

## Simple feature collection with 248 features and 5 fields
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: 745592.5 ymin: 712642.4 xmax: 756967.8 ymax: 721238.7
## CRS:            NA
## First 10 features:
##        srtm clc      temp      ndvi      savi                  geometry
## 1  175.7430   1 13.852222 0.6158061 0.4189449   POINT (750298 716731.6)
## 2  149.8111   1 15.484209 0.5558816 0.3794864 POINT (753482.9 717331.4)
## 3  272.8583  NA 12.760814 0.6067462 0.3745572   POINT (747242.5 720589)
## 4  187.2777   1 14.324648 0.3756170 0.2386246 POINT (755798.9 718828.1)
## 5  260.1366   1 15.908549 0.4598393 0.3087599 POINT (746963.5 717533.5)
## 6  160.1416   2  9.941118 0.5600288 0.3453627 POINT (756801.6 720474.1)
## 7  192.9223   2 13.514751 0.6009588 0.3737249   POINT (752698 718623.6)
## 8  234.9989   1 12.919225 0.4979195 0.2978503 POINT (749399.8 716955.2)
## 9  228.7312   1 19.247132 0.3819634 0.2077981   POINT (748766.6 713889)
## 10 240.5474   2 10.529105 0.5795159 0.3805268   POINT (749290.4 718861)

Ważne, ale nie wymagane, jest także dodanie informacji o układzie przestrzennym danych za pomocą funkcji st_set_crs().

Proste wizualizacje uzyskanych danych klasy przestrzennej, np. sf czy stars, można uzyskać za pomocą funkcji plot() (rycina 2.1 i 2.2).

Efekt działania funkcji plot na obiekcie klasy sf.

Rycina 2.1: Efekt działania funkcji plot na obiekcie klasy sf.

2.2.2 Dane wektorowe

Dane wektorowe (np. w formacie GeoPackage czy ESRI Shapefile) można odczytać za pomocą funkcji read_sf() z pakietu sf. Przyjmuje ona co najmniej jeden argument - dsn, który określa główny plik w którym znajdują się dane.

2.2.3 Dane rastrowe

Istnieje kilka sposobów odczytu danych rastrowych w R. Do najpopularniejszych należą funkcje readGDAL() z pakietu rgdal oraz raster() z pakietu raster. W poniższym przykładzie użyjemy funkcji read_stars() z pakietu stars. Należy w niej jedynie podać ścieżkę do pliku rastrowego.

## stars object with 2 dimensions and 1 attribute
## attribute(s):
##   siatka.tif   
##  Min.   :0     
##  1st Qu.:0     
##  Median :0     
##  Mean   :0     
##  3rd Qu.:0     
##  Max.   :0     
##  NA's   :1270  
## dimension(s):
##   from  to offset delta  refsys point values    
## x    1 127 745542    90 unnamed FALSE   NULL [x]
## y    1  96 721256   -90 unnamed FALSE   NULL [y]
Efekt działania funkcji plot na obiekcie klasy sf.

Rycina 2.2: Efekt działania funkcji plot na obiekcie klasy sf.

2.3 Przeglądanie danych przestrzennych

2.3.1 Struktura obiektu

Podstawowe informacje o obiekcie można uzyskać poprzez wpisanie jego nazwy:

## Simple feature collection with 248 features and 5 fields
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: 745592.5 ymin: 712642.4 xmax: 756967.8 ymax: 721238.7
## projected CRS:  ETRS89 / Poland CS92
## First 10 features:
##        srtm clc      temp      ndvi      savi                  geometry
## 1  175.7430   1 13.852222 0.6158061 0.4189449   POINT (750298 716731.6)
## 2  149.8111   1 15.484209 0.5558816 0.3794864 POINT (753482.9 717331.4)
## 3  272.8583  NA 12.760814 0.6067462 0.3745572   POINT (747242.5 720589)
## 4  187.2777   1 14.324648 0.3756170 0.2386246 POINT (755798.9 718828.1)
## 5  260.1366   1 15.908549 0.4598393 0.3087599 POINT (746963.5 717533.5)
## 6  160.1416   2  9.941118 0.5600288 0.3453627 POINT (756801.6 720474.1)
## 7  192.9223   2 13.514751 0.6009588 0.3737249   POINT (752698 718623.6)
## 8  234.9989   1 12.919225 0.4979195 0.2978503 POINT (749399.8 716955.2)
## 9  228.7312   1 19.247132 0.3819634 0.2077981   POINT (748766.6 713889)
## 10 240.5474   2 10.529105 0.5795159 0.3805268   POINT (749290.4 718861)

Obiekty sf są zbudowane z tabeli (data frame) wraz z dodatkową kolumną zawierającą geometrie (często nazywaną geometry lub geom) oraz szeregu atrybutów przestrzennych. Strukturę obiektu sf można sprawdzić za pomocą funkcji str():

## Classes 'sf' and 'data.frame':	248 obs. of  6 variables:
##  $ srtm    : num  176 150 273 187 260 ...
##  $ clc     : int  1 1 NA 1 1 2 2 1 1 2 ...
##  $ temp    : num  13.9 15.5 12.8 14.3 15.9 ...
##  $ ndvi    : num  0.616 0.556 0.607 0.376 0.46 ...
##  $ savi    : num  0.419 0.379 0.375 0.239 0.309 ...
##  $ geometry:sfc_POINT of length 248; first list element:  'XY' num  750298 716732
##  - attr(*, "sf_column")= chr "geometry"
##  - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA
##   ..- attr(*, "names")= chr [1:5] "srtm" "clc" "temp" "ndvi" ...

Obiekty stars mogą przyjmować różną formę w zależności od tego czy reprezentują one dane wektorowe czy rastrowe oraz tego ile wymiarów posiadają te dane. Przykładowy obiekt siatka_stars posiada dwa wymiary (x i y) oraz jeden atrybut (siatka.tif).

## stars object with 2 dimensions and 1 attribute
## attribute(s):
##   siatka.tif   
##  Min.   :0     
##  1st Qu.:0     
##  Median :0     
##  Mean   :0     
##  3rd Qu.:0     
##  Max.   :0     
##  NA's   :1270  
## dimension(s):
##   from  to offset delta  refsys point values    
## x    1 127 745542    90 unnamed FALSE   NULL [x]
## y    1  96 721256   -90 unnamed FALSE   NULL [y]

Jest on zbudowany jako lista zawierająca dwuwymiarową macierz wraz ze zbiorem metadanych (można to sprawdzić za pomocą funkcji str(siatka_stars)).

2.3.2 Tabla atrybutów

Funkcja st_drop_geometry() pozwala na pozbycie się informacji przestrzennych z obiektu klasy sf i uzyskanie jedynie obiektu klasy data.frame zawierającego nieprzestrzenne informacje o kolejnych punktach w tym zbiorze.

##       srtm clc      temp      ndvi      savi
## 1 175.7430   1 13.852222 0.6158061 0.4189449
## 2 149.8111   1 15.484209 0.5558816 0.3794864
## 3 272.8583  NA 12.760814 0.6067462 0.3745572
## 4 187.2777   1 14.324648 0.3756170 0.2386246
## 5 260.1366   1 15.908549 0.4598393 0.3087599
## 6 160.1416   2  9.941118 0.5600288 0.3453627

Przetworzenie obiektu klasy stars na data.frame odbywa się natomiast używając funkcji as.data.frame().

##          x        y siatka.tif
## 1 745586.7 721211.2         NA
## 2 745676.7 721211.2         NA
## 3 745766.7 721211.2         NA
## 4 745856.7 721211.2         NA
## 5 745946.7 721211.2         NA
## 6 746036.7 721211.2         NA

2.3.3 Współrzędne

Funkcja st_coordinates() pozwala na wydobycie współrzędnych zarówno z obiektu punktowego klasy sf jak i siatki klasy stars.

##          X        Y
## 1 750298.0 716731.6
## 2 753482.9 717331.4
## 3 747242.5 720589.0
## 4 755798.9 718828.1
## 5 746963.5 717533.5
## 6 756801.6 720474.1
##          x        y
## 1 745586.7 721211.2
## 2 745676.7 721211.2
## 3 745766.7 721211.2
## 4 745856.7 721211.2
## 5 745946.7 721211.2
## 6 746036.7 721211.2

2.3.4 Obwiednia

Funkcja st_bbox() określa zasięg przestrzenny danych w jednostkach mapy.

##     xmin     ymin     xmax     ymax 
## 745592.5 712642.4 756967.8 721238.7

2.3.5 Układ współrzędnych

Funkcja st_crs() wyświetla definicję układu współrzędnych.

## Coordinate Reference System:
##   User input: EPSG:2180 
##   wkt:
## PROJCRS["ETRS89 / Poland CS92",
##     BASEGEOGCRS["ETRS89",
##         DATUM["European Terrestrial Reference System 1989",
##             ELLIPSOID["GRS 1980",6378137,298.257222101,
##                 LENGTHUNIT["metre",1]]],
##         PRIMEM["Greenwich",0,
##             ANGLEUNIT["degree",0.0174532925199433]],
##         ID["EPSG",4258]],
##     CONVERSION["Poland CS92",
##         METHOD["Transverse Mercator",
##             ID["EPSG",9807]],
##         PARAMETER["Latitude of natural origin",0,
##             ANGLEUNIT["degree",0.0174532925199433],
##             ID["EPSG",8801]],
##         PARAMETER["Longitude of natural origin",19,
##             ANGLEUNIT["degree",0.0174532925199433],
##             ID["EPSG",8802]],
##         PARAMETER["Scale factor at natural origin",0.9993,
##             SCALEUNIT["unity",1],
##             ID["EPSG",8805]],
##         PARAMETER["False easting",500000,
##             LENGTHUNIT["metre",1],
##             ID["EPSG",8806]],
##         PARAMETER["False northing",-5300000,
##             LENGTHUNIT["metre",1],
##             ID["EPSG",8807]]],
##     CS[Cartesian,2],
##         AXIS["northing (x)",north,
##             ORDER[1],
##             LENGTHUNIT["metre",1]],
##         AXIS["easting (y)",east,
##             ORDER[2],
##             LENGTHUNIT["metre",1]],
##     USAGE[
##         SCOPE["unknown"],
##         AREA["Poland"],
##         BBOX[49,14.14,55.93,24.15]],
##     ID["EPSG",2180]]

2.4 Przetwarzanie danych przestrzennych

2.4.1 Łączenie danych rastrowych

Połączenie danych rastrowych pochodzących z kilku plików może odbyć się poprzez wczytanie ich jako osobnych obiektów klasy stars a następnie połączenie ich używając funkcji c().

W efekcie uzyskiwany jest obiekt posiadający dwa atrybuty odpowiadające wczytanym plikom.

## stars object with 2 dimensions and 2 attributes
## attribute(s):
##    srtm.tif         clc.tif     
##  Min.   :143.7   Min.   :1.000  
##  1st Qu.:186.5   1st Qu.:1.000  
##  Median :216.5   Median :1.000  
##  Mean   :212.2   Mean   :1.421  
##  3rd Qu.:235.3   3rd Qu.:2.000  
##  Max.   :288.8   Max.   :4.000  
##  NA's   :1242    NA's   :1270   
## dimension(s):
##   from  to offset delta               refsys point values    
## x    1 127 745542    90 ETRS89 / Poland CS92 FALSE   NULL [x]
## y    1  96 721256   -90 ETRS89 / Poland CS92 FALSE   NULL [y]

2.4.2 Wydobywanie wartości z rastra

Posiadając dwa obiekty, jeden punktowy a drugi rastrowy, dotyczące tego samego obszaru możliwe jest wydobycie wartości dla punktów używając funkcji st_join().

2.5 Eksport danych

2.5.1 Zapisywanie danych wektorowych

R pozwala również na zapisywanie danych przestrzennych. W przypadku zapisu danych wektorowych za pomocą funkcji write_sf() konieczne jest podanie ścieżki i nazwy zapisywanego obiektu wraz z rozszerzeniem (np. dane/granica.gpkg).

2.5.2 Zapisywanie danych rastrowych

Funkcja write_sf() pozwala również na zapisywanie danych rastrowych. Wymaga ona podania dwóch argumentów - nazwy zapisywanego obiektu (np. siatka_stars) oraz ścieżki i nazwy nowego pliku wraz z rozszerzeniem (np. dane/nowa_siatka.tif).

2.6 Wizualizacja danych 2D

Do wizualizacji danych przestrzennych w R służy co najmniej kilkanaście różnych pakietów. Poniżej pokazane są przykłady standardowej funkcji plot(). Więcej o wizualizacji danych przestrzennych można przeczytać w rozdziale Making maps with R książki Geocomputation with R.

2.6.1 Dane punktowe

Funkcja plot() idealnie nadaje się do szybkiego przyjrzenia się, np. rodzajowi próbkowania danych. Domyślnie wyświetla ona szereg map - po jednej dla każdej zmiennej (rycina 2.3).

Użycie funkcji plot na danych punktowych klasy sf.

Rycina 2.3: Użycie funkcji plot na danych punktowych klasy sf.

Do wyświetlenia tylko geometrii (np. punktów) bez atrybutów służy funkcja plot() połączona z funkcją st_geometry() (rycina 2.4).

Użycie funkcji plot do wyświetlenia geometrii obiektu klasy sf.

Rycina 2.4: Użycie funkcji plot do wyświetlenia geometrii obiektu klasy sf.

Aby wyświetlić tylko jedną zmienną należy ją zadeklarować poprzez nawias kwadratowy. Poniżej można zobaczyć przykłady dla zmiennej srtm (rycina 2.5).

Użycie funkcji plot do wyświetlenia zmiennej numerycznej obiektu klasy sf.

Rycina 2.5: Użycie funkcji plot do wyświetlenia zmiennej numerycznej obiektu klasy sf.

2.6.2 Dane punktowe - kategorie

Nie zawsze dane mają postać ciągłych wartości - bywają one również określeniami różnych klas. W takich sytuacjach należy wcześniej przetworzyć typ danych do postaci kategoryzowanej (as.factor()). Następnie można je wyświetlić za pomocą funkcji plot() (rycina 2.6).

Użycie funkcji plot do wyświetlenia zmiennej kategoryzowanej obiektu klasy sf.

Rycina 2.6: Użycie funkcji plot do wyświetlenia zmiennej kategoryzowanej obiektu klasy sf.

2.6.3 Rastry

Wyświetlanie danych w formacie rastrowym może również odbyć się z użyciem funkcji plot(). Domyślnie wyświetla ona pierwszą zmienną (lub warstwę) znajdującą się w obiekcie klasy stars (rycina 2.7).

Użycie funkcji plot do wyświetlenia pierwszej zmiennej obiektu klasy stars.

Rycina 2.7: Użycie funkcji plot do wyświetlenia pierwszej zmiennej obiektu klasy stars.

Zmiana kolorów mapy odbywa się poprzez podanie wektora kolorów (palety) w argumencie col (rycina 2.8).

Użycie funkcji plot do wyświetlenia pierwszej zmiennej obiektu klasy stars wraz z zadaną paletą kolorów.

Rycina 2.8: Użycie funkcji plot do wyświetlenia pierwszej zmiennej obiektu klasy stars wraz z zadaną paletą kolorów.

Aby wyświetlić tylko wybraną zmienną należy ją zadeklarować poprzez indeksowanie. Opiera się to o kilka indeksów, np. dla obiektu siatka_stars są to [indeks atrybutu, indeksy kolumn, indeksy wierszy]1. Przykładowo indeks [2, , ] pozwala na wyświetlenie drugiego atrybutu. Możliwe jest tutaj również użycie uproszczonej formy dwie_stars[2] (rycina 2.9).

Użycie funkcji plot do wyświetlenia wybranej zmiennej obiektu klasy stars.

Rycina 2.9: Użycie funkcji plot do wyświetlenia wybranej zmiennej obiektu klasy stars.

Indeksowanie pozwala też na wyświetlenie fragmentu danych rastrowych. Na przykład, indeks [1, 2:50, 1:20] pozwala na wyświetlenie pierwszej zmiennej, ale tylko dla kolumn od 20 do 50 i wierszy od 1 do 20 (rycina 2.10).

Użycie funkcji plot do wyświetlenia wybranej zmiennej obiektu klasy stars dla wybranego zasięgu przestrzennego.

Rycina 2.10: Użycie funkcji plot do wyświetlenia wybranej zmiennej obiektu klasy stars dla wybranego zasięgu przestrzennego.

2.7 Zadania

  1. Wczytaj dane z pliku punkty_ndvi.csv i przetwórz je do postaci obiektu przestrzennego ndvi_p.
  2. Stwórz mapę zmiennej ndvi z nowo utworzonego obiektu. (Dodatkowo: zapisz mapę do pliku graficznego punkty_ndvi.png).
  3. Zapisz obiekt ndvi_p do formatu GeoPackage oraz do formatu ESRI Shapefile.

  1. Liczba indeksów zależy od złożoności obiektu klasy stars. Przykładowo dla obiektów posiadających trzy wymiary, np. wielokanałowe dane satelitarne, mogą to być [indeks atrybutu, indeksy kolumn, indeksy wierszy, indeksy kanału].