Jeff, thanks for the comment on rebuilding the lons and lats!

I have attached 2 images, one that is from the whole data in the file and
the other the zoomed version. 
http://www.nabble.com/file/p23031035/basemap_all.png basemap_all.png 
http://www.nabble.com/file/p23031035/basemap_zoom.png basemap_zoom.png 

What seems to be happening is that the coordinates seem to be in different
projections as the values of lats.min(),lons.min(),lats.max(),lons.max() are 
25.0,210.0,50.0,250.0 while the list I'm providing is
32.35,-121.0,34.75,-116.75. Any ideas on why basemap seems to be reading
both coordinate lists and provides the proper land contours while contourf
seems to be off?

Thanks,
Anton






Jeff Whitaker wrote:
> 
> antonv wrote:
>> Hi all,
>>
>> I have a weird thing happening with basemap and I am not sure if it's
>> basemap or me, but more than likely it's me :(
>>
>> Here is the grib file that I am using:
>> http://downloads.75ive.com/multi_1.20090321.t18z_multi_1.wc_10m.all.grb2
>> http://downloads.75ive.com/multi_1.20090321.t18z_multi_1.wc_10m.all.grb2 
>>
>> And here is my code:
>> #############################################
>> import matplotlib
>> import matplotlib.mpl as mpl
>> import matplotlib.pyplot as plt
>> import matplotlib.mlab as mlab
>> import numpy as np
>> import matplotlib.pylab as pylab
>> from mpl_toolkits.basemap import Basemap
>> from grib2 import Grib2Decode
>>
>> grbs = Grib2Decode('multi_1.20090321.t18z_multi_1.wc_10m.all.grb2')
>>
>> lats, lons = grbs[0].grid()
>> mapCoords = [32.35,-121.0,34.75,-116.75]
>> #mapCoords = [lats.min(),lons.min(),lats.max(),lons.max()]
>>
>> colorList =
>> [[0.,0.,205./255.],[0,102./255.,255./255.],[0,183./255.,255./255.],[0,224./255.,255./255.],
>>            
>> [0,255./255.,255./255.],[0,255./255.,204./255.],[0,255./255.,153./255.],[0,255./255.,0],
>>            
>> [153./255.,255./255.,0],[204./255.,255./255.,0],[255./255.,255./255.,0],[255./255.,204./255.,0],
>>            
>> [255./255.,153./255.,0],[255./255.,102./255.,0],[255./255.,0,0],[176./255.,48./255.,96./255.],
>>             [208./255.,32./255.,144./255.],[255./255.,0,255./255.]]
>> cmap = matplotlib.colors.ListedColormap(colorList, name = 'theColorMap',
>> N =
>> len(colorList))
>>
>> m = Basemap(projection='merc',lat_ts = 30,\
>>            
>> llcrnrlat=mapCoords[0],llcrnrlon=mapCoords[1],urcrnrlat=mapCoords[2],urcrnrlon=mapCoords[3],\
>>             resolution='h',area_thresh=0.5, suppress_ticks = True)
>>
>> fig = plt.figure(figsize=(14.58,10.58))
>> fig.set_dpi(100)
>>
>> nlats, nlons = grbs[0].data().shape
>>
>> x = np.linspace(lons.min(),lons.max(),nlons)
>> y = np.linspace(lats.min(),lats.max(),nlats)
>>
>> X, Y = m(*np.meshgrid(x, y))
>>
>> z = grbs[0].data().filled(1)
>>
>> m.contourf(X,Y,z,cmap=cmap,levels=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],extend='both')
>>
>> m.fillcontinents(color='green',lake_color='b')
>> m.drawcoastlines(color='k', linewidth=0.75)
>> m.drawcountries(color='k', linewidth=0.25)
>> m.drawstates(color='k', linewidth=0.25)
>> m.drawmapboundary(linewidth=1.0, color='k')
>>
>> plt.show()
>> #############################################
>>
>> If you look at lines 14 and 15 you can see that i have a variable called
>> mapCoords that feeds the lat/lon coordinates to the basemap object. If i
>> set
>> them up using the commented line (line 15) it will plot the map for all
>> the
>> data in the file and it will display it correctly. If i use line 14 which
>> is
>> the zoomed area that i am interested in it will display the basemap map
>> correctly zoomed in but it will not show the plotted data. Any ideas on
>> what
>> is happening here?
>>
>> Also, if you have any comments on optimizing the code I would really
>> appreciate it!
>>
>> Thanks,
>> Anton
>>
>>   
> Anton:  Probably your data doesn't cover the zoomed region, but without 
> actually having your data  I can't be sure. 
> 
> One question:  why are you rebuilding the lons and lats from scratch 
> when you already have them?  It seems like you can get rid of
> 
> nlats, nlons = grbs[0].data().shape
> x = np.linspace(lons.min(),lons.max(),nlons)
> y = np.linspace(lats.min(),lats.max(),nlats)
> X, Y = m(*np.meshgrid(x, y))
> 
> and replace it with
> 
> X,Y = m(lons, lats)
> 
> 
> -Jeff
> 
> -- 
> Jeffrey S. Whitaker         Phone  : (303)497-6313
> Meteorologist               FAX    : (303)497-6449
> NOAA/OAR/PSD  R/PSD1        Email  : jeffrey.s.whita...@noaa.gov
> 325 Broadway                Office : Skaggs Research Cntr 1D-113
> Boulder, CO, USA 80303-3328 Web    : http://tinyurl.com/5telg
> 
> 
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by:
> High Quality Requirements in a Collaborative Environment.
> Download a free trial of Rational Requirements Composer Now!
> http://p.sf.net/sfu/www-ibm-com
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
> 
> 

-- 
View this message in context: 
http://www.nabble.com/basemap-error-or-user-error--tp23017806p23031035.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to