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"