def getTimeExposure(timegriddata,mmigrid,popfile,mmithresh): timegrid = GMTGrid() timegrid.griddata = timegriddata.copy() timegrid.geodict = mmigrid.geodict.copy() popgrid = EsriGrid(popfile) popgrid.load(bounds=timegrid.getRange()) timegrid.interpolateToGrid(popgrid.geodict) timegrid.griddata[mmigrid.griddata < mmithresh] = np.NaN times = np.arange(MINTIME,MAXTIME+DTIME,DTIME) exposure = [] mintime = MINTIME ireal = np.isfinite(timegrid.griddata) for time in times[1:]: ipop = ((timegrid.griddata >= mintime) & (timegrid.griddata < time) & np.isfinite(timegrid.griddata)) exposum = int(np.sum(popgrid.griddata[ipop])) exposure.append({'mintime':mintime,'maxtime':time,'exposure':exposum}) mintime = time return (exposure,timegrid.griddata)
def readTimeGrid(timefile): stkeys = [ 'TOTALROWBYTES', 'NBITS', 'LAYOUT', 'YDIM', 'NCOLS', 'BANDROWBYTES', 'PIXELTYPE', 'XDIM', 'NROWS', 'NBANDS', 'ULXMAP', 'ULYMAP', 'BYTEORDER' ] src = rasterio.open(timefile, 'r', driver='EHdr') timedata, = src.read() m, n = timedata.shape aff = src.affine xdim = aff[0] xmin = aff[2] ydim = -aff[4] ymax = aff[5] src.close() timegrid = GMTGrid() timegrid.griddata = timedata timegrid.geodict = { 'nrows': m, 'ncols': n, 'nbands': 1, 'bandnames': ['Alert Time'], 'xmin': xmin, 'xmax': xmin + n * xdim, 'ymin': ymax - m * ydim, 'ymax': ymax, 'xdim': xdim, 'ydim': ydim } timepath, timefile = os.path.split(timefile) timebase, timext = os.path.splitext(timefile) timehdr = os.path.join(timepath, timebase + '.hdr') timedict = readTimeHeader(timehdr) for key in stkeys: timedict.pop(key) for key, value in timedict.iteritems(): if isinstance(value, str): timedict[key] = value.replace('"', '') return (timegrid, timedict)