def test_hexbin(): """See if we can do hexbin OKish""" mp = MapPlot(sector='north_america', continentalcolor='white', nocaption=True) lons = np.arange(-100, -80, 0.25) lats = np.arange(40, 50, 0.25) vals = np.linspace(0, 1, lats.shape[0] * lons.shape[0] ).reshape([lats.shape[0], lons.shape[0]]) lons, lats = np.meshgrid(lons, lats) mp.hexbin(lons.flatten(), lats.flatten(), vals.flatten(), np.arange(0, 1, 0.1), cmap='jet') return mp.fig
def makeplot(ts, routes='ac'): """ Generate two plots for a given time GMT """ sql = """ SELECT ST_x(geom), ST_y(geom), CASE WHEN sm is Null THEN -1 ELSE sm END, CASE WHEN od is Null THEN -1 ELSE od END from (SELECT grid_idx, avg(soil_moisture) as sm, avg(optical_depth) as od from data WHERE valid > '%s+00'::timestamptz - '6 hours'::interval and valid < '%s+00'::timestamptz + '6 hours'::interval GROUP by grid_idx) as foo, grid WHERE foo.grid_idx = grid.idx """ % (ts.strftime('%Y-%m-%d %H:%M'), ts.strftime('%Y-%m-%d %H:%M')) #sql = """ #SELECT x(geom), y(geom), random(), random() from grid #""" scursor.execute(sql) lats = [] lons = [] sm = [] od = [] for row in scursor: lats.append(float(row[1])) lons.append(float(row[0])) sm.append(row[2] * 100.) od.append(row[3]) if len(lats) == 0: # print 'Did not find SMOS data for ts: %s' % (ts,) return lats = np.array(lats) lons = np.array(lons) sm = np.array(sm) od = np.array(od) for sector in ['midwest', 'iowa']: clevs = np.arange(0, 71, 5) m = MapPlot(sector=sector, axisbg='white', title='SMOS Satellite: Soil Moisture (0-5cm)', subtitle="Satelite passes around %s UTC" % (ts.strftime("%d %B %Y %H"), )) if sector == 'iowa': m.drawcounties() cmap = cm.get_cmap('jet_r') cmap.set_under('#EEEEEE') cmap.set_over("k") m.hexbin(lons, lats, sm, clevs, units='%', cmap=cmap) pqstr = "plot %s %s00 smos_%s_sm%s.png smos_%s_sm%s.png png" % ( routes, ts.strftime("%Y%m%d%H"), sector, ts.strftime("%H"), sector, ts.strftime("%H")) m.postprocess(pqstr=pqstr) m.close() for sector in ['midwest', 'iowa']: clevs = np.arange(0, 1.001, 0.05) m = MapPlot(sector=sector, axisbg='white', title=('SMOS Satellite: Land Cover Optical Depth ' '(microwave L-band)'), subtitle="Satelite passes around %s UTC" % (ts.strftime("%d %B %Y %H"), )) if sector == 'iowa': m.drawcounties() cmap = cm.get_cmap('jet') cmap.set_under('#EEEEEE') cmap.set_over("k") m.hexbin(lons, lats, od, clevs, cmap=cmap) pqstr = "plot %s %s00 smos_%s_od%s.png smos_%s_od%s.png png" % ( routes, ts.strftime("%Y%m%d%H"), sector, ts.strftime("%H"), sector, ts.strftime("%H")) m.postprocess(pqstr=pqstr) m.close()
def makeplot(ts, routes='ac'): """ Generate two plots for a given time GMT """ sql = """ SELECT ST_x(geom), ST_y(geom), CASE WHEN sm is Null THEN -1 ELSE sm END, CASE WHEN od is Null THEN -1 ELSE od END from (SELECT grid_idx, avg(soil_moisture) as sm, avg(optical_depth) as od from data WHERE valid > '%s+00'::timestamptz - '6 hours'::interval and valid < '%s+00'::timestamptz + '6 hours'::interval GROUP by grid_idx) as foo, grid WHERE foo.grid_idx = grid.idx """ % (ts.strftime('%Y-%m-%d %H:%M'), ts.strftime('%Y-%m-%d %H:%M')) #sql = """ #SELECT x(geom), y(geom), random(), random() from grid #""" scursor.execute( sql ) lats = [] lons = [] sm = [] od = [] for row in scursor: lats.append( float(row[1]) ) lons.append( float(row[0]) ) sm.append( row[2] * 100.) od.append( row[3] ) if len(lats) == 0: #print 'Did not find SMOS data for ts: %s' % (ts,) return lats = np.array( lats ) lons = np.array( lons ) sm = np.array( sm ) od = np.array( od ) for sector in ['midwest', 'iowa']: clevs = np.arange(0,71,5) m = MapPlot(sector=sector, title = 'SMOS Satellite: Soil Moisture (0-5cm)', subtitle="Satelite passes around %s UTC" % ( ts.strftime("%d %B %Y %H"),)) if sector == 'iowa': m.drawcounties() cmap = cm.get_cmap('jet_r') cmap.set_under('#EEEEEE') cmap.set_over("k") m.hexbin(lons,lats,sm,clevs,units='%', cmap=cmap) pqstr = "plot %s %s00 smos_%s_sm%s.png smos_%s_sm%s.png png" % ( routes, ts.strftime("%Y%m%d%H"), sector, ts.strftime("%H"), sector, ts.strftime("%H")) m.postprocess(pqstr=pqstr) m.close() for sector in ['midwest', 'iowa']: clevs = np.arange(0,1.001,0.05) m = MapPlot(sector=sector, title = 'SMOS Satellite: Land Cover Optical Depth (microwave L-band)', subtitle="Satelite passes around %s UTC" % ( ts.strftime("%d %B %Y %H"),)) if sector == 'iowa': m.drawcounties() cmap = cm.get_cmap('jet') cmap.set_under('#EEEEEE') cmap.set_over("k") m.hexbin(lons,lats,od,clevs, cmap=cmap) pqstr = "plot %s %s00 smos_%s_od%s.png smos_%s_od%s.png png" % ( routes, ts.strftime("%Y%m%d%H"), sector, ts.strftime("%H"), sector, ts.strftime("%H")) m.postprocess(pqstr=pqstr) m.close()