Ncview: a netCDF visual browser

David W. Pierce
Scripps Institution of Oceanography


New version (2.1.1) Released 1 August, 2011

Special thanks to Alexander Shchepetkin of UCLA for donating some very nice new colormaps!


Screen capture of ncview in action


What is it?

Ncview is a visual browser for netCDF format files. Typically you would use ncview to get a quick and easy, push-button look at your netCDF files. You can view simple movies of the data, view along various dimensions, take a look at the actual data values, change color maps, invert the data, etc. It runs on UNIX platforms under X11, R4 or higher. For more information, check out the README file; you can also see a representative screen image (GIF, 66K) of ncview in action.
  • Here are some old versions in case you need them.
  • Trying to get ncview to run on windows under cygwin? I build and use ncview under cygwin all the time with no problems, so it's definiately possible. If you are having troubles with cygwin, this information might be of use.
  • Trying to get ncview to run on a 64-bit Linux machine, and getting link errors about "incompatible libraries skipped"? Try:
    ./configure --x-libraries=/usr/X11R6/lib64
    (or otherwise specifying the location of the 64-bit X libraries on your machine).
  • Note: are you a Ubuntu user, and get configuration errors complaining about the lack of X development libraries and headers? Read some comments from ncview users on how to get ncview working on Ubuntu.

    This version adds support for automatically displaying the last timestep in a growing netcdf file -- just go to the last frame in the file and hit pause, and ncview will periodically check if the file has grown. Also, there is a new '-autoscale' flag that will scale the colormap to each frame automatically.

    Download the source for version 2.1.1 (updated August 1, 2011).

    To install version 2.0, you must:
  • Install HDF-5 version 1.8.4.
  • Install netcdf version 4.1-beta2, and you must compile it with the --enable-netcdf-4 flag set.
  • If you want to use udunits, you must install udunits version 2. The udunits library version 1 (which is deprecated) is not supported any more.
  • Please notify me of all bugs you find.

    Alternatively, you can download the source for old, deprecated, but stable version 1.93g, which does not require the HDF library (but cannot read netcdf files created in the new, version 4 format as a consequence).


    Missing Values, Attributes, and NetCDF Conventions

    Ncview follows some of the suggested standards as described in the NetCDF User's Guide, especially the Attributes Conventions section. In particular, the following attributes are taken into account:

    Dimensional variables

    A convention that ncview follows is that the values along a dimension are stored in variables of the exact same name as the dimension itself. I call these "dimensional variables", or "dimvars" for short. So, for example, imagine you have a dimension named "Time" that has a size of 3. If you want ncview to understand that the first time is 1995.0, the second is 1996.0, and the third is 1997.0, then you need to make a variable named "Time" that has exactly one dimension, the "Time" dimension, and has values (1995.0, 1996.0, 1997.0).

    UDUNITS support

    If you format the time axis using the udunits package (as I do), then ncview will properly format the date into something meaningful. For example, a common units string when using the udunits package is something like "days since 1900-01-01". Then when you get a time axis value like "360.0", ncview will not just show the (uninformative) value "360.0" but will display it as "25-Dec-1900". To enable this support you must install the udunits package BEFORE configuring ncview in the installation process.


    Known Bugs

    Updated April 6, 2001


    Revision History

    24 February, 2009: 1.93g: Added some primitive support for mapped dimensions (i.e., based on the "coordinates" attribute); now you can put on an overlay correctly with mapped dimensions, and if you hover the cursor you will get the correct (mapped) location.

    Put in a new feature where if you go to the last frame and sit on it, ncview will periodically check to see if the file has grown since it was last scanned. If it has grown, then the new last frame is automatically displayed. There is a new flag, "-autoscale", that automatically scales the color range to EACH FRAME, which can be useful in this mode.

    Several security suggestions from Mike Duncan have been incorporated into the code.

    8 August, 2008: 1.93d: Changed license from Gnu GPL v1 to Gnu GPL v3. Also added better support for cases where multiple input files are processed, and each has a different time units, AND each has a different calender (whew!). As part of this, added new routine "utInvCalendar_cal", which is an extension to utInvCalendar that accounts for different calendars. Finally, variable names are now sorted alphabetically.

    7 May, 2007: 1.93c: Mostly bugfix release, but added new command line option "-cal" to specify which calendar to use, overriding any calendar found in the file. The known calendars are "noleap", "standard", "365_day" (an alias for noleap), and "360_day".

    30 January, 2006: 1.93: Easier installation. Shrink images in addition to expanding them. Support for noleap and 360 day calendars. Support for 'bounds' information. New colormaps, a finer resolution coastline overlay, and USA states overlays added. Menu selection instead of list when there are a large number of variables.

    13 August, 2003: 1.92e: Better installation instructions. Hopefully fixed the problem with working under Mac OS X. Fix of core dump under certain circumstances due to Matthew Bettencourt.

    21 August, 2002: 1.92d: Fixed pad_offset for the 16 bits per pixel case. This means that you will no longer get warped images that appear to be tilting over sideways on platforms with this pixel depth, when viewing a file with an odd number of X entries. Also added the "-frames" option, but it is not enabled by default in the configure file.

    6 April, 2001: 1.92c: Minor bug fix that would cause crashes in some circumstances when repeatedly popping up XY plot windows.

    7 November, 2000: 1.92: A big change in that I've moved to the 'autoconf' system of configuring the software, instead of the old method (which used 'xmkmf'). There were just too many instances of xmkmf not being installed, or installed but actually having the wrong paths! Also, a couple of very nice and helpful new features: 1) You can now move the mouse over the popup XY graph and get a report of the cursor's position. 2) I have finally put in the fixes for getting values along a time dimension when you have multiple input files. This means that you can click on a color contour field when using multiple input files, and the correct XY popup will come up, instead of a core dump or error. 3) Various fixes to handle printing of formatted time values, if you use those.

    18 September, 2000: 1.91: More various bug fixes, including fixing a crash when overlays are enabled and a new variable of a different size is selected, and having a new blowup (magnification) factor correctly selected when a new variable of a different size is selected.

    10 December, 1999: 1.90: Various bug fixes, including correct scaling of multiple line plots on the same display when the exponential notation is triggered, and more correct recognition of non-float missing values.

    20 March, 1999: 1.75: This changes the internals of how X windows are made rather significantly. The upshot is that now different X servers are supported much more completely, especially Linux boxes with a depth of 16 and Crays. Also, support is now included for converting time units that are in the "udunits" package syntax into calendar dates, which is quite handy. Finally, fixed that annoying bug that caused a crash when all data values are zero.

    5 Nov, 1998: 1.72e: Added scaling of the Y values in an X-Y plot, so that large magnitude values (for example, > 10**12) will no longer cause the SciPlot widget to crash when trying to make labels 12+ digits long.

    25 Jun, 1998: 1.72c: Added buttons to the 2-D plot window that allow plotting with log axes for either X or Y. Also fixed that annoying bug that reset the time axis when you changed variables -- when did that creep in? Fixed bug related to printout options on the SGI.

    30 April, 1998: 1.72b: Fixed a couple made the initial command window all black when running on some versions of IRIX, which made it hard to use, to say the least!

    3 Dec, 1997: 1.72: Fixed a bug in the printer routine that resulted in the wrong timestep being printed. Added capability for changing the X axis in line plots (very useful!). Added continental overlays and lat/lon grids. Improved the efficiency for better operation over slow (SLIP) links. Still could be better, though. Added the "-no1d" option to filter out 1d variables, if you have too many of them to handle. In general, though, it handles 1d variables correctly.

    January 16, 1997: 1.65: Minor upgrade: 1) Added specific Makefile for Solaris platforms. If anyone has problems with ncview not compiling or working on a Solaris, please e-mail me. 2) Added check to make sure the app-defaults file is being read in. Having the app-default file either in the wrong place or unrecognized was apparently causing some people problems. Also, I added the application name to the beginning of the resource strings, which should help things. 3) Fixed long-standing bug in nVarsPerRow which could have caused mysterious crashes if you had "too many" variables in a file.

    December 25, 1996: 1.60: A significant number of changes: 1) Added the first stab at a "Print" option, which dumps out Postscript either to the printer or to a file. Still needs a colorbar added. 2) Made things more event-friendly, so that the app-defaults file can customize more things than it used to be able to do. 3) Extended the functionality of the "range" operator so that now you can export values from one Ncview session and import them into another. This is useful for cross-comparing results in different netCDF files. 4) Miscellaneous bug fixes.

    August 1, 1996: 1.50beta: Added an interface to the "SciPlot" widget. Now you just click on the image map, and you get a plot of the time series at that point! Also, this version will compile with the latest netcdf libraries.

    Feb 13, 1996: 1.38h: Little bug fixes, including the one which didn't reload the frame when going to the first frame with the "->1" button, and the one which wasn't setting the range correctly when clicking with the right mouse button on the 'range' button.

    Nov, 1995: 1.38g: Various code added to support a new feature which allows rudimentary editing of the netCDF file being viewed. This is NOT the main purpose of Ncview by any means, so it will probably not get much more advanced than this. But you can at least view and set values in the currently displayed slice.

    Also added "Delay" slider so you can slow down the animation rate if it goes too fast!

    1.38c: Added a new feature; you can click with the right mouse button on the color contour window to set the value under the cursor to the MAX data value (used to scale the colors); click with the left mouse button to set the MIN data value.

    1.38: Fixed pernicious bug which caused core dumps when changing dimensions. Hurray! Also added the readout to show what's currently under the cursor.

    1.37a: Fixed core dump caused by overly-long NetCDF attributes written into fixed-length strings.

    1.37: Changed a bunch of function definitions from "void" to "static void" to keep the gcc compiler happy.

    Ncview now checks for a specific missing_value attribute, a FillValue_ attribute, and the default fill value.

    1.36: More minor bug fixes in how netCDF files are interpreted.

    Now variable attribute "missing_value" takes precedence over attribute "_FillValue", as this is more in accord with what the netCDF manual states.

    Fixes to how 'component' indices are handled. I.e., you can have a variable "velocity" with axes X, Y, and Component, with Component being either "U" or "V".

    Inverted data sets are now handled semi-automatically, based on the data in the Y dimension variable. Also, the labels are switched to reflect the inversion.

    1.35: Many minor bug fixes, especially so that it will compile "straight out of the box" on Suns, and will work under IRIX 5.2. As a side benefit, that annoying "unaligned access" error message under DEC Alphas is cured.

    Added capability to read in different data types, although they still are all converted internally to floating point.

    Added a new feature: holding down the control key while clicking on the "magnification" button doubles the current magnification if you are clicking with the left mouse button, and halves the current magnification if you are clicking with the right mouse button. This is consistent with the use of the control key as an "accelerated" action.


    Back to David Pierce's home page.

    Last modified 13 Aug, 2003.