Ejemplo n.º 1
1
# example demonstrating how to draw a great circle on a map.
from matplotlib.toolkits.basemap import Basemap
from pylab import *

# setup lambert azimuthal map projection.
m = Basemap(-100.,20.,20.,60.,
            resolution='c',area_thresh=10000.,projection='merc',\
            lat_0=40.,lon_0=-20.,lat_ts=20.)
# make figure with aspect ratio that matches map region.
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
fig.add_axes([0.1, 0.1, 0.8, 0.8])
# nylat, nylon are lat/lon of New York
nylat = 40.78
nylon = -73.98
# lonlat, lonlon are lat/lon of London.
lonlat = 51.53
lonlon = 0.08
# find 1000 points along the great circle.
#x,y = m.gcpoints(nylon,nylat,lonlon,lonlat,1000)
# draw the great circle.
#m.plot(x,y,linewidth=2)
# drawgreatcircle performs the previous 2 steps in one call.
m.drawgreatcircle(nylon, nylat, lonlon, lonlat, linewidth=2, color='b')
m.drawcoastlines()
m.fillcontinents()
# draw parallels
circles = arange(10, 90, 20)
m.drawparallels(circles, labels=[1, 1, 0, 1])
# draw meridians
meridians = arange(-180, 180, 30)
def draw_client_density():

    m = Basemap(llcrnrlon=-180.,llcrnrlat=-90,urcrnrlon=180.,urcrnrlat=90.,\
                resolution='c',projection='cyl')

    # plot them as filled circles on the map.
    # first, create a figure.
    dpi=100
    dimx=800/dpi
    dimy=400/dpi
    fig=figure(figsize=(dimx,dimy), dpi=dpi, frameon=False, facecolor='blue')
#    ax=fig.add_axes([0.1,0.1,0.7,0.7],axisbg='g')
    ax=fig.add_axes([0.0,0.0,1.0,1.0],axisbg='g')
    canvas = FigureCanvas(fig)
    results = lookup_client_locations()
    X,Y,Z = find_client_density(m,results)
#    s = random.sample(results, 40000)
#    for t in s:
#        lat=t[2]
#        lon=t[3]
#        # draw a red dot at the center.
#        xpt, ypt = m(lon, lat)
#        m.plot([xpt],[ypt],'ro', zorder=10)
    # draw coasts and fill continents.
    m.drawcoastlines(linewidth=0.5)
    m.drawcountries(linewidth=0.5)
    m.drawlsmask([100,100,100,0],[0,0,255,255])
#    m.fillcontinents(color='green')
    palette = cm.YlOrRd
    m.imshow(Z,palette,extent=(m.xmin,m.xmax,m.ymin,m.ymax),interpolation='gaussian',zorder=0)
#    l,b,w,h = ax.get_position()
#    cax = axes([l+w+0.075, b, 0.05, h])
#    colorbar(cax=cax) # draw colorbar

    canvas.print_figure(outdir+'/clientmap.png', dpi=100)
Ejemplo n.º 3
0
def InvokeMap(coastfile='/media/sda4/map-data/aust-coast-noaa-2000000-1.dat',
		    lllon=80,
		    urlon=166,
		    lllat=-47,
		    urlat=-9,
		    draw_map=True):
    global PYLIB_PATH

    map = Basemap(projection='cyl',
			llcrnrlon=lllon,
			urcrnrlon=urlon,
			llcrnrlat=lllat,
			urcrnrlat=urlat,
			#lat_ts=-35,
			lat_0=-35,
			lon_0=120,
			resolution='l',
			area_thresh=1000.)


    try: 
	coast = p.load(coastfile)
	coast = p.load(coastfile)
	coast_x,coast_y = map(coast[:,0],coast[:,1])
	p.plot(coast_x,coast_y,color='black')    
    except IOError:
	map.drawcoastlines()

    map.drawmapboundary()
    map.drawmeridians(p.arange(0,360,10),labels=[0,0,1,0])
    map.drawparallels(p.arange(-90,0,10),labels=[1,0,0,0])

    return map
Ejemplo n.º 4
0
def doit():
    map = Basemap(projection='lcc',
		    llcrnrlon=80,
		    urcrnrlon=160,
		    llcrnrlat=-50,
		    urcrnrlat=-8,
		    #lat_ts=-35,
		    lat_0=-35,
		    lon_0=120,
		    resolution='c',
		    area_thresh=1000.)
    p.clf()
    map.drawcoastlines()
    # map.drawcountries()
    
    # map.drawrivers()

    map.drawmeridians(p.arange(0,360,10),labels=[0,0,1,0])
    map.drawparallels(p.arange(-90,0,10),labels=[1,0,0,0])

    traj=p.load('example_traj.dat')
    coast=p.load('/media/sda4/map-data/aust-coast-noaa-2000000-1.dat')

    traj_x,traj_y   = map(traj[:,1],traj[:,0]) 
    # coast_x,coast_y = map(coast[:,0],coast[:,1])
    
    p.plot(traj_x,traj_y)    
    p.plot(coast_x,coast_y,color='black')    

    map.drawmapboundary()
    p.show()
    return map 
Ejemplo n.º 5
0
def set_default_basemap(lon, lat, frame_width=5.):
    test = lon < 0.
    if True in test:
        # matplotlib expects 0-360 while WRF for example uses -180-180
        delta = n.ones(lon.shape)
        delta *= 360
        delta = ma.masked_where(lon > 0., delta)
        lon += delta.filled(fill_value=0)
    llcrnrlon=lon.min() - frame_width
    urcrnrlon=lon.max() + frame_width
    llcrnrlat=lat.min() - frame_width
    urcrnrlat=lat.max() + frame_width
    lon_0 = llcrnrlon + (urcrnrlon - llcrnrlon) / 2.
    lat_0 = llcrnrlat + (urcrnrlat - llcrnrlat) / 2.
        
    map = Basemap(
      llcrnrlon=llcrnrlon,
      llcrnrlat=llcrnrlat,
      urcrnrlon=urcrnrlon,
      urcrnrlat=urcrnrlat,
      resolution='l',
      projection='cyl',
      lon_0=lon_0,
      lat_0=lat_0
      )
    return map
Ejemplo n.º 6
0
def set_default_basemap(lon, lat):
    map = Basemap(llcrnrlon=lon.min() - 0.5,
                  llcrnrlat=lat.min() - 0.5,
                  urcrnrlon=lon.max() + 0.5,
                  urcrnrlat=lat.max() + 0.5,
                  resolution='l',
                  projection='cyl',
                  lon_0=lon.min() + (lon.max() - lon.min()) / 2.,
                  lat_0=lat.min() + (lat.max() - lat.min()) / 2.)
    return map
Ejemplo n.º 7
0
import matplotlib
from matplotlib.toolkits.basemap import Basemap
from pylab import *

m = Basemap(-11.,51.,-5.,56.,
            resolution='c',area_thresh=1000.,projection='cyl')
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
fig.add_axes([0.1,0.1,0.8,0.8])
ax = gca() # get current axis instance
ax.update_datalim(((m.llcrnrx, m.llcrnry),(m.urcrnrx,m.urcrnry)))
ax.set_xlim((m.llcrnrx, m.urcrnrx))
ax.set_ylim((m.llcrnry, m.urcrnry))
m.drawcoastlines(ax)
m.fillcontinents(ax)
# draw parallels
circles = arange(50,60,1).tolist()
m.drawparallels(ax,circles,labels=[1,1,1,1])
# draw meridians
meridians = arange(-12,0,1)
m.drawmeridians(ax,meridians,labels=[1,1,1,1])
title("Crude Res Coastlines ('c')",y=1.075)
show()

m = Basemap(-11.,51.,-5.,56.,
            resolution='l',area_thresh=1000.,projection='cyl')
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
fig.add_axes([0.1,0.1,0.8,0.8])
ax = gca() # get current axis instance
ax.update_datalim(((m.llcrnrx, m.llcrnry),(m.urcrnrx,m.urcrnry)))
Ejemplo n.º 8
0
from pylab import *
import math, random
from matplotlib.toolkits.basemap import Basemap
from matplotlib.numerix.random_array import uniform

# Plot a bunch of randomly distributed points on the earth.

# set up stereographic map centered on N. Pole.
m = Basemap(lon_0=-105,boundinglat=30.,
            resolution='l',area_thresh=10000.,projection='npstere')
# number of points to plot.
npts = 750
# generate random points on a sphere,
# so that every small area on the sphere is expected
# to have the same number of points.
# http://mathworld.wolfram.com/SpherePointPicking.html
try: # this works for numpy
    u = uniform(0.,1.,size=npts)
    v = uniform(0.,1.,size=npts)
    z = uniform(0.,1.,size=npts)
except: # this works for Numeric/numarray
    u = uniform(0.,1.,shape=npts)
    v = uniform(0.,1.,shape=npts)
    z = uniform(0.,1.,shape=npts)
lons = 360.*u
lats = (180./math.pi)*arccos(2*v-1) - 90.
# transform lons and lats to map coordinates.
x,y = m(lons,lats)
# plot them as filled circles on the map.
# first, create a figure.
fig=figure()
Ejemplo n.º 9
0
    ul.append(float(l[0]))
    vl.append(float(l[1]))
    pl.append(float(l[2]))
u = reshape(array(ul, Float32), (nlats, nlons))
v = reshape(array(vl, Float32), (nlats, nlons))
p = reshape(array(pl, Float32), (nlats, nlons))
lats1 = -90. + dellat * arange(nlats)
lons1 = -180. + dellon * arange(nlons)
lons, lats = meshgrid(lons1, lats1)

# plot vectors in geographical (lat/lon) coordinates.

# north polar projection.
m = Basemap(lon_0=-135,
            boundinglat=25,
            resolution='c',
            area_thresh=10000.,
            projection='npstere')
# create a figure, add an axes.
fig = figure(figsize=(8, 8))
ax = fig.add_axes([0.1, 0.1, 0.7, 0.7])
# rotate wind vectors to map projection coordinates.
# (also compute native map projections coordinates of lat/lon grid)
# only do Northern Hemisphere.
urot, vrot, x, y = m.rotate_vector(u[36:, :],
                                   v[36:, :],
                                   lons[36:, :],
                                   lats[36:, :],
                                   returnxy=True)
