Exemplo n.º 1
0
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
Exemplo n.º 2
0
Arquivo: plot.py Projeto: nbackas/iem
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()
Exemplo n.º 3
0
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()