[Gfoss] Raster batch clipping
Paolo Corti
pcorti a gmail.com
Gio 20 Ott 2011 15:44:11 CEST
2011/10/20 Michele Beneventi <mbeneventi a gmail.com>:
> Grazie per le risposte!!!
> Per ora ho trovato una soluzione intermedia, considerando che sono un umile
> " utente finale", che raggiunge il suo scopo:
> la sintassi che ho usato è la seguente:
> gdalwarp -q -cutline /path/dello/shape
> -cwhere "AttributoPerSQLClip = 'valoreAttributo'"
> -crop_to_cutline /path/immagine/da clippare
> /path/dell'/output/
> il parametro -cwhere è stata una bella sopresa!
> grazie ancora
> a presto
> Michele
Ciao Michele
senza dover pre-trattare lo shapefile, potresti farti uno script
Python tipo questo, veramente molto semplice (usando ogr da codice e poi il
comando gdal_translate):
import os
from osgeo import ogr
def ClipRasterWithShape(raster, shapefile):
driver = ogr.GetDriverByName('ESRI Shapefile')
dataset = driver.Open(shapefile, 0)
layer = dataset[0]
for feature in layer:
geom = feature.GetGeometryRef()
envelope = geom.GetEnvelope()
print 'Clipping feature %s with extent: %s' %
(feature.GetFID(), envelope)
os.system('gdal_translate -projwin %s %s %s %s %s out%s' %
(envelope[0], envelope[3], envelope[1], envelope [2], raster,
feature.GetFID()))
ClipRasterWithShape('myraster.tif', 'myshape.shp')
salva tutto come myprog.py e lancia:
$ python myprog.py
se hai il supporto Python per gdal dovrebbe andare senza problemi
ciao
P
--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
Maggiori informazioni sulla lista
Gfoss