From: <js...@us...> - 2007-11-29 21:15:43
|
Revision: 4508 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4508&view=rev Author: jswhit Date: 2007-11-29 13:15:23 -0800 (Thu, 29 Nov 2007) Log Message: ----------- include NetCDFFile in basemap.py, so docstring is included for web page. Modified Paths: -------------- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/__init__.py trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/__init__.py =================================================================== --- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/__init__.py 2007-11-29 20:16:48 UTC (rev 4507) +++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/__init__.py 2007-11-29 21:15:23 UTC (rev 4508) @@ -1,3 +1,2 @@ from basemap import __doc__, __version__ from basemap import * -from pupynere import NetCDFFile Modified: trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py =================================================================== --- trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-29 20:16:48 UTC (rev 4507) +++ trunk/toolkits/basemap/lib/matplotlib/toolkits/basemap/basemap.py 2007-11-29 21:15:23 UTC (rev 4508) @@ -14,7 +14,7 @@ from numpy import linspace, squeeze, ma from matplotlib.cbook import is_scalar, dedent from shapelib import ShapeFile -import _geos +import _geos, pupynere # basemap data files now installed in lib/matplotlib/toolkits/basemap/data basemap_datadir = os.sep.join([os.path.dirname(__file__), 'data']) @@ -2762,3 +2762,47 @@ raise ValueError, 'width and/or height too large for this projection, try smaller values' else: return corners + +has_pynio = True +try: + from PyNGL import nio +except ImportError: + has_pynio = False + +def NetCDFFile(file, maskandscale=True): + """NetCDF File reader. API is the same as Scientific.IO.NetCDF. + If 'file' is a URL that starts with 'http', it is assumed + to be a remote OPenDAP dataset, and the python dap client is used + to retrieve the data. Only the OPenDAP Array and Grid data + types are recognized. If file does not start with 'http', it + is assumed to be a local file. If possible, the file will be read + with a pure python NetCDF reader, otherwise PyNIO + (http://www.pyngl.ucar.edu/Nio.shtml) will be used (if it is installed). + PyNIO supports NetCDF version 4, GRIB1, GRIB2, HDF4 and HDFEOS2 files. + Data read from OPenDAP and NetCDF version 3 datasets will + automatically be converted to masked arrays if the variable has either + a 'missing_value' or '_FillValue' attribute, and some data points + are equal to the value specified by that attribute. In addition, + variables stored as integers that have the 'scale_factor' and + 'add_offset' attribute will automatically be rescaled to floats when + read. If PyNIO is used, neither of the automatic conversions will + be performed. To suppress these automatic conversions, set the + maskandscale keyword to False. + """ + if file.startswith('http'): + return pupynere._RemoteFile(file,maskandscale) + else: + # use pynio if it is installed and the file cannot + # be read with the pure python netCDF reader. This allows + # netCDF version 4, GRIB1, GRIB2, HDF4 and HDFEOS files + # to be read. + if has_pynio: + try: + f = pupynere._LocalFile(file,maskandscale) + except: + f = nio.open_file(file) + # otherwise, use the pupynere netCDF 3 pure python reader. + # (will fail if file is not a netCDF version 3 file). + else: + f = pupynere._LocalFile(file,maskandscale) + return f This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |