>________________________________
> From: Benjamin Root <ben.r...@ou.edu>
>To: Michael Rawlins <rawlin...@yahoo.com> 
>Cc: "matplotlib-users@lists.sourceforge.net" 
><matplotlib-users@lists.sourceforge.net> 
>Sent: Wednesday, September 26, 2012 10:33 AM
>Subject: Re: [Matplotlib-users] error reading netcdf file
> 
>
>
>
>
>On Wed, Sep 26, 2012 at 10:27 AM, Michael Rawlins <rawlin...@yahoo.com> wrote:
>
>Recently built and installed netCDF4-1.0.  I'm running a script that has 
>worked on two other linux OS systems. Error:
>>
>>File "test.py", line 96, in <module>
>>    data.missing_value=-9.99
>>  File "netCDF4.pyx", line 2570, in netCDF4.Variable.__setattr__ 
>>(netCDF4.c:28242)
>>  File "netCDF4.pyx", line 2392, in netCDF4.Variable.setncattr 
>>(netCDF4.c:26309)
>>  File "netCDF4.pyx", line 1013, in netCDF4._set_att (netCDF4.c:12699)
>>AttributeError: NetCDF: Write to read only
>>
>>
>>The statement in the code triggers the error is:
>>
>>data.missing_value=-9.99 .
>>
>>MR
>>
>>
>
>
>This typically happens when one opens a netCDF4 Dataset object in 'r' mode, 
>and/or if the file permissions for the file was set to read-only.  When 
>modifying an attribute, it is technically trying to write to the file.
>
>Ben Root
>
>
>
>Here is the file open statement:
>
>ncfile = NetCDFFile('statsPrcp_Uncertainty2_winter.nc', 'r')
>
>This worked fine in earlier versions.  No where in the code do I try to write 
>to a netCDF file. So I'm confused as to why specifying the read of the netCDF 
>file would result in an error when designating the missing data value.
>
>Here's the code:
>
># Works with the netCDF files in the tutorial, and also the
># files available for download at:
># http://www.cdc.noaa.gov/cdc/data.ncep.reanalysis.html 
># Adapted from the basemap example plotmap_pcolor.py,
># Some of the variable names from that example are retained.
>#
># Uses basemap's pcolor function.  Pcolor accepts arrays
># of the longitude and latitude  points of the vertices on the pixels,
># as well as an array with the numerical value in the pixel. 
>
>verbose=0 #verbose=2 says a bit more
>
>import sys,getopt
>from mpl_toolkits.basemap import Basemap, shiftgrid, cm 
>from netCDF4 import Dataset as NetCDFFile 
>#from mpl_toolkits.basemap import  NetCDFFile
>from pylab import *
>import  matplotlib.pyplot as plt
>
>alloptions, otherargs= getopt.getopt(sys.argv[1:],'ro:p:X:Y:v:t:l:u:n:') # 
>note the : after o and p
>proj='lam'
>
>cmap = cm.get_cmap('jet_r', 10)    # 10 discrete colors
>
>print "\nPlotting, please wait...maybe more than 10 seconds"
>if proj=='lam': #Lambert Conformal
>    m = Basemap(llcrnrlon=-80.6,llcrnrlat=38.4,urcrnrlon=-66.0,urcrnrlat=47.7,\
>            resolution='l',area_thresh=1000.,projection='lcc',\
>            lat_1=65.,lon_0=-73.3)
>xtxt=200000. #offset for text
>ytxt=200000.
>parallels = arange(38.,48.,2.)
>meridians = arange(-80.,-64.,2.)
>
>xsize = rcParams['figure.figsize'][0]
>fig=figure(figsize=(xsize,m.aspect*xsize))
>#cax = axes([0.88, 0.1, 0.06, 0.81])  #  colorbar axes for map w/ graticule
>
>############################################################################################
>subplots_adjust(left=None, bottom=None, right=0.9, top=None, wspace=0.05, 
>hspace=0.03)
># Make the first map at upper left
>plt.subplot(2,2,1)
>
>ncfile = NetCDFFile('statsPrcp_Uncertainty2_winter.nc', 'r')
>
>xvar='rlon'
>print "shape of "+xvar+': ',ncfile.variables[xvar].shape
>if ncfile.variables[xvar][:].ndim ==1:
>    print "X is independent of Y"
>    lon1d=ncfile.variables[xvar][:]
>else:
>    lon1d=False
>    if  ncfile.variables[xvar][:].ndim ==2: lon2d=ncfile.variables[xvar][:]
>    if  ncfile.variables[xvar][:].ndim ==3: lon2d=ncfile.variables[xvar][0,:,:]
>    print "shape of lond2d:", lon2d.shape
>
>yvar='rlat'
>print "shape of "+yvar+': ',ncfile.variables[yvar].shape
>if ncfile.variables[yvar][:].ndim ==1:
>    print "Y is independent of X"
>    lat1d=ncfile.variables[yvar][:]
>else:
>    lat1d=False
>    if  ncfile.variables[yvar][:].ndim ==2: lat2d=ncfile.variables[yvar][:]
>    if  ncfile.variables[yvar][:].ndim ==3: 
>lat2d=ncfile.variables[yvar][0,:,:] 
>    print "shape of lat2d:", lat2d.shape
>
>thevar='diff'
>data=ncfile.variables[thevar]
>dataa=data[:]
>theshape=dataa.shape
>try:
>    add_offset=ncfile.variables[thevar].add_offset
>    print "will use add_offset=",add_offset
>except:
>    add_offset=0.    
>print "shape of "+thevar+': ',theshape
>if len(theshape)>2:
>    print "there are apparently",theshape[0],"records"
>    if not therec: therec=raw_input("enter record number to plot=>")
>    therec=int(therec)
>    extratext=" rec=%d" %therec
>if len(theshape)>3:
>    print "there are apparently",theshape[1],"levels"
>    if not thelev: thelev=raw_input("enter level number to plot=>")
>    thelev=int(thelev)
>    extratext=extratext+" lev=%d" %thelev
>if len(theshape)>3: 
>    slice=dataa[therec,thelev,:,:]+add_offset
>elif len(theshape)>2: 
>    slice=dataa[therec,:,:]+add_offset
>else:
>    slice=dataa+add_offset
>
>data.missing_value=-9.99
>
>
>
>
>
>
------------------------------------------------------------------------------
How fast is your code?
3 out of 4 devs don\\\'t know how their code performs in production.
Find out how slow your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219672;13503038;z?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to