# plot filled contours over map.
cs = m.contourf(x, y, p[36:, :], 15, cmap=cm.jet)
Ejemplo n.º 10
0
"""
draw Atlantic Hurricane Tracks for storms that reached Cat 4 or 5.
part of the track for which storm is cat 4 or 5 is shown red.
ESRI shapefile data from http://www.nationalatlas.gov/atlasftp.html
"""
import pylab as p
from matplotlib.toolkits.basemap import Basemap as Basemap
# Lambert Conformal Conic map.
m = Basemap(llcrnrlon=-100.,llcrnrlat=0.,urcrnrlon=-20.,urcrnrlat=57.,
            projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60.)
# make sure map has right aspect ratio.
fig=p.figure(figsize=(8,m.aspect*8))
fig.add_axes([0.1,0.1,0.8,0.8])
# read shapefile.
shp_info = m.readshapefile('huralll020','hurrtracks',drawbounds=False)
print shp_info
# find names of storms that reached Cat 4.
names = []
for shapedict in m.hurrtracks_info:
    cat = shapedict['CATEGORY']
    name = shapedict['NAME']
    if cat in ['H4','H5'] and name not in names:
        if name != 'NOT NAMED':  names.append(name)
print names
print len(names)
# plot tracks of those storms.
for shapedict,shape in zip(m.hurrtracks_info,m.hurrtracks):
    name = shapedict['NAME']
    cat = shapedict['CATEGORY']
    if name in names:
        xx,yy = zip(*shape)
Ejemplo n.º 11
0
# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('etopo20.pickle', 'rb'))
topoin = topodict['data']
lons = topodict['lons']
lats = topodict['lats']

# shift data so lons go from -180 to 180 instead of 20 to 380.
topoin, lons = shiftgrid(180., topoin, lons, start=False)

print 'min/max etopo20 data:'
print min(ravel(topoin)), max(ravel(topoin))

# setup cylindrical equidistant map projection (global domain).
m = Basemap(-180.,-90,180.,90.,\
            resolution='c',area_thresh=10000.,projection='cyl')
# setup figure with same aspect ratio as map.
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
ax = fig.add_axes([0.1, 0.1, 0.75, 0.75])
# plot image over map.
im = m.imshow(topoin, cm.jet)
cax = axes([0.875, 0.1, 0.05, 0.75])  # setup colorbar axes.
colorbar(tickfmt='%d', cax=cax)  # draw colorbar
axes(ax)  # make the original axes current again
m.drawcoastlines()
#m.drawcountries()
#m.drawstates()
#m.fillcontinents()
# draw parallels
delat = 30.
Ejemplo n.º 12
0
pylab.clf()

b = 5.
# Plot the region surrounding the coastline rounded to the nearest 5 degree lat/lon.
lonmin = b*math.floor(min(lon)/b)
lonmax = b*math.ceil(max(lon)/b)
latmin = b*math.floor(min(lat)/b)
latmax = b*math.ceil(max(lat)/b)
meridian = (range(lonmin, lonmax+b, b))
parallel = (range(latmin, latmax+b, b))
prj = 'cyl'
res = 'i'
map = Basemap(projection=prj,
              llcrnrlon=lonmin,
              llcrnrlat=latmin,
              urcrnrlon=lonmax,
              urcrnrlat=latmax,
              resolution=res)

map.plot(lon, lat, 'r-')
map.plot(lon, lat, 'k+')

fs = 10

pylab.text(115.9,-31.9, "Perth", fontsize=fs, ha='left', va='top')
pylab.text(114.1,-21.9, "Exmouth", fontsize=fs, ha='left', va='top')
pylab.text(118.5,-20.4, "Port Hedland", fontsize=fs, ha='left', va='top')
pylab.text(130.8,-12.6, "Darwin", fontsize=fs, ha='left', va='top')
pylab.text(145.75,-16.9, "Cairns", fontsize=fs, ha='right', va='top')
pylab.text(149.2,-21.2, "Mackay", fontsize=fs, ha='right', va='top')
pylab.text(153.0,-27.5, "Brisbane", fontsize=fs, ha='right', va='top')
Ejemplo n.º 13
0
from matplotlib.toolkits.basemap import Basemap
from pylab import title, show, arange
# create Basemap instance for Orthographic (satellite view) projection.
lon_0 = float(raw_input('enter reference longitude (lon_0):'))
lat_0 = float(raw_input('enter reference latitude (lat_0):'))
m = Basemap(projection='ortho', lon_0=lon_0, lat_0=lat_0)
# plot land-sea mask.
rgba_land = (0, 255, 0, 255)  # land green.
rgba_ocean = (0, 0, 255, 255)  # ocean blue.
# lakes=True means plot inland lakes with ocean color.
m.drawlsmask(rgba_land, rgba_ocean, lakes=True)
# draw parallels and meridians.
m.drawparallels(arange(-90., 120., 30.))
m.drawmeridians(arange(0., 420., 60.))
m.drawmapboundary()
title('Orthographic Map Centered on Lon=%s, Lat=%s' % (lon_0, lat_0))
show()
Ejemplo n.º 14
0
	def DrawSiteNetwork(self, g, node_label2pos_counts,pic_area=[-180,-90,180,90], output_fname_prefix=None):
		"""
		2007-07-17
			put ax.plot() right after Basemap() but after m.xxx() so that it'll zoom in
			use 'g' in ax.plot(), otherwise, ax.plot() alternates all colors.
			no parallels, no meridians
		2007-08-29 copied from CreatePopulation.py and renamed from DrawStrainNetwork
		"""
		sys.stderr.write("Drawing Site Network...")
		import pylab
		from matplotlib.toolkits.basemap import Basemap
		pylab.clf()
		fig = pylab.figure()
		fig.add_axes([0.05,0.05,0.9,0.9])	#[left, bottom, width, height]
		m = Basemap(llcrnrlon=pic_area[0],llcrnrlat=pic_area[1],urcrnrlon=pic_area[2],urcrnrlat=pic_area[3],\
		resolution='l',projection='mill')
		
		ax=pylab.gca()
		for e in g.edges():
			lat1, lon1 = node_label2pos_counts[e[0]][0]
			lat2, lon2 = node_label2pos_counts[e[1]][0]
			x1, y1 = m(lon1, lat1)
			x2, y2 = m(lon2, lat2)
			ax.plot([x1,x2],[y1,y2], 'g', alpha=0.5, zorder=12)
		
		#m.drawcoastlines()
		m.drawparallels(pylab.arange(-90,90,30), labels=[1,1,0,1])
		m.drawmeridians(pylab.arange(-180,180,30), labels=[1,1,0,1])
		m.fillcontinents()
		m.drawcountries()
		m.drawstates()

		pylab.title("Network of strains")
		if output_fname_prefix:
			pylab.savefig('%s_site_network.eps'%output_fname_prefix, dpi=300)
			pylab.savefig('%s_site_network.svg'%output_fname_prefix, dpi=300)
			pylab.savefig('%s_site_network.png'%output_fname_prefix, dpi=300)
		del m, pylab, Basemap
		sys.stderr.write("Done.\n")
Ejemplo n.º 15
0
from matplotlib.toolkits.basemap import Basemap, shiftgrid
from pylab import *
import cPickle

# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('etopo20.pickle', 'rb'))
topoin = topodict['data']
lons = topodict['lons']
lats = topodict['lats']
# shift data so lons go from -180 to 180 instead of 20 to 380.
topoin, lons = shiftgrid(180., topoin, lons, start=False)

# setup of basemap ('lcc' = lambert conformal conic).
m = Basemap(-145.5,1.,-2.566,46.352,\
            resolution='c',area_thresh=10000.,projection='lcc',\
            lat_1=50.,lon_0=-107.)
# transform to nx x ny regularly spaced native projection grid
nx = int((m.xmax - m.xmin) / 40000.) + 1
ny = int((m.ymax - m.ymin) / 40000.) + 1
topodat, x, y = m.transform_scalar(topoin, lons, lats, nx, ny, returnxy=True)
# set up figure with same aspect ratio as map.
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
ax = fig.add_axes([0.1, 0.1, 0.7, 0.7])
# plot image over map with imshow.
im = m.imshow(topodat, cm.jet)
# use pcolor (looks very similar to imshow, but slower).
#p = m.pcolor(x,y,topodat,shading='flat')
# plot contour lines over map (colors is a list so neg contours will
# not be dashed).
Ejemplo n.º 16
0
from matplotlib.toolkits.basemap import Basemap, interp
from pylab import *
import cPickle

# read in data on lat/lon grid.
datadict = cPickle.load(open('500hgt.pickle','rb'))
hgt = datadict['data']; lons = datadict['lons']; lats = datadict['lats']

# set up map projection (lambert azimuthal equal area).
m = Basemap(-150.,-20.,30.,-20.,
             resolution='c',area_thresh=10000.,projection='laea',
             lat_0=90.,lon_0=-105.)
# interpolate to map projection grid.
nx = 101
ny = 101
lonsout, latsout = m.makegrid(nx,ny)
# get rid of negative lons.
lonsout = where(lonsout < 0., lonsout + 360., lonsout)
hgt = interp(hgt,lons,lats,lonsout,latsout)
dx = (m.xmax-m.xmin)/(nx-1)
dy = (m.ymax-m.ymin)/(ny-1)  
x = m.xmin+dx*indices((ny,nx))[1,:,:]
y = m.ymin+dy*indices((ny,nx))[0,:,:]

#m = Basemap(lons[0],lats[0],lons[-1],lats[-1],\
#              resolution='c',area_thresh=10000.,projection='cyl')
#x, y = meshgrid(lons, lats)

fig = figure(figsize=(8,8))

plots = ['contour','pcolor']
Ejemplo n.º 17
0

# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('etopo20.pickle', 'rb'))
topoin = topodict['data']
lons = topodict['lons']
lats = topodict['lats']

# shift data so lons go from 0 to 360 instead of 20 to 380.
topoin, lons = shiftgrid(360., topoin, lons, start=False)

print 'min/max etopo20 data:'
print min(ravel(topoin)), max(ravel(topoin))

m = Basemap(lons[0],lats[0],lons[-1],lats[-1],\
            resolution='c',area_thresh=10000.,projection='cyl')
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
ax = fig.add_axes([0.1, 0.1, 0.75, 0.75])
im = imshow(topoin,
            cm.jet,
            extent=(m.llcrnrx, m.urcrnrx, m.llcrnry, m.urcrnry),
            origin='lower')
cax = axes([0.875, 0.1, 0.05, 0.75])
colorbar(tickfmt='%d', cax=cax)  # draw colorbar
axes(ax)  # make the original axes current again
m.drawcoastlines(ax)
#m.drawcountries(ax)
#m.drawstates(ax)
#m.fillcontinents(ax)
# draw parallels
Ejemplo n.º 18
0
Archivo: view.py Proyecto: jwblin/qtcm
    u1[:,-1] = u1_all[time_idx,:,0]

