Dear Dr. Christopher,<div><br></div><div>It is great command-line utility for packing .nc file. It was of great help for me...</div><div><br></div><div>Thank you sir,</div><div><br></div><div>Sincerely,</div><div>Kishore<br>
<br><div class="gmail_quote">On Sat, Jul 14, 2012 at 11:43 PM, Lynnes, Christopher S. (GSFC-6102) <span dir="ltr">&lt;<a href="mailto:christopher.s.lynnes@nasa.gov" target="_blank">christopher.s.lynnes@nasa.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The nco package (<a href="http://nco.sourceforge.net/" target="_blank">http://nco.sourceforge.net/</a>) has a command-line utility called ncpdq that can pack netcdf data.<br>

<div><div class="h5"><br>
On Jul 14, 2012, at 11:17 AM, Reto Stauffer wrote:<br>
<br>
&gt;<br>
&gt; Hy Kishore<br>
&gt;<br>
&gt; I was working on that today for about 5 hours using Python.<br>
&gt; I can say some words to the python procedure but it is nearly the same<br>
&gt; in all other packages i guess.<br>
&gt;<br>
&gt; # - Open new netCdf file<br>
&gt; ncf = pupynere.NetCDFFile(outfile+&quot;.nc&quot;,&#39;w&#39;)<br>
&gt;<br>
&gt; # - Then you have to define the dimensions.<br>
&gt; #   If you have e.g. some surface data and only<br>
&gt; #   one timestep you need just &quot;longitude&quot; and &quot;latitude&quot;<br>
&gt; #   but there is the option to store 3-D or 4-D fields<br>
&gt; #   with additional time and vertical coordinate.<br>
&gt; #   I am creating all 4 dimensions.<br>
&gt; londim  = ncf.createDimension(&#39;longitude&#39;,longitude.shape[0]);<br>
&gt; latdim  = ncf.createDimension(&#39;latitude&#39;,latitude.shape[0]);<br>
&gt; levdim  = ncf.createDimension(&#39;levelist&#39;,len(unique_levels));<br>
&gt; timedim = ncf.createDimension(&#39;time&#39;,len(unique_times));<br>
&gt;<br>
&gt; # - Then store the dimension variables into the created<br>
&gt; #   Dimensions (e.g. level vector or longitude vector)<br>
&gt; #   and setting some additional attributes.<br>
&gt; # - IMPORTANT there is no default unit for time and<br>
&gt; #   for model level. You have to define it (hPa in my case)<br>
&gt; # - Longitude vector<br>
&gt; nclon  = ncf.createVariable(&#39;longitude&#39;,&#39;f&#39;,(&#39;longitude&#39;,))<br>
&gt; setattr(nclon,&#39;long_name&#39;,&#39;longitude&#39;)<br>
&gt; setattr(nclon,&#39;units&#39;,&#39;degrees_east&#39;)<br>
&gt; # - Latitude vector<br>
&gt; nclat  = ncf.createVariable(&#39;latitude&#39;,&#39;f&#39;,(&#39;latitude&#39;,))<br>
&gt; setattr(nclat,&#39;long_name&#39;,&#39;latitude&#39;)<br>
&gt; setattr(nclat,&#39;units&#39;,&#39;degrees_north&#39;)<br>
&gt; # - Level vector<br>
&gt; nclev  = ncf.createVariable(&#39;levelist&#39;,&#39;f&#39;,(&#39;levelist&#39;,))<br>
&gt; setattr(nclev,&#39;long_name&#39;,&#39;model_level_number&#39;)<br>
&gt; setattr(nclev,&#39;units&#39;,&#39;hPa&#39;)<br>
&gt; # - Time.<br>
&gt; nctime = ncf.createVariable(&#39;time&#39;,&#39;f&#39;,(&#39;time&#39;,))<br>
&gt; setattr(nctime,&#39;long_name&#39;,&#39;time&#39;)<br>
&gt; # - Setting those variables<br>
&gt; print &quot;* Write long, lat, levelist and time to nc file&quot;<br>
&gt; nclon[:]  = longitude;<br>
&gt; nclat[:]  = latitude;<br>
&gt; nclev[:]  = np.array( unique_levels );<br>
&gt; nctime[:] = np.array( unique_times );<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; # - Now all the dimensions are defined and you can<br>
&gt; #   create your data variables now. First: define<br>
&gt; #   variable with sutable dimension.<br>
&gt; #   It is possible to mix fields (i am using a few<br>
&gt; #   with long/lat/time only and others with<br>
&gt; #   long/lat/level/time. But either all levels are<br>
&gt; #   in there or just one. I guess it is not possible<br>
&gt; #   to define different numbers of vertical levels<br>
&gt; #   for every single variable.<br>
&gt;<br>
&gt; # - As an example: create one variable and<br>
&gt; #   store data into it. In this case i am creating<br>
&gt; #   a variable with all 4 dimensions. So the &quot;data&quot;<br>
&gt; #   variable i store at the end has to have the<br>
&gt; #   same dimension<br>
&gt; ncvar   =<br>
&gt; ncf.createVariable(str(var),&#39;f&#39;,(&#39;latitude&#39;,&#39;longitude&#39;,&#39;levelist&#39;,&#39;time&#39;))<br>
&gt; setattr(ncvar,&#39;_FillValue&#39;,0.)<br>
&gt; setattr(ncvar,&#39;missing_value&#39;,-999.)<br>
&gt; setattr(ncvar,&#39;add_offset&#39;,&#39;0&#39;)<br>
&gt; setattr(ncvar,&#39;long_name&#39;,str(nc_desc[var]))<br>
&gt; setattr(ncvar,&#39;scale_factor&#39;,1.)<br>
&gt; setattr(ncvar,&#39;units&#39;,&#39;scaled radiance&#39;)<br>
&gt; ncvar[:] = np.int32(data)<br>
&gt;<br>
&gt; # - Syncing netcdf file (write)&quot;<br>
&gt; ncf.sync();<br>
&gt;<br>
&gt; # - Close netcdf file&quot;<br>
&gt; ncf.close();<br>
&gt;<br>
&gt;<br>
&gt; Probably it is getting a little bit more transparent for you. I am<br>
&gt; using the pupynere package (pure python netcdf reader) but in newer<br>
&gt; scipy versions it is allready included (scipy.netcdf i guess).<br>
&gt;<br>
&gt; As checklist<br>
&gt; - define variables (with attributes for time or levels!)<br>
&gt; - u dont need a vertical dimension when you only have &quot;surface&quot; fields<br>
&gt; (2-d-fields)<br>
&gt; - store dimension values into created dimensions<br>
&gt; - create variable (2,3,4-dimensional?<br>
&gt; - store data with same size into that<br>
&gt; - write all the stuff into the netcdf file<br>
&gt;<br>
&gt; Greets from Austria<br>
&gt; Reto<br>
&gt;<br>
&gt;<br>
&gt; Zitat von Kishore Babu &lt;<a href="mailto:kishoreragi@gmail.com">kishoreragi@gmail.com</a>&gt;:<br>
&gt;<br>
&gt;&gt; Dear GrADS users,<br>
&gt;&gt;<br>
&gt;&gt; Could anyone tell me how to pack the netcdf data? I do understand<br>
&gt;&gt; scale_factor and add_offset , but I don&#39;t know how to do with them.<br>
&gt;&gt;<br>
&gt;&gt; help will greatly save my time to do that. I have already spent a lot of<br>
&gt;&gt; time to do that...<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thank you in advance,<br>
&gt;&gt;<br>
&gt;&gt; Kishore<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; gradsusr mailing list<br>
&gt; <a href="mailto:gradsusr@gradsusr.org">gradsusr@gradsusr.org</a><br>
&gt; <a href="http://gradsusr.org/mailman/listinfo/gradsusr" target="_blank">http://gradsusr.org/mailman/listinfo/gradsusr</a><br>
<br>
</div></div>--<br>
Dr. Christopher Lynnes     NASA/GSFC, Code 610.2    phone: <a href="tel:301-614-5185" value="+13016145185">301-614-5185</a><br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
_______________________________________________<br>
gradsusr mailing list<br>
<a href="mailto:gradsusr@gradsusr.org">gradsusr@gradsusr.org</a><br>
<a href="http://gradsusr.org/mailman/listinfo/gradsusr" target="_blank">http://gradsusr.org/mailman/listinfo/gradsusr</a><br>
</div></div></blockquote></div><br></div>