Unealta "Extract by Mask" cu GDAL
de Marius Jigmond
Introducere
Foarte des am avut nevoie să decupez un raster după anumite poligoane și întotdeauna a trebuit să mă îndrept către Spatial Analyst din ArcGIS. Dar ce faci dacă nu ai ArcGIS? În situația aceasta m-am găsit și eu recent și, pe baza articolului lui Vasile in legătură cu crearea unui mozaic folosind software open-source, am decis să extind puțin funcționalitatea uneltei gdal_rasterize. Probabil că există și alte soluții open-source dar eu m-am orientat pe QGIS și GDAL.
Descrierea uneltei
Parametrii
Unealta in sine e un script scris in Python care nu e foarte complicat. Comanda se executa astfel:
extract_by_mask.py <shapefile> <input_raster> <output_raster>
Comanda așteaptă 3 parametrii, doi de intrare și unul de ieșire. Comanda are de asemenea un scurt exemplu care se poate obține prin executarea comenzii fără parametrii.
Sub capotă
Pașii executați de script sunt următorii:
- obține extinderea plicului (envelope extent) care conține poligonul (poligoanele) din fișierul <shapefile>
- decupează un raster după forma plicului
- aplică masca inversă
- aplică tag-ul NoData
Dependențe
Script-ul depinde de următoarele unelte GDAL:
- gdalinfo
- gdal_translate
- gdal_rasterize
De asemenea, e necesar ca atât fișierul shapefile cât și fișierul raster să fie in același sistem de coordonate/proiecție.
Comentariu propriu
De ce nu pur-și-simplu gdal_rasterize? Deoarece gdal_rasterize nu micșorează mărimea raster-ului. De exemplu, un model altimetric cu rezoluția de 30 m pentru România e in jurul a 1GB. Dacă rulez gdal_rasterize pentru județul Cluj obțin un raster tot de 1GB. N-am câștigat nimic.
Sper ca acest script să vă folosească. Dacă aveți întrebări sau probleme mă găsiți pe lista de discuții. Sugestii pentru îmbunătățire sunt binevenite.
Download: Extract by Mask