venerdì 20 gennaio 2012

Esportazione di shapefile da python

Il seguente script esporta in formato “pseudo csv” i dati dello shapefile e la “bounding box” di ogni singola figura censita
"""
Esportazione dei dati di uno shapefile
"""
import shapelib, dbflib, string
 
SHAPEFILE="nomeshp"
 
shp = shapelib.ShapeFile(SHAPEFILE)
dbf = dbflib.DBFFile(SHAPEFILE)
 
sCount = shp.info()[0]
dCount = dbf.record_count()
 
if sCount <> dCount:
 raise "Errore: numero oggeti in shape %s (%d) diverso da record  dbf (%d) " %(SHAPEFILE,sCount,dCount)
 
 
#stampo l'header!
header = dbf.read_record(0)
#print header.keys()
intestazione = string.join(header.keys(),"|")
intestazione += "|XMIN|YMIN|XMAX|YMAX"
 
print intestazione
 
#scandisco riga per riga il file dbf
for i in range (dbf.record_count() ):
 rc = dbf.read_record(i)
 sc = shp.read_object(i)
 row = ""
 for value in rc.values():
  row += "%s|" %(value)
 #aggiungo la extent/envelope
 (min,max) = sc.extents()
 xmin = min[0]
 ymin = min[1]
 xmax = max[0]
 ymax = max[1]
 
 row += "%f|%f|%f|%f" %(xmin,ymin,xmax,ymax)
 print row
 #print "\n"

Nessun commento:

Posta un commento