[gdal-dev] Re: corrupt block on AIG dataset
ozak
ozak at BROWN.EDU
Sun Feb 14 16:41:40 EST 2010
Hi Even and community,
here's the link to the dataset that causes the error:
http://www.econ.brown.edu/students/Omer_Ozak_Munoz/Datasets/afgdist.zip Data
I was using the following code which used another dataset to create a mask,
but that's not the issue, so it could be simply deleted. I really appreciate
your help.
Best,
Omer
#############################
import os, sys, time
try:
from osgeo import gdal, gdalconst
from osgeo.gdalconst import *
import numpy
use_numeric = False
except:
import gdal, gdalconst
from gdalconst import *
import Numeric
use_numeric = True
# start timing
startTime=time.time()
pais = 'afg'
file= pais+'.txt'
file = open(file,'w')
# prepare gdal for importing ARCGIS binary grid
#gdal.AllRegister()
driver = gdal.GetDriverByName('AIG')
driver.Register()
if use_numeric:
# set the directory
dire='/direct/'
else:
dire='/Volumes/direct/'
# the file to open
fn = dire+'timehours'
mask = gdal.Open(fn, GA_ReadOnly)
if mask is None:
print('Could not open' + fn)
sys.exit(1)
else:
#determine info of grid
mcols = mask.RasterXSize
mrows = mask.RasterYSize
mbands = mask.RasterCount
mgeotransform = mask.GetGeoTransform()
moriginX = mgeotransform[0]
moriginY = mgeotransform[3]
mpixelWidth = mgeotransform[1]
mpixelHeight = mgeotransform[5]
mband = mask.GetRasterBand(1)
# set the directory
if use_numeric:
os.chdir('/direct')
else:
os.chdir('/Volumes/direct')
# the file to open
fn = pais+'dist'
ds = gdal.Open(fn, GA_ReadOnly)
if ds is None:
print('Could not open ' + fn)
sys.exit(1)
else:
#determine info of grid
cols = ds.RasterXSize
rows = ds.RasterYSize
bands = ds.RasterCount
geotransform = ds.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
pixelWidth = geotransform[1]
pixelHeight = geotransform[5]
band = ds.GetRasterBand(1)
# read the whole data
#data = band.ReadAsArray(0, 0, cols, rows)
# read only a couple of lines in (x,y)
x=-2684213
y=6146882
#x=1000000
#y=1000000
suma=0
count=0
maxi=0
xOffset = int((x-originX) / pixelWidth)
yOffset = int((y-originY) / pixelHeight)
y = -3883447
yend = int((y-originY) / pixelHeight)
xBsize = 100
yBsize = 100
#print 'mrows='+str(mrows)+' mcol='+str(mcols)
#print 'rows='+str(rows)+' col='+str(cols)
#print 'xoffset=' + str(xOffset) +', yoffset=' + str(yOffset)
for j in range(xOffset,cols,xBsize):
if j + xBsize <= cols:
ncols=xBsize
else:
ncols=cols-j
for i in range (yOffset,yend,yBsize):
if i+yBsize<=yend:
nrows=yBsize
else:
nrows=yend-i
if use_numeric:
data = band.ReadAsArray(j, i, ncols ,
nrows).astype(Numeric.Float)
mdata = mband.ReadAsArray(j, i, ncols , nrows)
mdata = Numeric.greater(data,0)
data = data * mdata
count = Numeric.sum(Numeric.sum(mdata))+count
suma = Numeric.sum(Numeric.sum(data))+suma
maxi = max(max(max(data)), maxi)
else:
data = band.ReadAsArray(j, i, ncols ,
nrows).astype(numpy.float32)
mdata = mband.ReadAsArray(j, i, ncols , nrows)
mdata = numpy.greater(mdata,0)
data = data * mdata
count = numpy.sum(numpy.sum(mdata))+count
suma = numpy.sum(numpy.sum(data))+suma
maxi=numpy.maximum(numpy.max(data),maxi)
#print 'i=' +str(i)+' j='+str(j)+' count=' +str(count)
print(' media=' + str(suma / count)+' max=' +str(maxi)+'
suma='+str(suma)+' count='+str(count))
file.write('code,mean,max,sum \n')
file.write(pais+ str(suma/count)+','+str(maxi)+','+str(suma)+' \n')
#print 'bands=' + str(bands) + ', originX=' + str(originX) + ',
originY=' + str(originY)
print('xoffset=' + str(xOffset) +', yoffset=' + str(yOffset))
endTime=time.time()
print('It took ' + str(startTime-endTime) + ' seconds')
file.close()
--
View this message in context: http://n2.nabble.com/Re-corrupt-block-on-AIG-dataset-tp4568372p4571794.html
Sent from the GDAL - Dev mailing list archive at Nabble.com.
More information about the gdal-dev
mailing list