Przetwarzanie danych rastrowych

Author

Anna Dmowska

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

  1. Wczytanie warstwy wektorowej ua2018 z geopaczki dane_raster.gpkg.
  2. 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 GDAL gdal_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

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

Zamiana układu współrzędnych warstwy srtm_wgs84

  1. Otworzyć nowe okno QGIS i wczytać warstwę srtm_wgs84 z geopaczki dane_raster.gpkg
  2. 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).

  1. Otworzyć nowe okno programu QGIS.
  2. Wczytać warstwę srtm30m_2180.tif
  3. 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

  1. Wczytać do QGIS warstwy ua90moraz srtm90m_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).
  2. Wybrać Raster - Allign rasters

  • Dodać pierwszą warstwę używając znaku \(+\) - srtm90m_3035. Ustawić parametry przepróbkowania (bilinear, nawzwa pliku wynikowego srtm90m_3035_alligned).

  • Dodać pierwszą warstwę używając znaku \(+\) - ua90m. Ustawić parametry przepróbkowania (nearest neighbour, nawzwa pliku wynikowego ua90m_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.

Więcej: https://docs.qgis.org/3.34/en/docs/user_manual/working_with_raster/raster_properties.html#symbology-properties

  1. Wczytać do QGIS warstwę ua90m_alligned.
  2. We właściwościach warstwy ua90m_alligned (w dole okna) wybrać Style - Load Style oraz wybrać legenda_ua_raster.qml.
  3. 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.