Interpretace NDVI

Jedním z možných postupů je reklasifikace vstupních dat do uživatelem definovaných tříd.

Reklasifikací se přiřadí nové hodnoty vstupním datům, v našem příkadě bychom rádi identifikovali vodní tělesa, ostatní objekty nás nezajímají.

Jak jsme si řekli výše, vodní tělesa by měly mít hodnotu NDVI okolo 0, shodněme se, na hodnotách <-0.1; 0.1>. Výsledný rastrový soubor bude obsahovat 2 hodnoty: 1 a NULL (tedy žádná data), která bude reprezentována číslem -9999.

import rasterio

with rasterio.open('outputs/ndvi.tif') as ndvi:
    water = ndvi.read()

limit = 0.1

water[water < -1*limit] = -9999
water[water > limit] = -9999
water[(water >= -1.0*limit) & (water <= 0.1)] = 1

kwargs = ndvi.meta
kwargs.update(dtype=rasterio.int32, count=1, compress='lzw', nodata=-9999)
with rasterio.open('outputs/water.tif', 'w', **kwargs) as dst:
    dst.write_band(1, water[0].astype(rasterio.int32))
../../_images/water.png

Obr. 8 Výsledný soubor s hodnotami 1 - voda, -9999 - NODATA.

Poznámka

Takováto identifikace vodních ploch je samozřejmě velmi nepřesná. V DPZ se používají většinou jiné techniky.

Úkol

Pokuste se podobným způsobem do snímku přidat kategorii s hustou vegetací a další kategorie, podle klíče:

  1. voda
  2. hustá vegetace
  3. zástavba

Rozdělíme NDVI do tříd podle jejich hodnoty. NDVI nabývá hodnot od -1 do 1, rozdělíme je na 3 skupiny „od oka“:

1 Stromy 1 - 0.4
2 Tráva 0.4 - 0.2
3 Suchá půda, sníh 0.1 - -0.1
4 Voda -0.1 - -1
import rasterio

with rasterio.open("outputs/ndvi.tif") as src:
    data = src.read(1)

    # reklasifikace začíná
    data[data > 0.6] = 1
    data[(data <= 0.6) & (data > 0.2)] = 2
    data[(data <= 0.2) & (data > -0.1)] = 3
    data[(data <= -0.1)] = 4

    # zápis do souboru
    meta = src.meta
    meta.update(dtype=rasterio.int16, count=1, compress='lzw')
    with rasterio.open('outputs/ndvi-classes.tif', 'w', **meta) as dst:
        dst.write_band(1, data.astype(rasterio.int16))

Výsledný soubor obsahuje pouze 4 hodnoty reprezentující jednotlivé třídy.

../../_images/ndvi-classes.png

Obr. 9 Výsledný soubor se třemi třídami.