Przetwarzanie danych rastrowych
1 Cel ćwiczenia
Celem ćwiczenia jest omówienie podstawowych funkcji przetwarzania danych rastrowych.
- Konwersja danych wektorowych do danych rastrowych
- Konwersja danych rastrowych do danych wektorowych
- Zmiana układu współrzędnych
- Przepróbkowanie danych rastrowych (ang. resampling)
- Agregacja danych rastrowych do niższej rozdzielczości
2 Dane
W ćwiczeniu zostaną wykorzystane dane zapisane w geopaczce dane_raster.gpkg
- ua2018 - warstwa wektorowa Urban Atlas
- srtm_wgs84 - warstwa rastrowa przedstawiająca dane dotyczące wysokości terenu pochodzące z projektu SRTM.
3 Rasteryzacja
Raster - Conversion - Rasterize (Vector to raster)
- wykorzystuje polecenie
gdal_rasterize
z biblioteki GDAL - więcej: https://docs.qgis.org/3.34/en/docs/user_manual/processing_algs/gdal/vectorconversion.html#rasterize-vector-to-raster
- Wczytanie warstwy wektorowej
ua2018
z geopaczkidane_raster.gpkg
. - Rasteryzacja danych wektorowych:
Raster - Conversion - Rasterize (Vector to raster)
Input layer: ua2018
Field to use for a burn-in value: code
- Pole musi mieć format numeryczny (liczby całkowite lub liczby rzeczywiste). wybrano pole “code” zawierające kod klasy pokrycia terenu zapisany jako liczba całkowita.
Output raster size units: georeferenced units
- Pixels: wielkość rastra definiowana poprzez podanie liczby kolumn oraz wierszy, np. width/height równe 100 oznacza, że wynikowy raster będzie miał 100x100 pikseli. Rozdzielczość komórki zostanie wyliczona na podstawie zasięgu danych wektorowych jako xmax-xmin/100 oraz ymax-ymin/100.
- Georeferenced units: wielkość rastra definiowana poprzez podanie wielkości komórki w jednostkach metrycznych (w przypadku układu EPSG: 3035 są to metry). Np. wskazanie width/height jako 10 oznacza, że każda komórka będzie mieć 10x10m.
Width/Horizontal resolution (szerokość/rozdzielczość pozioma): 10
- Parametr width (szerokość) odnosi się do wielkości rastra zdefiniowanego przez liczbę kolumn (liczba komórek w osi x)
- Parametr horizontal resolution (rozdzielczość pozioma) odnosi się do wielkości jednej komórki w osi x.
Height/Vertical resolution (wysokość/rozdzielczość pionowa): 10
- parametr height (wysokość) odnosi się do wielkości rastra zdefiniowanego przez liczbę wierszy (liczba komórek w osi y)
- parametr vertical resoultion (rozdzielczość pionowa) odnosi się do wielkości jednej komórki w osi y.
Output extent (wyjściowy zasięg): obliczyć na podstawie warstwy ua2018.
- zasieg wynikowej warstwy rastrowej.
- może być obliczony na podstawie warstwy wektorowej.
Assign a specified nodata value to output bands: 0.
- przypisanie wartości jako NoData. Domyślnie jest to wartość 0.
Advanced parameters: Output data type (wynikowy typ danych): Wskazać Int32
- pozwala na zdefiniowanie typu danych w warstwie wynikowej
- liczby całkowite (integer): Byte, Int16, Int32, UInt16, UInt32
- liczby zmiennoprzecinkowe (float): Float32, Float64
Rasterized - nazwa i ścieżka pliku wynikowego.
GDAL/OGR console (polecenie GDAL/OGR)
- przetwarzanie danych rastrowych w QGIS jest wykonywane za pomocą poleceń biblioteki GDAL.
gdal_rasterize -l ua2018 -a code -tr 10.0 10.0 -a_nodata 0.0 -ot Int32 -of GTiff /SIG/dane_wynikowe/dane_poznan.gpkg /home/anna/ua10m.tif
Polecenie gdal_rasterize
https://gdal.org/programs/gdal_rasterize.html
- \(-l\) - wskazuje nazwę pliku wejściowego (w interfejsie graficznym to Input layer)
- \(-a\) - atrybut wybrany do wpisania w wartości komórek (w interfejsie graficznym to Field to use for a burn-in value)
- \(-tr\) - rozdzielczość komórki rastra (georeferenced units,
, ), parametr \(-ts\) pozwala na zdefiniowanie wielkości rastra wynikowego poprzez podanie liczby komórek w osi x (szerokość) oraz osi y (wysokość) - \(-a_{nodata}\) - zdefiniowanie wartości przypisanych jako nodata
- \(-ot\) - wynikowy typ danych
- \(-of\) - format pliku wynikowego
- ścieżka do wejściowego pliku wektorowego - ścieżka do wynikowego pliku rastrowego
Dlaczego jako typ danych wynikowych wybrano Int32? Czy można wskazać typ Int16? Jaki jeszcze inny typ danych można użyć w tym przykładzie?
Wykonać rasteryzację pliku ua2018 definiując wielkość w pikselach, szerokość: 130 pikseli, wysokość: 100 pikseli. Zapisać plik jako ua130_100.tif
Wykonać rasteryzację pliku ua2018 definiując wielkość komórki jako 250m. Zapisać plik jako ua250m.tif
4 Informacje o warstwie rastrowej
- Informacje o pliku wynikowym dostępne są w zakładce Information we właściwościach warstwy rastrowej. - Informacje o pliku wynikowym można także pozyskać używając polecenia
Raster Miscellaneus - Raster information
, które odwołuje się do polecenia z biblioteki GDALgdal_info
Zapoznać się z informacjami o warstwie rastrowej ua130_100. Jaka jest rozdzielczość komórki?
Zapoznać się informacjami o warstwie rastrowej ua250m. Jaka jest wielkość rastra wyrażona liczbą kolumn oraz wierszy.
5 Konwersja warstwy rastrowej do warstwy wektorowej
Raster - Conversion - Polygonize (raster to vevtor)
- wykorzystuje polecenie
polygonize
z biblioteki GDAL. - więcej: https://docs.qgis.org/3.34/en/docs/user_manual/processing_algs/gdal/rasterconversion.html#polygonize-raster-to-vector
Konwersja warstwy rastrowej ua10m
do warstwy wektorowej.
- Input layer: ua10m.
- Name of the field to create: Code
- Vectorized: ua10m_wektor.gpkg
6 Zmiana układu odniesienia warstwy rastrowej
Raster - Projections - Warp (reproject)
- wykorzystuje polecenie
gdalwarp
z biblioteki GDAL. - więcej https://docs.qgis.org/3.34/en/docs/user_manual/processing_algs/gdal/rasterprojections.html#warp-reproject
Zamiana układu współrzędnych warstwy srtm_wgs84
- Otworzyć nowe okno QGIS i wczytać warstwę
srtm_wgs84
z geopaczkidane_raster.gpkg
- Zmiana układu współrzędnych z WGS84 na PUWG1992 (
Raster - Projections - Warp (reproject)
)
Input layer: srtm_wgs84
Source CRS: EPSG:4326
- Układ współrzędnych dla warstwy wejściowej
Target CRS: EPSG:2180
- Układ współrzędnych dla warstwy wynikowej
Resampling method to use: bilinear
- Metoda przepróbkowania danych użyta do “wyliczenia” wartości w wynikowym pliku rastrowym.
Output file resolution in target georeferenced units: 30m
- Rozdzielczość komórki w wynikowym pliku rastrowym.
Reprojected: srtm30m_2180.tif
- Nazwa i ścieżka do pliku wynikowego
Output data type: Float32
- Typ danych w pliku wynikowym
Georeferenced extents of output file to be created
- Zasięg danych w pliku wynikowym. Jeśli mamy już inną warstwę rastrową i chcemy, aby obie warstwy się pokrywały, należy ustawić z niej zasięg.
CRS of the target raster extent
- Układ odniesienia dla warstwy, z której “zczytujemy” zasięg.
Zapoznać się z informacjami o warstwie srtm_2180.tif. Jaka jest szerokość i wysokość warstwy rastrowej?
Zmienić układ współrzędnych warstwy srtm_wgs84 na układ EPSG:3035, rozdzielczość pliku wynikowego: 30m. Zapisać plik jako srtm30m_3035.tif
7 Agregacja danych rastrowych
Zmiana rozdzielczości danych z 30m do 90m wymaga agregacji danych. W QGIS agregację danych można wykonać wykorzystując narzędzie Raster - Projections - Warp (reproject)
.
- Otworzyć nowe okno programu QGIS.
- Wczytać warstwę
srtm30m_2180.tif
- Wybrać
Raster - Projections - Warp (reproject)
.
- Input layer: srtm_2180
- Source CRS, Target CRS: EPSG:2180
- Resampling method to use: average
- Output file resolution in target georeferenced units: 90m
- Reprojected: srtm90m_2180.tif
- Output data type: Float32
- Georeferenced extents of output file to be created: wybrać Calculate from layer oraz wskazać warstwę srtm_2180.
- CRS of the target raster extent: EPSG:2180
Otworzyć nowe okno programu QGIS oraz wczytać warstwę ua10m. Zagregować warstwę do rozdzielczości 90m i zapisać jako ua90m. Zarówno warstwa wejściowa jak i wynikowa mają układ EPSG:3035. Jako tym danych wybrać UInt16. Jako metodę przepróbkowania wybrać Mode (wartość modalną).
Wczytać warstwę srtm30_3035.tif o rozdzielczości 30m i zagregować ją do rozdzielczości 90m.
8 Wyrównywanie zasięgu warstw rastrowych
Wczytać do QGIS warstwy
ua90m
orazsrtm90m_3035
.- Warstwy te dotyczą tego samego obszaru oraz mają tą samą rozdzielczość (90m). Jednakże ich zasięgi nie są identyczne i warstwy nie pokrywają się (zauważ, że komórki na obu warstwach są względem siebie przesunięte).
Wybrać
Raster - Allign rasters
Dodać pierwszą warstwę używając znaku \(+\) -
srtm90m_3035
. Ustawić parametry przepróbkowania (bilinear, nawzwa pliku wynikowegosrtm90m_3035_alligned
).Dodać pierwszą warstwę używając znaku \(+\) -
ua90m
. Ustawić parametry przepróbkowania (nearest neighbour, nawzwa pliku wynikowegoua90m_alligned
).Jako warstwę referencyjną (reference layer) wybrać ua90m.
CRS: EPSG:3035
Cell size: 90m.
Clip to extent: zczytać zasięg z warstwy (Layer) ua90m.
Zwróć uwagę, że obie warstwy srtm90m_3035_alligned
oraz ua90m_alligned
idealnie się pokrywają.
9 Zapisywanie warstwy rastrowej.
Kliknąć prawym klawiszem na nazwę warstwy rastrowej oraz wybrać Export.
10 Stylizacja warstwy rastrowej.
- Wczytać do QGIS warstwę
ua90m_alligned
. - We właściwościach warstwy ua90m_alligned (w dole okna) wybrać Style - Load Style oraz wybrać legenda_ua_raster.qml.
- We właściwościach warstwy srtm90m_3035_alligned przejść na zakładkę Symbology:
- Wybrać Singleband pseudocolor.
- Color ramp: np. RdYlGn. Zaznaczyć opcję Invert color ramp.
- Wybrać np. 7 klas.