Vektorizace rastrových dat¶
Převod rastrových na vektorová data - ohraničení pixelů o stejné hodnotě.
Modul rasterio.features obsahuje nástroje pro vektorizaci rastrových dat. K dispozici je funkce shapes, která převede sousedící pixely o stejné hodnotě do vektorového formát GeoJSON.
Hodit se může i např. funkce sieve, kterou můžeme použít na odfiltrování příliš malých ploch.
Jedním z podstatným vstupů je také transformační matice, která převede vektorová data ze souřadnic obrázku (pixely) na souřadnice geografické.
import rasterio
import rasterio.features
from affine import Affine
import json
with rasterio.open("outputs/ndvi-classes.tif") as src:
data = src.read(1)
# čištění dat
cleaned = rasterio.features.sieve(data, 100)
# převod na vektory - vrací generátor
shapes = rasterio.features.shapes(cleaned, transform=src.transform)
names = {
1: "Trees",
2: "Grass",
3: "Dry",
4: "Water",
}
features = {
"type": "FeatureCollection",
"features": []
}
for (geom, val) in shapes:
val = int(val)
if val > 0:
feature = {
"type": "Feature",
"properties": {
"class": val,
"name": names[val]
},
"geometry": geom
}
features["features"].append(feature)
# zápis do souboru
with open("outputs/ndvi-classes.geojson", "w") as out:
json.dump(features, out)