tmp = copy.copy(lon)
lon = p.zeros((p.size(tmp)+1,))
lon[0:-1] = tmp[:]
lon[-1] = tmp[0]+360
del tmp

f.close()


#--- Mapping information:

map = Basemap( projection='cyl', resolution='l'
             , llcrnrlon=0, urcrnrlon=360
             , llcrnrlat=-76.875, urcrnrlat=76.875
             , lon_0=180, lat_0=0
             )
map.drawmeridians(p.arange(0,361,45), labels=[0,0,0,1])
map.drawparallels(p.arange(-90,90,30), labels=[1,0,0,1])
map.drawcoastlines()


#--- Write out contour map and view using preview:

x, y = p.meshgrid(lon,lat)
CS = map.contourf(x, y, u1, cmap=p.cm.gray)
p.text( 0.5, -0.15, 'Longitude [deg]'
      , horizontalalignment='center'
      , verticalalignment='center'
      , transform = p.gca().transAxes )
Ejemplo n.º 19
0
from matplotlib.toolkits.basemap import Basemap
from pylab import *
# read in topo data (on a regular lat/lon grid)
etopo = array(load('etopo20data.gz'), 'd')
lons = array(load('etopo20lons.gz'), 'd')
lats = array(load('etopo20lats.gz'), 'd')
# create Basemap instance for Robinson projection.
m = Basemap(projection='robin', lon_0=0.5 * (lons[0] + lons[-1]))
# create figure with same aspect ratio as map.
fig = m.createfigure()
# make filled contour plot.
x, y = m(*meshgrid(lons, lats))
cs = m.contourf(x, y, etopo, 30, cmap=cm.jet)
# draw coastlines.
m.drawcoastlines()
# draw a line around the map region.
m.drawmapboundary()
# draw parallels and meridians.
m.drawparallels(arange(-60., 90., 30.), labels=[1, 0, 0, 0])
m.drawmeridians(arange(0., 420., 60.), labels=[0, 0, 0, 1])
# add a title.
title('Robinson Projection')
show()
Ejemplo n.º 20
0
# make plot of etopo bathymetry/topography data on
# lambert conformal conic map projection, drawing coastlines, state and
# country boundaries, and parallels/meridians.

from matplotlib.toolkits.basemap import Basemap, interp
from pylab import *
import cPickle

# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('data/etopo20.pickle','rb'))
topoin = topodict['data']; lons = topodict['lons']; lats = topodict['lats']

# setup of basemap ('lcc' = lambert conformal conic).
m = Basemap(-145.5,1.,-2.566,46.352,\
            resolution='c',area_thresh=10000.,projection='lcc',\
            lat_1=50.,lon_0=-107.)
# define grid (nx x ny regularly spaced native projection grid)
nx = int((m.xmax-m.xmin)/40000.)+1; ny = int((m.ymax-m.ymin)/40000.)+1
lonsout, latsout = m.makegrid(nx,ny)
topodat = interp(topoin,lons,lats,lonsout,latsout)
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
ax = fig.add_axes([0.1,0.1,0.75,0.75])
im = imshow(topodat,cm.jet,extent=(m.xmin, m.xmax, m.ymin, m.ymax),origin='lower')

cax = axes([0.875, 0.1, 0.05, 0.75])
colorbar(tickfmt='%d', cax=cax) # draw colorbar

axes(ax)  # make the original axes current again
m.drawcoastlines(ax)
Ejemplo n.º 21
0
from matplotlib.toolkits.basemap import Basemap, basemap_datadir
from pylab import show, title, arange, figure, draw, ion, ioff, clf
import cPickle, time, sys, os

# turn interactive mode on.
ion()
# create new figure
fig = figure()
# create Basemap instance. Use 'crude' resolution coastlines.
m = Basemap(llcrnrlon=-11.,
            llcrnrlat=50.5,
            urcrnrlon=-5.,
            urcrnrlat=56.,
            resolution='c',
            projection='tmerc',
            lon_0=-8.,
            lat_0=0.)
# draw coastlines and fill continents.
m.drawcoastlines()
m.fillcontinents()
# draw political boundaries.
m.drawcountries()
# draw parallels
circles = arange(50, 60, 1).tolist()
m.drawparallels(circles, labels=[1, 1, 0, 0])
# draw meridians
meridians = arange(-12, 0, 1)
m.drawmeridians(meridians, labels=[0, 0, 1, 1])
print 'plotting with crude res boundaries ...'
title("Crude Res Boundaries ('c')", y=1.05)
draw()
Ejemplo n.º 22
0
# country boundaries, and parallels/meridians.

from matplotlib.toolkits.basemap import Basemap, interp
from pylab import *
import cPickle

# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('etopo20.pickle', 'rb'))
topoin = topodict['data']
lons = topodict['lons']
lats = topodict['lats']

# setup of basemap ('lcc' = lambert conformal conic).
m = Basemap(-145.5,1.,-2.566,46.352,\
            resolution='c',area_thresh=10000.,projection='lcc',\
            lat_1=50.,lon_0=-107.)
# define grid (nx x ny regularly spaced native projection grid)
nx = int((m.xmax - m.xmin) / 40000.) + 1
ny = int((m.ymax - m.ymin) / 40000.) + 1
lonsout, latsout = m.makegrid(nx, ny)
topodat = interp(topoin, lons, lats, lonsout, latsout)
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
ax = fig.add_axes([0.1, 0.1, 0.75, 0.75])
im = imshow(topodat,
            cm.jet,
            extent=(m.xmin, m.xmax, m.ymin, m.ymax),
            origin='lower')

cax = axes([0.875, 0.1, 0.05, 0.75])
Ejemplo n.º 23
0
def plot_track(rlon, rlat=None, m=None, **keywords):
    show_lat = 1
    if ('show_lat' in keywords):
        show_lat = keywords['show_lat']

    show_lon = 1
    if ('show_lon' in keywords):
        show_lon = keywords['show_lon']

    if (m == None):
        map_proj = 'cyl'
        if ('map_proj' in keywords):
            map_proj = keywords['map_proj']

        lat_0 = 0.0
        if ('lat_0' in keywords):
            lat_0 = keywords['lat_0']

        minlat = -90.0
        maxlat = 90.0

        if ('minlat' in keywords):
            minlat = keywords['minlat']

        if ('maxlat' in keywords):
            maxlat = keywords['maxlat']

        minlon = -180
        maxlon = 180.0

        if ('minlon' in keywords):
            minlon = keywords['minlon']

        if ('maxlon' in keywords):
            maxlon = keywords['maxlon']

        lon_0 = 0

        if ('lon_0' in keywords):
            lon_0 = keywords['lon_0']

        boundinglat = 45

        if ('boundinglat' in keywords):
            boundinglat = keywords['boundinglat']

        if (map_proj == 'npstere' or map_proj == 'spstere'):
            m = Basemap(projection=map_proj,
                        lon_0=lon_0,
                        boundinglat=boundinglat)
        elif (map_proj == 'ortho'):
            m = Basemap(projection=map_proj, lon_0=lon_0, lat_0=lat_0)
        else:
            m=Basemap(llcrnrlon=minlon, llcrnrlat=minlat, \
                      urcrnrlon=maxlon, urcrnrlat=maxlat,projection=map_proj, lon_0=lon_0, lat_0=lat_0)
        if (show_lat == 1):
            m.drawparallels(arange(minlat, maxlat + 30.0, 30.),
                            labels=[1, 0, 0, 0])
        if (show_lon == 1):
            m.drawmeridians(arange(minlon, maxlon + 60, 60.),
                            labels=[0, 0, 0, 1])
    sgn = '+'
    if ('sgn' in keywords):
        sgn = keywords['sgn']
    if ('color' in keywords):
        lcolor = keywords['color']
        if (len(rlon) < 100):
            m.plot(rlon, rlat, sgn, color=lcolor, markersize=11)
        else:
            m.plot(rlon, rlat, sgn, color=lcolor, markersize=6)

    else:
        m.plot(rlon, rlat, sgn)

    m.drawcoastlines(color='w', linewidth=0.5)
    m.drawmapboundary()
    # m.drawcountries(color='k', linewidth=0.5)

    if ('title' in keywords):
        stitle = keywords['title']
        title(stitle)

    return m
Ejemplo n.º 24
0
    data.y, 2, oban.barnes_weights, (kappa0, g))
  barnes_analyses.append(field)
  diffs = oban.get_ob_incs(data.x, data.y, data.heights, x, y, field)
  barnes_rms.append(misc.rms(diffs))
  print "Barnes 2-pass gamma=%.1f rms: %f" % (g, barnes_rms[-1])

#Do the barnes 3-pass
barnes_3pass = oban.analyze_grid_multipass(data.heights, x_grid, y_grid,
  data.x, data.y, 3, oban.barnes_weights, (kappa0, 1.0))
diffs = oban.get_ob_incs(data.x, data.y, data.heights, x, y, barnes_3pass)
barnes_3pass_rms = misc.rms(diffs)
print "Barnes 3-pass rms: %f" % barnes_3pass_rms

#Generate a grid for basemap plotting
bm_ps = Basemap(projection='stere',lat_0=90.0,lon_0=-110.0,lat_ts=60.0,
  rsphere=ps.radius,llcrnrlon=-120.5,llcrnrlat=25.1,urcrnrlon=-61.8,
  urcrnrlat=43.4,resolution='l',area_thresh=5000)

#Transform the grid to basemap space for plotting
x_bm,y_bm = ps.to_basemap_xy(bm_ps, x_grid / cm_per_m, y_grid / cm_per_m)

#Check if we want to view or save output
if len(sys.argv) > 1 and sys.argv[1].startswith('silent'):
  save_work = True
  colormap = M.cm.get_cmap('gist_gray')
  fontsize = 10
else:
  save_work = False
  colormap = M.cm.get_cmap('jet')
  fontsize = 14
Ejemplo n.º 25
0
# example demonstrating how to draw a great circle on a map.
import matplotlib
from matplotlib.toolkits.basemap import Basemap
from pylab import *

