Exemplo n.º 1
0
    yieldfile = findfile(files, 'yield')

    if not yieldfile:
        yvar = masked_array(zeros((ntimes,) + planting_date.shape), mask=zeros((ntimes,) + planting_date.shape))
    else:
        with Dataset(yieldfile) as f:
            yvar = f.variables['yield_' + crop][:]
            yvar = shiftdata(yvar, planting_date, harvest_date, yearthr)     # shift data
            yvar = masked_where(yvar < yieldthr1, yvar)  # mask yields below threshold
            yvar = masked_where(yvar > yieldthr2, yvar)  # mask yields above threshold
            yvar = yvar[yrsinrange]                      # restrict to overlapping years
    ymsk = logical_not(yvar.mask)

    # compute areas
    print ymsk.sum(), ymsk.shape, adata.shape, weights[iidx].shape
    areas[:, :, iidx] = avobj.areas(yvar, adata, lats, weights[iidx], calc_area)

    for j in range(nvariables):
        varfile = findfile(files, variables[j])
        print "Reading %s" % varfile
        if not varfile:
            continue
        with Dataset(varfile) as f:
            var = f.variables[variables[j] + '_' + crop]
            if not i:
                vunits[j] = var.units if 'units' in var.ncattrs() else ''
            var = var[:]
        var[isnan(var)] = 0.                                        # change NaNs to zero
        var = shiftdata(var, planting_date, harvest_date, yearthr)  # shift data
        var = var[yrsinrange]                                       # restrict to overlapping years
Exemplo n.º 2
0
    # load yield file
    yieldfile = findfile(files, scen_irr, 'yield')
    if yieldfile == []:
        yvar = masked_array(zeros((nt,) + pd.shape), mask = zeros((nt,) + pd.shape))
    else:
        with nc(indir + sep + yieldfile) as f:
            yvar = f.variables['yield_' + crop][:]
            yvar = shiftdata(yvar, pd, hd, yearthr)     # shift data
            yvar = masked_where(yvar < yieldthr1, yvar) # mask yields below threshold
            yvar = masked_where(yvar > yieldthr2, yvar) # mask yields above threshold
            yvar = yvar[yrsinrange]                     # restrict to overlapping years
    ymsk = logical_not(yvar.mask)

    # compute areas
    areas[:, :, sidx, iidx] = avobj.areas(yvar, adata, lats, weights[iidx], calcarea)

    for j in range(nv):
        # load variable
        varfile = findfile(files, scen_irr, variables[j])
        if not len(varfile): continue
        with nc(indir + sep + varfile) as f:
            var = f.variables[variables[j] + '_' + crop]
            if not i: vunits[j] = var.units if 'units' in var.ncattrs() else ''
            var = var[:]
        var[isnan(var)] = 0.                  # change NaNs to zero
        var = shiftdata(var, pd, hd, yearthr) # shift data
        var = var[yrsinrange]                 # restrict to overlapping years

        # aggregate
        averages[j, :, :, sidx, iidx]  = avobj.sum(var, adata, lats, weights[iidx], calcarea, ymsk)