def polyNetcdf(poly, nc, v):
ncf = Dataset(nc)
# affine transform(px width, row rotation, UL x-coord, col rotation, px height, UL y-coord)
affine = Affine(0.1, 0.0, -180.0, 0.0, -0.1, 90.0)
ndims = ncf[v].ndim
if ndims == 2:
array = ncf[v][:,:]
ncf.close()
stats = (extractDate(nc), zonal_stats(poly, array, affine=affine, nodata=-9999.0, stats=['median'])[0]['median'])
return [stats]
elif ndims == 3: # assume it's time/lat/lon
#print 'N-dims:', ndims
cdftime = utime(ncf['time'].units)
stats = []
for i in range(ncf[v].shape[0]):
array = ncf[v][i,:,:]
dt = cdftime.num2date(ncf['time'][i]).strftime('%Y-%m-%d')
stats.append((dt, zonal_stats(poly, array, affine=affine, nodata=-9999.0, stats=['median'])[0]['median']))
ncf.close()
#print stats
return stats
else:
print 'Don\'t know what to do with %s dimensions!' % ndims
sys.exit()
评论列表
文章目录