# setup a mercator projection.
m = Basemap(-90.,30.,30.,60.,\
            resolution='c',area_thresh=10000.,projection='merc',\
            lat_ts=20.)
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
fig.add_axes([0.1,0.1,0.8,0.8])
ax = gca() # get current axis instance
ax.update_datalim(((m.llcrnrx, m.llcrnry),(m.urcrnrx,m.urcrnry)))
ax.set_xlim((m.llcrnrx, m.urcrnrx))
ax.set_ylim((m.llcrnry, m.urcrnry))
m.drawcoastlines(ax)
m.fillcontinents(ax)
# draw parallels
circles = [35,45,55]
m.drawparallels(ax,circles,labels=[1,1,0,1])
# draw meridians
meridians = [-90,-60,-30,0,30]
m.drawmeridians(ax,meridians,labels=[1,1,0,1])
# nylat, nylon are lat/lon of New York
nylat = 40.78
nylon = -73.98
# lonlat, lonlon are lat/lon of London.
lonlat = 51.53
lonlon = 0.08
# draw the great circle.
Ejemplo n.º 26
0
from matplotlib.toolkits.basemap import Basemap, shiftgrid
from pylab import *

# read in topo data (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topoin = array(load('etopo20data.gz'),'d')
lons = array(load('etopo20lons.gz'),'d')
lats = array(load('etopo20lats.gz'),'d')
# shift data so lons go from -180 to 180 instead of 20 to 380.
topoin,lons = shiftgrid(180.,topoin,lons,start=False)

# setup of basemap ('lcc' = lambert conformal conic).
# use major and minor sphere radii from WGS84 ellipsoid.
m = Basemap(llcrnrlon=-145.5,llcrnrlat=1.,urcrnrlon=-2.566,urcrnrlat=46.352,\
            rsphere=(6378137.00,6356752.3142),\
            resolution='l',area_thresh=1000.,projection='lcc',\
            lat_1=50.,lon_0=-107.)
# transform to nx x ny regularly spaced native projection grid
nx = int((m.xmax-m.xmin)/40000.)+1; ny = int((m.ymax-m.ymin)/40000.)+1
topodat,x,y = m.transform_scalar(topoin,lons,lats,nx,ny,returnxy=True)
# create the figure.
fig=figure(figsize=(8,8))
# add an axes, leaving room for colorbar on the right.
ax = fig.add_axes([0.1,0.1,0.7,0.7])
# plot image over map with imshow.
im = m.imshow(topodat,cm.jet)
# setup colorbar axes instance.
l,b,w,h = ax.get_position()
cax = axes([l+w+0.075, b, 0.05, h])
colorbar(tickfmt='%d', cax=cax) # draw colorbar
axes(ax)  # make the original axes current again
Ejemplo n.º 27
0
lats = 90. - delat * arange(nlats)
lons, lats = meshgrid(lons, lats)
lons = (d2r * lons.flat).tolist()
lats = (d2r * lats.flat).tolist()
# randomly shuffle locations.
random.shuffle(lons)
random.shuffle(lats)
lons = array(lons, 'f')
lats = array(lats, 'f')

# minimum separation distance in km.
rcrit = 500.

# set up lambert azimuthal map centered on N. Pole.
m = Basemap(llcrnrlon=-150.,llcrnrlat=0.,urcrnrlon=30.,urcrnrlat=0.,
            resolution='l',area_thresh=10000.,projection='stere',\
            lat_0=90.,lon_0=-105.,lat_ts=90.)

print len(lons), ' obs before thinning'

# calculate distance between each ob and all preceding obs in list.
# throw out those that are closer than rcrit.
nob = 0
lats_out = []
lons_out = []
for lon, lat in zip(lons, lats):
    if nob:
        r = (m.rmajor / 1000.) * get_dist(lon, lons[0:nob], lat, lats[0:nob])
        if min(r) > rcrit:
            lats_out.append(lat)
            lons_out.append(lon)
Ejemplo n.º 28
0
from matplotlib.toolkits.basemap import Basemap
from pylab import *
import cPickle

# create Basemap instance. Use 'crude' resolution coastlines.
m = Basemap(llcrnrlon=-11.,llcrnrlat=50.5,urcrnrlon=-5.,urcrnrlat=56.,
            resolution='c',area_thresh=1000.,projection='tmerc',lon_0=-8.,lat_0=0.)
# create figure with same aspect ratio as map.
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
fig.add_axes([0.1,0.1,0.8,0.8])
# draw coastlines and fill continents.
m.drawcoastlines()
m.fillcontinents()
# draw political boundaries.
m.drawcountries()
# draw parallels
circles = arange(50,60,1).tolist()
m.drawparallels(circles,labels=[1,1,0,0])
# draw meridians
meridians = arange(-12,0,1)
m.drawmeridians(meridians,labels=[0,0,1,1])
title("Crude Res Boundaries ('c')",y=1.075)
show()

# create Basemap instance. Use 'low' resolution coastlines.
m = Basemap(llcrnrlon=-11.,llcrnrlat=50.5,urcrnrlon=-5.,urcrnrlat=56.,
            resolution='l',area_thresh=1000.,projection='tmerc',lon_0=-8.,lat_0=0.)
# create figure with same aspect ratio as map.
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
Ejemplo n.º 29
0
hgt = P.load("500hgtdata.gz")
lons = P.load("500hgtlons.gz")
lats = P.load("500hgtlats.gz")
lons, lats = P.meshgrid(lons, lats)

# Example to show how to make multi-panel plots.

# 2-panel plot, oriented vertically, colorbar on bottom.

rcParams["figure.subplot.hspace"] = 0.4  # more height between subplots
rcParams["figure.subplot.wspace"] = 0.5  # more width between subplots

# create new figure
fig = P.figure()
# panel 1
mnh = Basemap(lon_0=-105, boundinglat=20.0, resolution="c", area_thresh=10000.0, projection="nplaea")
xnh, ynh = mnh(lons, lats)
ax = fig.add_subplot(211)
CS = mnh.contour(xnh, ynh, hgt, 15, linewidths=0.5, colors="k")
CS = mnh.contourf(xnh, ynh, hgt, 15, cmap=P.cm.Spectral)
# colorbar on bottom.
l, b, w, h = ax.get_position()
cax = P.axes([l, b - 0.05, w, 0.025])  # setup colorbar axes
P.colorbar(cax=cax, orientation="horizontal", ticks=CS.levels[0::4])  # draw colorbar
P.axes(ax)  # make the original axes current again
mnh.drawcoastlines(linewidth=0.5)
delat = 30.0
circles = P.arange(0.0, 90.0, delat).tolist() + P.arange(-delat, -90, -delat).tolist()
mnh.drawparallels(circles, labels=[1, 0, 0, 0])
delon = 45.0
meridians = P.arange(0, 360, delon)
Ejemplo n.º 30
0
# example demonstrating how to draw a great circle on a map.
import matplotlib
from matplotlib.toolkits.basemap import Basemap
from pylab import *

# setup a mercator projection.
m = Basemap(-90.,30.,30.,60.,\
            resolution='c',area_thresh=10000.,projection='merc',\
            lat_ts=20.)
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax = gca()  # get current axis instance
ax.update_datalim(((m.llcrnrx, m.llcrnry), (m.urcrnrx, m.urcrnry)))
ax.set_xlim((m.llcrnrx, m.urcrnrx))
ax.set_ylim((m.llcrnry, m.urcrnry))
m.drawcoastlines(ax)
m.fillcontinents(ax)
# draw parallels
circles = [35, 45, 55]
m.drawparallels(ax, circles, labels=[1, 1, 0, 1])
# draw meridians
meridians = [-90, -60, -30, 0, 30]
m.drawmeridians(ax, meridians, labels=[1, 1, 0, 1])
# nylat, nylon are lat/lon of New York
nylat = 40.78
nylon = -73.98
# lonlat, lonlon are lat/lon of London.
lonlat = 51.53
lonlon = 0.08
# draw the great circle.
Ejemplo n.º 31
0
def plot_track(rlon, rlat=None, m=None, **keywords):
    show_lat = 1
    if ('show_lat' in keywords):
        show_lat = keywords['show_lat']

    show_lon = 1
    if ('show_lon' in keywords):
        show_lon = keywords['show_lon']

    if (m is None):
        map_proj = 'cyl'
        if ('map_proj' in keywords):
            map_proj = keywords['map_proj']

        lat_0 = 0.0
        if ('lat_0' in keywords):
            lat_0 = keywords['lat_0']

        minlat = -90.0
        maxlat = 90.0

        if ('minlat' in keywords):
            minlat = keywords['minlat']

        if ('maxlat' in keywords):
            maxlat = keywords['maxlat']

        minlon = -180
        maxlon = 180.0

        if ('minlon' in keywords):
            minlon = keywords['minlon']

        if ('maxlon' in keywords):
            maxlon = keywords['maxlon']

        lon_0 = 0

        if ('lon_0' in keywords):
            lon_0 = keywords['lon_0']

        boundinglat = 45

        if ('boundinglat' in keywords):
            boundinglat = keywords['boundinglat']

        if (map_proj == 'npstere' or map_proj == 'spstere'):
            m = Basemap(projection=map_proj,
                        lon_0=lon_0,
                        boundinglat=boundinglat)
        elif (map_proj == 'ortho'):
            m = Basemap(projection=map_proj, lon_0=lon_0, lat_0=lat_0)
        else:
            m = Basemap(llcrnrlon=minlon,
                        llcrnrlat=minlat,
                        urcrnrlon=maxlon,
                        urcrnrlat=maxlat,
                        projection=map_proj,
                        lon_0=lon_0,
                        lat_0=lat_0)
        if (show_lat == 1):
            m.drawparallels(arange(minlat, maxlat + 30.0, 30.),
                            labels=[1, 0, 0, 0])
        if (show_lon == 1):
            m.drawmeridians(arange(minlon, maxlon + 60, 60.),
                            labels=[0, 0, 0, 1])
    sgn = 'o'
    if ('sgn' in keywords):
        sgn = keywords['sgn']

    if ('color' in keywords):
        print('I am here', size(rlon))

        lcolor = keywords['color']
        print(max(lcolor), min(lcolor))

        if ('minv' in keywords):
            vmin = keywords['minv']
        else:
            vmin = min(lcolor)

        if ('maxv' in keywords):
            vmax = keywords['maxv']
        else:
            vmax = max(lcolor)

        cx = cm.jet
        cx.set_over('r')
        cx.set_under('w')
        x, y = m(rlon, rlat)

        if (len(rlon) < 100):
            scatter(x,
                    y,
                    marker=sgn,
                    c=lcolor,
                    s=30.0,
                    color='w',
                    vmin=vmin,
                    vmax=vmax,
                    cmap=cx)  # , markersize=11)
        else:
            scatter(x,
                    y,
                    marker=sgn,
                    c=lcolor,
                    s=26,
                    edgecolor='w',
                    vmin=vmin,
                    vmax=vmax,
                    cmap=cx)  # , markersize=6)

    cbar_vert = 1
    if ('cbar_vert' in keywords):
        cbar_vert = keywords['cbar_vert']

    if (cbar_vert == 1):
        orientation = 'vertical'
    else:
        orientation = 'horizontal'

    show_colorbar = 0
    if ('cb' in keywords):
        show_colorbar = keywords['cb']
    if (show_colorbar == 1):
        colorbar(orientation=orientation)

    # colorbar(cmap=cx)

    m.drawcoastlines(color='k', linewidth=1.0)
    m.drawmapboundary()
    # m.drawcountries(color='k', linewidth=0.5)

    if ('title' in keywords):
        stitle = keywords['title']
        title(stitle)

    return m
Ejemplo n.º 32
0
     bounding_lat = 20.
 # loop over projections, one for each panel of the figure.
 fig = figure(figsize=(8, 8))
 npanel = 0
 for proj, projname in zip(projs, projnames):
     npanel = npanel + 1
     if hem == 'South':
         projection = 'sp' + proj
     elif hem == 'North':
         projection = 'np' + proj
     # setup map projection
     # centered on Australia (for SH) or US (for NH).
     if proj == 'ortho':
         m = Basemap(projection='ortho',
                     resolution='c',
                     area_thresh=10000.,
                     lat_0=lat_0,
                     lon_0=lon_0_ortho)
     else:
         m = Basemap(boundinglat=bounding_lat,lon_0=lon_0,\
                     resolution='c',area_thresh=10000.,projection=projection)
     # compute native map projection coordinates for lat/lon grid.
     x, y = m(*meshgrid(lons, lats))
     ax = fig.add_subplot(2, 2, npanel)
     # make filled contour plot.
     cs = m.contourf(x, y, etopo, 20, cmap=cm.jet)
     # draw coastlines.
     m.drawcoastlines()
     # draw parallels and meridians.
     m.drawparallels(arange(-80., 90, 20.))
     m.drawmeridians(arange(0., 360., 60.))
Ejemplo n.º 33
0
from gdalconst import *
import pylab as p

# download from 
# http://edcftp.cr.usgs.gov/pub/data/DEM/250/D/denver-w.gz
gd = gdal.Open('denver-w')
# get data from DEM file
array = gd.ReadAsArray()
# get lat/lon coordinates from DEM file.
coords = gd.GetGeoTransform()
llcrnrlon = coords[0]
urcrnrlon = llcrnrlon+(array.shape[1]-1)*coords[1]
urcrnrlat = coords[3]
llcrnrlat = urcrnrlat+(array.shape[0]-1)*coords[5]
# create Basemap instance.
m = Basemap(llcrnrlon=llcrnrlon,llcrnrlat=llcrnrlat,urcrnrlon=urcrnrlon,urcrnrlat=urcrnrlat,projection='cyl')
# create a figure, add an axes
# (leaving room for a colorbar).
fig = p.figure()
ax = fig.add_axes([0.1,0.1,0.75,0.75])
# plot image from DEM over map.
im = m.imshow(array,origin='upper')
# make a colorbar.
cax = p.axes([0.875, 0.1, 0.05, 0.75]) # setup colorbar axes.
p.colorbar(cax=cax) # draw colorbar
p.axes(ax)  # make the original axes current again
# draw meridians and parallels.
m.drawmeridians(p.linspace(llcrnrlon+0.1,urcrnrlon-0.1,5),labels=[0,0,0,1],fmt='%4.2f')
m.drawparallels(p.linspace(llcrnrlat+0.1,urcrnrlat-0.1,5),labels=[1,0,0,0],fmt='%4.2f')
# plot county boundaries from
# http://edcftp.cr.usgs.gov/pub/data/nationalatlas/countyp020.tar.gz
Ejemplo n.º 34
0
from matplotlib.toolkits.basemap import Basemap
from pylab import *

# create Basemap instance. Use 'crude' resolution coastlines.
m = Basemap(-11.,
            51.,
            -5.,
            56.,
            resolution='c',
            area_thresh=1000.,
            projection='cyl')
# create figure with same aspect ratio as map.
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
fig.add_axes([0.1, 0.1, 0.8, 0.8])
# draw coastlines and fill continents.
m.drawcoastlines()
m.fillcontinents()
# draw parallels
circles = arange(50, 60, 1).tolist()
m.drawparallels(circles, labels=[1, 1, 1, 1])
# draw meridians
meridians = arange(-12, 0, 1)
m.drawmeridians(meridians, labels=[1, 1, 1, 1])
title("Crude Res Coastlines ('c')", y=1.075)
show()

# create Basemap instance. Use 'low' resolution coastlines.
m = Basemap(-11.,
            51.,
            -5.,
Ejemplo n.º 35
0
   """

   def __init__(self, baseMap):
      """baseMap is the Basemap object that will be used to translate between
      lon/lat and native map coordinates.
      """
      self.baseMap = baseMap

   def __call__(self, y, pos=1):
      """Return the label for tick value y at position pos.
      """
      lon, lat = self.baseMap(0.0, y, inverse=True)
      return "%g" % lat

m = Basemap(-180.,-80.,180.,80.,\
            resolution='c',area_thresh=10000.,projection='merc',\
            lat_ts=20.)
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
fig.add_axes([0.1,0.1,0.8,0.8])
ax = gca() # get current axis instance
ax.update_datalim(((m.llcrnrx, m.llcrnry),(m.urcrnrx,m.urcrnry)))
ax.set_xlim((m.llcrnrx, m.urcrnrx))
ax.set_ylim((m.llcrnry, m.urcrnry))
m.drawcoastlines(ax)
m.drawcountries(ax)
m.drawstates(ax)
m.fillcontinents(ax)
# draw parallels
delat = 30.
circles = arange(0.,90.,delat).tolist()+\
Ejemplo n.º 36
0
#lonfile = '/home/blew/programy/Mscs/WMAPstuff/SKregstat/sm1.0/3sigma_chisq_comb-K.lon'
#latfile = '/home/blew/programy/Mscs/WMAPstuff/SKregstat/sm1.0/3sigma_chisq_comb-K.lat'

mapfile = sys.argv[1]+'.lonlatT'
lonfile = sys.argv[1]+'.lon'
latfile = sys.argv[1]+'.lat'
color_num = int(sys.argv[2])

# load data
map=array(load(mapfile))
lons=array(load(lonfile))
lats=array(load(latfile))
map,lons = shiftgrid(180.,map,lons,start=False)

# Mollweide projection
m1 = Basemap(projection='moll',lon_0=0.5*(lons[0]+lons[-1]))
lons, lats = meshgrid(lons, lats)
fig1 = m1.createfigure()
x, y = m1(lons, lats)
cs = m1.contourf(x,y,map,color_num,cmap=cm.jet)
m1.drawparallels(arange(-90.,90.,20.),labels=[1,0,0,0])
m1.drawmeridians(arange(0.,420.,30.),labels=[0,0,0,1])
#title('Moll. proj:'+ sys.argv[1])
title(r'$>3\sigma\/ detections\/ composite\/ map:\/ skewness$')
#title(r'$>3\sigma\/ detections\/ composite\/ map:\/ kurtosis$')
colorbar();

savefig(sys.argv[1]+'-moll.png'); #savefig(sys.argv[1]+'-moll.eps')
savefig(sys.argv[1]+'-moll.jpg');

Ejemplo n.º 37
0
pylab.clf()

b = 5.
# Plot the region surrounding the coastline rounded to the nearest 5 degree lat/lon.
lonmin = b*math.floor(min(lon)/b)
lonmax = b*math.ceil(max(lon)/b)
latmin = b*math.floor(min(lat)/b)
latmax = b*math.ceil(max(lat)/b)
meridian = (range(lonmin, lonmax+b, b))
parallel = (range(latmin, latmax+b, b))
prj = 'cyl'
res = 'i'
map = Basemap(projection=prj,
              llcrnrlon=lonmin,
              llcrnrlat=latmin,
              urcrnrlon=lonmax,
              urcrnrlat=latmax,
              resolution=res)

map.plot(lon, lat, 'r-')
map.plot(lon, lat, 'k+')

fs = 10

pylab.text(115.9,-31.9, "Perth", fontsize=fs, ha='left', va='top')
pylab.text(114.1,-21.9, "Exmouth", fontsize=fs, ha='left', va='top')
pylab.text(118.5,-20.4, "Port Hedland", fontsize=fs, ha='left', va='top')
pylab.text(130.8,-12.6, "Darwin", fontsize=fs, ha='left', va='top')
pylab.text(145.75,-16.9, "Cairns", fontsize=fs, ha='right', va='top')
pylab.text(149.2,-21.2, "Mackay", fontsize=fs, ha='right', va='top')
pylab.text(153.0,-27.5, "Brisbane", fontsize=fs, ha='right', va='top')
Ejemplo n.º 38
0
lat_0 = 40.
lon_0 = -100.
width = 6000000.
height = 2. * width / 3.
delat = 25.
circles = arange(0.,90.+delat,delat).tolist()+\
          arange(-delat,-90.-delat,-delat).tolist()
delon = 30.
meridians = arange(10., 360., delon)
npanel = 0
# plots of the US.
projs = ['lcc', 'aeqd', 'aea', 'laea', 'eqdc', 'stere']
fig = figure(figsize=(8, 12))
for proj in projs:
    m = Basemap(width=width,height=height,
                resolution='c',projection=proj,\
                lat_0=lat_0,lon_0=lon_0)
    npanel = npanel + 1
    fig.add_subplot(3, 2, npanel)
    # setup figure with same aspect ratio as map.
    m.drawcoastlines()
    m.drawcountries()
    m.fillcontinents()
    m.drawstates()
    m.drawparallels(circles)
    m.drawmeridians(meridians)
    title('proj = ' + proj + ' centered on %sW, %sN' % (lon_0, lat_0),
          fontsize=10)

proj = 'omerc'
delat = 10.
Ejemplo n.º 39
0
                  figure, title, meshgrid, cm, arange

# examples of filled contour plots on map projections.

# read in data on lat/lon grid.
hgt = load('500hgtdata.gz')
lons = load('500hgtlons.gz')
lats = load('500hgtlats.gz')
# shift data so lons go from -180 to 180 instead of 0 to 360.
hgt,lons = shiftgrid(180.,hgt,lons,start=False)
lons, lats = meshgrid(lons, lats)

# create new figure
fig=figure()
# setup of sinusoidal basemap
m = Basemap(resolution='c',projection='sinu',lon_0=0)
ax = fig.add_axes([0.1,0.1,0.7,0.7])
# make a filled contour plot.
x, y = m(lons, lats)
CS = m.contour(x,y,hgt,15,linewidths=0.5,colors='k')
CS = m.contourf(x,y,hgt,15,cmap=cm.jet)
l,b,w,h=ax.get_position()
cax = axes([l+w+0.075, b, 0.05, h]) # setup colorbar axes
colorbar(drawedges=True, cax=cax) # draw colorbar
axes(ax)  # make the original axes current again
# draw coastlines and political boundaries.
m.drawcoastlines()
m.drawmapboundary()
m.fillcontinents()
# draw parallels and meridians.
parallels = arange(-60.,90,30.)
Ejemplo n.º 40
0
from matplotlib.toolkits.basemap import Basemap
import pylab as p
# set up orthographic map projection with
# perspective of satellite looking down at 50N, 100W.
# use low resolution coastlines.
map = Basemap(projection='ortho',lat_0=50,lon_0=-100,resolution='l')
# draw coastlines, country boundaries, fill continents.
map.drawcoastlines(linewidth=0.25)
map.drawcountries(linewidth=0.25)
map.fillcontinents(color='coral')
# draw the edge of the map projection region (the projection limb)
map.drawmapboundary()
# draw lat/lon grid lines every 30 degrees.
map.drawmeridians(p.arange(0,360,30))
map.drawparallels(p.arange(-90,90,30))
# lat/lon coordinates of five cities.
lats=[40.02,32.73,38.55,48.25,17.29]
lons=[-105.16,-117.16,-77.00,-114.21,-88.10]
cities=['Boulder, CO','San Diego, CA',
        'Washington, DC','Whitefish, MT','Belize City, Belize']
# compute the native map projection coordinates for cities.
x,y = map(lons,lats)
# plot filled circles at the locations of the cities.
map.plot(x,y,'bo')
# plot the names of those five cities.
for name,xpt,ypt in zip(cities,x,y):
    p.text(xpt+50000,ypt+50000,name,fontsize=9)
# make up some data on a regular lat/lon grid.
nlats = 73; nlons = 145; delta = 2.*p.pi/(nlons-1)
lats = (0.5*p.pi-delta*p.indices((nlats,nlons))[0,:,:])
lons = (delta*p.indices((nlats,nlons))[1,:,:])
Ejemplo n.º 41
0
from pylab import *
import cPickle

# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('etopo20.pickle','rb'))
topoin = topodict['data']; lons = topodict['lons']; lats = topodict['lats']

# shift data so lons go from -180 to 180 instead of 20 to 380.
topoin,lons = shiftgrid(180.,topoin,lons,start=False)

print 'min/max etopo20 data:'
print min(ravel(topoin)),max(ravel(topoin))

# setup cylindrical equidistant map projection (global domain).
m = Basemap(-180.,-90,180.,90.,\
            resolution='c',area_thresh=10000.,projection='cyl')
# setup figure with same aspect ratio as map.
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
ax = fig.add_axes([0.1,0.1,0.75,0.75])
# plot image over map.
im = m.imshow(topoin,cm.jet)
cax = axes([0.875, 0.1, 0.05, 0.75]) # setup colorbar axes.
colorbar(tickfmt='%d', cax=cax) # draw colorbar
axes(ax)  # make the original axes current again
m.drawcoastlines()
#m.drawcountries()
#m.drawstates()
#m.fillcontinents()
# draw parallels
delat = 30.
Ejemplo n.º 42
0
def draw_graph_on_map(g, node2weight, node2pos, pic_title,  pic_area=[-130,10,140,70], output_fname_prefix=None, need_draw_edge=0):
	"""
	2007-09-13
		identity_pair_ls is a list of pairs of strains (ecotype id as in table ecotype)
	2007-10-08
		correct a bug in 4*diameter_ls, diameter_ls has to be converted to array first.
		sqrt the node weight, 8 times the original weight
	"""
	import os, sys
	sys.stderr.write("Drawing graph on a map ...\n")
	import pylab, math
	from matplotlib.toolkits.basemap import Basemap
	pylab.clf()
	fig = pylab.figure()
	fig.add_axes([0.05,0.05,0.9,0.9])	#[left, bottom, width, height]
	m = Basemap(llcrnrlon=pic_area[0],llcrnrlat=pic_area[1],urcrnrlon=pic_area[2],urcrnrlat=pic_area[3],\
	resolution='l',projection='mill', ax=pylab.gca())
	
	sys.stderr.write("\tDrawing nodes ...")
	euc_coord1_ls = []
	euc_coord2_ls = []
	diameter_ls = []
	for n in g.nodes():
		lat, lon = node2pos[n]
		euc_coord1, euc_coord2 = m(lon, lat)	#longitude first, latitude 2nd
		euc_coord1_ls.append(euc_coord1)
		euc_coord2_ls.append(euc_coord2)
		diameter_ls.append(math.sqrt(node2weight[n]))
	import numpy
	diameter_ls = numpy.array(diameter_ls)
	m.scatter(euc_coord1_ls, euc_coord2_ls, 8*diameter_ls, marker='o', color='r', alpha=0.4, zorder=12, faceted=False)
	sys.stderr.write("Done.\n")
	
	if need_draw_edge:
		sys.stderr.write("\tDrawing edges ...")
		ax=pylab.gca()
		for popid1, popid2, no_of_connections in g.edges():
			lat1, lon1 = node2pos[popid1]
			lat2, lon2 = node2pos[popid2]
			x1, y1 = m(lon1, lat1)
			x2, y2 = m(lon2, lat2)
			ax.plot([x1,x2],[y1,y2], 'g', linewidth=math.log(no_of_connections+1)/2, alpha=0.2, zorder=10)
		sys.stderr.write("Done.\n")
	
	#m.drawcoastlines()
	m.drawparallels(pylab.arange(-90,90,30), labels=[1,1,0,1])
	m.drawmeridians(pylab.arange(-180,180,30), labels=[1,1,0,1])
	m.fillcontinents()
	m.drawcountries()
	m.drawstates()
	
	pylab.title(pic_title)
	if output_fname_prefix:
		pylab.savefig('%s.eps'%output_fname_prefix, dpi=600)
		pylab.savefig('%s.svg'%output_fname_prefix, dpi=600)
		pylab.savefig('%s.png'%output_fname_prefix, dpi=600)
	del fig, m, pylab
	sys.stderr.write("Done.\n")
Ejemplo n.º 43
0
lats = 90.-delat*arange(nlats)
lons, lats = meshgrid(lons, lats)
lons = (d2r*lons.flat).tolist()
lats = (d2r*lats.flat).tolist()
# randomly shuffle locations.
random.shuffle(lons)
random.shuffle(lats)
lons = array(lons,'f')
lats = array(lats,'f')

# minimum separation distance in km.
rcrit = 500.

# set up lambert azimuthal map centered on N. Pole.
m = Basemap(llcrnrlon=-150.,llcrnrlat=0.,urcrnrlon=30.,urcrnrlat=0.,
            resolution='l',area_thresh=10000.,projection='stere',\
            lat_0=90.,lon_0=-105.,lat_ts=90.)

print len(lons), ' obs before thinning'

# calculate distance between each ob and all preceding obs in list.
# throw out those that are closer than rcrit.
nob = 0
lats_out = []
lons_out = []
for lon,lat in zip(lons,lats):
   if nob:
      r = (m.rmajor/1000.)*get_dist(lon,lons[0:nob],lat,lats[0:nob])
      if min(r) > rcrit: 
          lats_out.append(lat)
          lons_out.append(lon)
Ejemplo n.º 44
0
# in which direction to depart for other points on earth and how far
# it will be to reach that destination.
# The specified point shows up as a red dot in the center of the map.

# This example shows how to use the width and height keywords
# to specify the map projection region (instead of specifying
# the lat/lon of the upper right and lower left corners).

# user enters the lon/lat of the point, and it's name
lon_0 = float(raw_input('input reference lon (degrees):'))
lat_0 = float(raw_input('input reference lat (degrees):'))
location = raw_input('name of location:')

# use these values to setup Basemap instance.
width = 28000000
m = Basemap(width=width,height=width,\
            resolution='c',projection='aeqd',\
            lat_0=lat_0,lon_0=lon_0)
# draw coasts and fill continents.
m.drawcoastlines(linewidth=0.5)
m.fillcontinents()
# 20 degree graticule.
m.drawparallels(arange(-80,81,20))
m.drawmeridians(arange(-180,180,20))
# draw a red dot at the center.
xpt, ypt = m(lon_0, lat_0)
m.plot([xpt],[ypt],'ro') 
# draw the title.
title('The World According to Garp in '+location)
show()
Ejemplo n.º 45
0
def plot_map(data, rlon=None, rlat=None, use_pcolor=0, **keywords):
    """ display  the data in a map
    keywords: dict which can include the following keywords  minv=0.0, maxv=0.0, dv=0.0,
    show_map=0, map_proj='cyl', show_lat=0, show_lon=0, lat_0=0.0, lon_0=0.0,
    minlat=-90.0, maxlat=90.0, minlon=0.0, maxlon=360.0, use_log=0, level=level
    """

    minv = 0.0
    if ('minv' in keywords):
        minv = keywords['minv']

    maxv = 0.0

    if ('maxv' in keywords):
        maxv = keywords['maxv']

    dv = 0.0
    if ('dv' in keywords):
        dv = keywords['dv']

    if ('dv' in keywords):
        dv = keywords['dv']

    if (maxv > minv):
        rlvl = arange(minv, maxv + dv, dv)
        rlvl[0] = -999.0
        rlvl[size(rlvl) - 1] = 999.

    stitle = ""
    add_str = ""
    if ('title' in keywords):
        add_str = keywords['title']
        add_str = add_str.strip()
        stitle = stitle + ' ' + add_str

    if ('unit' in keywords):
        add_str = keywords['unit']
        add_str = add_str.strip()
        stitle = stitle + '(' + add_str + ')'

    cbar_vert = 1
    if ('cbar_vert' in keywords):
        cbar_vert = keywords['cbar_vert']

    if (cbar_vert == 1):
        orientation = 'vertical'
    else:
        orientation = 'horizontal'

    show_lat = 1
    if ('show_lat' in keywords):
        show_lat = keywords['show_lat']

    show_lon = 1
    if ('show_lon' in keywords):
        show_lon = keywords['show_lon']

    nlon, nlat = shape(data)

    vals = array(data)

    map_proj = 'cyl'
    if ('map_proj' in keywords):
        map_proj = keywords['map_proj']

    lat_0 = 0.0
    if ('lat_0' in keywords):
        lat_0 = keywords['lat_0']

    minlat = -90.0
    maxlat = 90.0

    if ('minlat' in keywords):
        minlat = keywords['minlat']

    if ('maxlat' in keywords):
        maxlat = keywords['maxlat']

    if (rlat == None):
        dlat = (maxlat - minlat) / nlat
        rlat = arange(minlat, maxlat, dlat)

    minlon = -180
    maxlon = 180.0

    if ('minlon' in keywords):
        minlon = keywords['minlon']

    if ('maxlon' in keywords):
        maxlon = keywords['maxlon']

    if (rlon == None):
        dlon = (maxlon - minlon) / nlon
        rlon = arange(minlon, maxlon, dlon)

    lon_0 = 0

    do_bdr = 0
    if ('do_bdr' in keywords):
        do_bdr = keywords['do_bdr']

    if ('lon_0' in keywords):
        lon_0 = keywords['lon_0']

        boundinglat = 45

    if ('boundinglat' in keywords):
        boundinglat = keywords['boundinglat']

    if (map_proj == 'npstere' or map_proj == 'spstere'):
        m = Basemap(projection=map_proj, lon_0=lon_0, boundinglat=boundinglat)
    elif (map_proj == 'ortho'):
        m = Basemap(projection=map_proj, lon_0=lon_0, lat_0=lat_0)
    else:
        if (maxlon - minlon > 180):
            m=Basemap(llcrnrlon=minlon, llcrnrlat=minlat, \
                  urcrnrlon=maxlon, urcrnrlat=maxlat,projection=map_proj, lon_0=lon_0, lat_0=lat_0, resolution='l')
        else:
            m=Basemap(llcrnrlon=minlon, llcrnrlat=minlat, \
                          urcrnrlon=maxlon, urcrnrlat=maxlat,projection=map_proj, lon_0=lon_0, lat_0=lat_0, resolution='i')

    if (rlon[-1] < rlon[0] + 360.0):
        rlon = resize(rlon, nlon + 1)
        rlon[-1] = rlon[0] + 360.0
        vals = squeeze(vals)
        vals = resize(vals, [nlon + 1, nlat])

    x, y = m(*meshgrid(rlon, rlat))

    cmap = cm.Paired

    if ('cmap' in keywords):
        print 'cmap included'

        cmap = keywords['cmap']
    m.drawcoastlines(color='k', linewidth=0.5)

    if (maxv > minv):
        if (use_pcolor == 1):
            cs0 = m.pcolormesh(x,
                               y,
                               transpose(vals),
                               shading='flat',
                               vmin=minv,
                               vmax=maxv,
                               cmap=cmap)
            # cs0=m.imshow(x, y, transpose(vals),  shading='flat', vmin=minv, vmax=maxv, cmap=cmap)

        else:
            cs0 = m.contourf(x, y, transpose(vals), rlvl, cmap=cmap)
    else:
        if (use_pcolor == 1):
            cs0 = m.pcolor(x, y, transpose(vals), shading='flat', cmap=cmap)
        else:
            cs0 = m.contourf(x, y, transpose(vals), cmap=cmap)

    # info(m.drawcoastlines)
    # m.drawcountries(color=white)
    m.drawmapboundary()
    if (show_lat == 1):
        if (maxlat - minlat >= 90):
            m.drawparallels(arange(minlat, maxlat + 30.0, 30.),
                            labels=[1, 0, 0, 0],
                            color='grey')
        else:
            m.drawparallels(arange(minlat, maxlat + 5.0, 5.),
                            labels=[1, 0, 0, 0],
                            color='grey')

    if (show_lon == 1):
        if (maxlon - minlon >= 180):
            m.drawmeridians(arange(minlon, maxlon + 60, 60.),
                            labels=[0, 0, 0, 1],
                            color='grey')
        else:
            m.drawmeridians(arange(minlon, maxlon + 10, 10.),
                            labels=[0, 0, 0, 1],
                            color='grey')
        title(stitle)
    show_colorbar = 1
    if ('cb' in keywords):
        show_colorbar = keywords['cb']
    if (show_colorbar == 1):
        colorbar(orientation=orientation, extend='both')
    if (do_bdr == 1):
        lvl = arange(max(vals.flat))
        print shape(x), shape(y), shape(vals)
        # cs2=m.contour(x[0:-1,:], y[0:-1,:], transpose(vals), lvl, colors='k', linewidth=0.5)

    return m
Ejemplo n.º 46
0
# country boundaries, and parallels/meridians.

from matplotlib.toolkits.basemap import Basemap, shiftgrid
from pylab import *
import cPickle

# read in topo data from pickle (on a regular lat/lon grid)
# longitudes go from 20 to 380.
topodict = cPickle.load(open('etopo20.pickle','rb'))
topoin = topodict['data']; lons = topodict['lons']; lats = topodict['lats']
# shift data so lons go from -180 to 180 instead of 20 to 380.
topoin,lons = shiftgrid(180.,topoin,lons,start=False)

# setup of basemap ('lcc' = lambert conformal conic).
m = Basemap(-145.5,1.,-2.566,46.352,\
            resolution='c',area_thresh=10000.,projection='lcc',\
            lat_1=50.,lon_0=-107.)
# transform to nx x ny regularly spaced native projection grid
nx = int((m.xmax-m.xmin)/40000.)+1; ny = int((m.ymax-m.ymin)/40000.)+1
topodat = m.transform_scalar(topoin,lons,lats,nx,ny)
xsize = rcParams['figure.figsize'][0]
fig=figure(figsize=(xsize,m.aspect*xsize))
ax = fig.add_axes([0.1,0.1,0.7,0.7])
im = m.imshow(topodat,cm.jet)
cax = axes([0.875, 0.1, 0.05, 0.7])
colorbar(tickfmt='%d', cax=cax) # draw colorbar
axes(ax)  # make the original axes current again
m.drawcoastlines()
m.drawcountries()
m.drawstates()
#m.fillcontinents()
Ejemplo n.º 47
0
def add_text(rlon, rlat, txt, m=None, **keywords):
    show_lat = 1
    if ('show_lat' in keywords):
        show_lat = keywords['show_lat']
    rlon = array(rlon)
    rlat = array(rlat)

    show_lon = 1
    if ('show_lon' in keywords):
        show_lon = keywords['show_lon']

    if (m == None):
        map_proj = 'cyl'
        if ('map_proj' in keywords):
            map_proj = keywords['map_proj']

        lat_0 = 0.0
        if ('lat_0' in keywords):
            lat_0 = keywords['lat_0']

        minlat = -90.0
        maxlat = 90.0

        if ('minlat' in keywords):
            minlat = keywords['minlat']

        if ('maxlat' in keywords):
            maxlat = keywords['maxlat']

        minlon = -180
        maxlon = 180.0

        if ('minlon' in keywords):
            minlon = keywords['minlon']

        if ('maxlon' in keywords):
            maxlon = keywords['maxlon']

        lon_0 = 0

        if ('lon_0' in keywords):
            lon_0 = keywords['lon_0']

        boundinglat = 45

        if ('boundinglat' in keywords):
            boundinglat = keywords['boundinglat']

        if (map_proj == 'npstere' or map_proj == 'spstere'):
            m = Basemap(projection=map_proj,
                        lon_0=lon_0,
                        boundinglat=boundinglat)
        elif (map_proj == 'ortho'):
            m = Basemap(projection=map_proj, lon_0=lon_0, lat_0=lat_0)
        else:
            m=Basemap(llcrnrlon=minlon, llcrnrlat=minlat, \
                      urcrnrlon=maxlon, urcrnrlat=maxlat,projection=map_proj, lon_0=lon_0, lat_0=lat_0)
        if (show_lat == 1):
            m.drawparallels(arange(minlat, maxlat + 30.0, 30.),
                            labels=[1, 0, 0, 0])
        if (show_lon == 1):
            m.drawmeridians(arange(minlon, maxlon + 60, 60.),
                            labels=[0, 0, 0, 1])
    x, y = m(rlon, rlat)
    for i in range(size(rlon)):
        text(x[i], y[i], txt[i], fontsize=10)

    if ('title' in keywords):
        stitle = keywords['title']
        title(stitle)

    return m
Ejemplo n.º 48
0
if __version__ <= '0.70':
    print 'warning - contour example will not work with this version of matplotlib if axes.patch is not applied'

# read in data on lat/lon grid.
datadict = cPickle.load(open('500hgt.pickle', 'rb'))
hgt = datadict['data']
lons = datadict['lons']
lats = datadict['lats']

# set up map projection (lambert azimuthal equal area).
m = Basemap(-150.,
            -20.,
            30.,
            -20.,
            resolution='c',
            area_thresh=10000.,
            projection='laea',
            lat_0=90.,
            lon_0=-105.)
# interpolate to map projection grid.
nx = 101
ny = 101
lonsout, latsout = m.makegrid(nx, ny)
hgt = interp(hgt, lons, lats, lonsout, latsout)
dx = (m.xmax - m.xmin) / (nx - 1)
dy = (m.ymax - m.ymin) / (ny - 1)
x = m.xmin + dx * indices((ny, nx))[1, :, :]
y = m.ymin + dy * indices((ny, nx))[0, :, :]

#m = Basemap(lons[0],lats[0],lons[-1],lats[-1],\
Ejemplo n.º 49
0
    x = property(get_xdata)
    def get_ydata(self): return self._line.get_ydata()
    y = property(get_ydata)
    


if __name__ == '__main__':
    from matplotlib.toolkits.basemap import Basemap
    from matplotlib.ticker import FuncFormatter
    from pyroms.focus import Focus
    
    m = Basemap(projection='lcc', 
                resolution='i',
                llcrnrlon=5.0,
                llcrnrlat= 52.,
                urcrnrlon=35.5,
                urcrnrlat=68.0,
                lat_0=15.00, 
                lon_0=0.0,
                suppress_ticks=False)
    
    fig=pl.figure()
    # background color will be used for 'wet' areas.
    fig.add_axes([0.1,0.1,0.8,0.8],axisbg='azure')
    m.drawcoastlines(linewidth=0.25)
    m.fillcontinents(color='beige')
    
    x, y, beta = zip(*[(241782.65384467551, 1019981.3539730886,   1.0),
                       (263546.12512432877,  686274.79435173667,  0),
                       (452162.87621465814,  207478.42619936226,  1.0),
                       (1431519.0837990609,  432367.62942244718,  1.0),
Ejemplo n.º 50
0
from gdalconst import *
import pylab as p

# download from
# http://edcftp.cr.usgs.gov/pub/data/DEM/250/D/denver-w.gz
gd = gdal.Open("denver-w")
# get data from DEM file
array = gd.ReadAsArray()
# get lat/lon coordinates from DEM file.
coords = gd.GetGeoTransform()
llcrnrlon = coords[0]
urcrnrlon = llcrnrlon + (array.shape[1] - 1) * coords[1]
urcrnrlat = coords[3]
llcrnrlat = urcrnrlat + (array.shape[0] - 1) * coords[5]
# create Basemap instance.
m = Basemap(llcrnrlon=llcrnrlon, llcrnrlat=llcrnrlat, urcrnrlon=urcrnrlon, urcrnrlat=urcrnrlat, projection="cyl")
# create a figure with the right aspect ratio, add an axes
# (leaving room for a colorbar).
fig = p.figure(figsize=(8, m.aspect * 8))
ax = fig.add_axes([0.1, 0.1, 0.75, 0.75])
# plot image from DEM over map.
im = m.imshow(array, origin="upper")
# make a colorbar.
cax = p.axes([0.875, 0.1, 0.05, 0.75])  # setup colorbar axes.
p.colorbar(tickfmt="%d", cax=cax)  # draw colorbar
p.axes(ax)  # make the original axes current again
# draw meridians and parallels.
m.drawmeridians(p.linspace(llcrnrlon + 0.1, urcrnrlon - 0.1, 5), labels=[0, 0, 0, 1], fmt="%4.2f")
m.drawparallels(p.linspace(llcrnrlat + 0.1, urcrnrlat - 0.1, 5), labels=[1, 0, 0, 0], fmt="%4.2f")
# plot county boundaries from
# http://edcftp.cr.usgs.gov/pub/data/nationalatlas/countyp020.tar.gz
Ejemplo n.º 51
0
# read in jpeg image to rgba array of normalized floats.
pilImage = Image.open('land_shallow_topo_2048.jpg')
rgba = pil_to_array(pilImage)
rgba = rgba.astype(P.Float32)/255. # convert to normalized floats.

# define lat/lon grid that image spans (projection='cyl').
nlons = rgba.shape[1]; nlats = rgba.shape[0]
delta = 360./float(nlons)
lons = P.arange(-180.+0.5*delta,180.,delta)
lats = P.arange(-90.+0.5*delta,90.,delta)

# create new figure
fig=P.figure()
# define cylindrical equidistant projection.
m = Basemap(projection='cyl',llcrnrlon=-180,llcrnrlat=-90,urcrnrlon=180,urcrnrlat=90,resolution='l')
# plot (unwarped) rgba image.
im = m.imshow(rgba)
# draw coastlines.
m.drawcoastlines(linewidth=0.5,color='0.5')
# draw lat/lon grid lines.
m.drawmeridians(P.arange(-180,180,60),labels=[0,0,0,1],color='0.5')
m.drawparallels(P.arange(-90,90,30),labels=[1,0,0,0],color='0.5')
P.title("Blue Marble image - native 'cyl' projection",fontsize=12)
print 'plot cylindrical map (no warping needed) ...'

# create new figure
fig=P.figure()
# define orthographic projection centered on North America.
m = Basemap(projection='ortho',lat_0=40,lon_0=40,resolution='l')
# transform to nx x ny regularly spaced native projection grid
Ejemplo n.º 52
0
# in which direction to depart for other points on earth and how far
# it will be to reach that destination.
# The specified point shows up as a red dot in the center of the map.

# This example shows how to use the width and height keywords
# to specify the map projection region (instead of specifying
# the lat/lon of the upper right and lower left corners).

# user enters the lon/lat of the point, and it's name
lon_0 = float(raw_input('input reference lon (degrees):'))
lat_0 = float(raw_input('input reference lat (degrees):'))
location = raw_input('name of location:')

# use these values to setup Basemap instance.
width = 28000000
m = Basemap(width=width,height=width,\
            resolution='c',projection='aeqd',\
            lat_0=lat_0,lon_0=lon_0)
# draw coasts and fill continents.
m.drawcoastlines(linewidth=0.5)
m.fillcontinents()
# 20 degree graticule.
m.drawparallels(arange(-80, 81, 20))
m.drawmeridians(arange(-180, 180, 20))
# draw a red dot at the center.
xpt, ypt = m(lon_0, lat_0)
m.plot([xpt], [ypt], 'ro')
# draw the title.
title('The World According to Garp in ' + location)
show()
Ejemplo n.º 53
0
# example demonstrating how to draw a great circle on a map.
from matplotlib.toolkits.basemap import Basemap
from pylab import *

# setup lambert azimuthal map projection.
m = Basemap(llcrnrlon=-100.,llcrnrlat=20.,urcrnrlon=20.,urcrnrlat=60.,\
            rsphere=(6378137.00,6356752.3142),\
            resolution='c',area_thresh=10000.,projection='merc',\
            lat_0=40.,lon_0=-20.,lat_ts=20.)
# make figure with aspect ratio that matches map region.
xsize = rcParams['figure.figsize'][0]
fig = figure(figsize=(xsize, m.aspect * xsize))
fig.add_axes([0.1, 0.1, 0.8, 0.8])
# nylat, nylon are lat/lon of New York
nylat = 40.78
nylon = -73.98
# lonlat, lonlon are lat/lon of London.
lonlat = 51.53
lonlon = 0.08
# find 1000 points along the great circle.
#x,y = m.gcpoints(nylon,nylat,lonlon,lonlat,1000)
# draw the great circle.
#m.plot(x,y,linewidth=2)
# drawgreatcircle performs the previous 2 steps in one call.
m.drawgreatcircle(nylon, nylat, lonlon, lonlat, linewidth=2, color='b')
m.drawcoastlines()
m.fillcontinents()
# draw parallels
circles = arange(10, 90, 20)
m.drawparallels(circles, labels=[1, 1, 0, 1])
# draw meridians
Ejemplo n.º 54
0
import pylab as p
import matplotlib.numerix as nx
from matplotlib.toolkits.basemap import Basemap as Basemap
from matplotlib.collections import LineCollection
from matplotlib.colors import rgb2hex
import random

# requires pyshapelib from Thuban (http://thuban.intevation.org/).
# cd to libraries/pyshapelib in Thuban source distribution, run
# 'python setup.py install'.

# Lambert Conformal map of lower 48 states.
m = Basemap(llcrnrlon=-119,llcrnrlat=22,urcrnrlon=-64,urcrnrlat=49,
            projection='lcc',lat_1=33,lat_2=45,lon_0=-95)
fig=p.figure(figsize=(8,m.aspect*8))
fig.add_axes([0.1,0.1,0.8,0.8])
# draw climate division boundaries.
shp_info = m.readshapefile('divisions','climdivs',drawbounds=True)
print shp_info
# make sure the shapefile has polygons (and not just lines).
if shp_info[1] != 5:
    print 'warning: shapefile does not contain polygons'
# choose a color for each climate division (randomly).
colors={}
divnames=[]
print m.climdivs_info[0].keys()
for shapedict in m.climdivs_info:
    divname = shapedict['ST']+repr(shapedict['DIV'])
    colors[divname] = (random.uniform(0,1),random.uniform(0,1),random.uniform(0,1))
    divnames.append(divname)
# cycle through climate divnames, color each one.
Ejemplo n.º 55
0
import matplotlib.cm as cm
from matplotlib.mlab import load

# read in topo data (on a regular lat/lon grid)
# longitudes go from 20 to 380.
etopo = load('etopo20data.gz')
lons = load('etopo20lons.gz')
lats = load('etopo20lats.gz')
# create figure.
fig = Figure()
canvas = FigureCanvas(fig)
# create axes instance, leaving room for colorbar at bottom.
ax = fig.add_axes([0.125,0.175,0.75,0.75])
# create Basemap instance for Robinson projection.
# set 'ax' keyword so pylab won't be imported.
m = Basemap(projection='robin',lon_0=0.5*(lons[0]+lons[-1]),ax=ax)
# make filled contour plot.
x, y = m(*meshgrid(lons, lats))
cs = m.contourf(x,y,etopo,30,cmap=cm.jet)
# draw coastlines.
m.drawcoastlines()
# draw a line around the map region.
m.drawmapboundary()
# draw parallels and meridians.
m.drawparallels(nx.arange(-60.,90.,30.),labels=[1,0,0,0],fontsize=10)
m.drawmeridians(nx.arange(0.,420.,60.),labels=[0,0,0,1],fontsize=10)
# add a title.
ax.set_title('Robinson Projection')
# add a colorbar.
l,b,w,h = ax.get_position()
cax = fig.add_axes([l, b-0.1, w, 0.03],frameon=False) # setup colorbar axes
Ejemplo n.º 56
0
for line in file.readlines():
   l = line.replace('\n','').split()
   ul.append(float(l[0]))
   vl.append(float(l[1]))
   pl.append(float(l[2]))
u = reshape(array(ul,Float32),(nlats,nlons))
v = reshape(array(vl,Float32),(nlats,nlons))
p = reshape(array(pl,Float32),(nlats,nlons))
lats1 = -90.+dellat*arange(nlats)
lons1 = -180.+dellon*arange(nlons)
lons, lats = meshgrid(lons1, lats1)

# plot vectors in geographical (lat/lon) coordinates.

# north polar projection.
m = Basemap(lon_0=-135,boundinglat=25,
            resolution='c',area_thresh=10000.,projection='npstere')
# create a figure, add an axes.
fig=figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.7,0.7])
# rotate wind vectors to map projection coordinates.
# (also compute native map projections coordinates of lat/lon grid)
# only do Northern Hemisphere.
urot,vrot,x,y = m.rotate_vector(u[36:,:],v[36:,:],lons[36:,:],lats[36:,:],returnxy=True)
# plot filled contours over map.
cs = m.contourf(x,y,p[36:,:],15,cmap=cm.jet)
# plot wind vectors over map.
Q = m.quiver(x,y,urot,vrot) #or specify, e.g., width=0.003, scale=400)
qk = quiverkey(Q, 0.95, 1.05, 25, '25 m/s', labelpos='W')
cax = axes([0.875, 0.1, 0.05, 0.7]) # setup colorbar axes.
colorbar(cax=cax) # draw colorbar
axes(ax)  # make the original axes current again