CHANGES for Netcdf-Java library
Version 4.0.34.20090220.0016
Build Date = 2009-02-20 00:16:36

Changes in version 4.0

 Release Details:
  34:
    Fmrc.makeDatasets must clear coordinate system.
    GINI polar stereographic bug
    grid/grib/gempak refactor
    ToolsUI/FeatureTypes/WMS is rudimentory WMS client
    FeatureDataset extends FileCacheable, so they can be cached directly
  33: refactor ThreddsDataFactory
    add Radial datasets to FeatureDatasetFactoryManager; TypedDatasetFactory now obsolete
    experimental PointDatasetFromNcStream
    fysat iosp
    grib refactor
  32: Stereographic false_east/north implemented
    CoordinateAxis.section() uses copy() not copying all fields.
    Move CoordinateAxis.POSITIVE_XX to ucar.nc2.constants.CF
    GDV Conventions: dont check for meters but COARDS has to
    CFPointObs station ragged 
    put thredds/wcs back into netdf.jar for now
    NetcdfDataset.main() now is a cover to FileWriter.
    CoordinateAxis1D - dont convert misssing values to NaNs, missing values not alllowed so likely a user metadata error
    ArrayChar.makeFromString()
    CFPointObWriter more bugs
    N3streamWriter takes an optional numrec, if numrec are know in advance to avoid new streaming format
    NetcdfDataset : disambiguate bare http URL requests, use HttpClient
  31: UnidataPointObs : allow POINT type even if really a STATION.
    NSSLRadarConvention checks no Convention is set.
    COARDS : look for units of meters for vertical coords (again), when all else fails.
    DefaultCoordBuilder no longer extends COARDS, to avoid such nonsense.
    ncStream uses protocol buffers (experimental)
    nimbus NPE
    BufrTable UI: dump  distinct DDS
    RAF: fix writeToStream
    Array.factory(ByteBuffer)
    bug in PointFeatureSubset iterator.
    move Station, EarthLocation to ucar.unidata.geoloc
  30: Modis Satellite CoordSysBuilder
    Cosmic profiles
    HDF5 fletcher32
    jpeg2000Unpacking Exception
    Mercator false east/northing
    Nimbus/RAF Convention: try to guess more coordinates
    add ucar.ma2.StructuresDataComposite
    fix CFPointObWriter to correctly handle CHAR
    add FeatureType selection to PointFeature tab
    context menu on FeatureScan
    FeatureDatasetFactory was not threadsafe, isMine() returns "analysis object"
    PointFeatures: standard package refactor; add Table.Type.Top for top-level variables
    PointFeatureDatasetViewer: works with all types except Section. add 100 obs limit for speed
    Bug in JoinExisting aggs with > 1 dataset, when taking a section of a cached variable.
    Try to reduce memory usage in CrawlableDataset.
    Grib iosp: dont swallow exception on data reading error
    NetcdfFile : remove finalize() for now
    N3iosp.close() : check for null raf, set raf to null on close.
    remove VariableDS.isCoordinateVariable() - must use classic sense of coordinate variable
    add Aggegation info to NetcdfDataset.getDetailInfo()
    refactor NcML Aggregation
    MetadataExtractor.extractDateRange() - deal with no time axis at all.
  29: Rotated Lat/lon projection
    JoinExisting caching now handles nested aggregations, by using the id attribute to identify them.
    GridDataset, RadialDataset: use Formatter instead of StringBuilder
    VariableIF use Formatter instead of StringBuilder
    CoordTransBuilder use Formatter instead of StringBuilder
    add getCatalogRef(InvCatalogRef dd) to CatalogGrawler.Listener
    CoordAxis1D.findCoordElement() bug for Longitude
    MAMath.convert2packed() utility for scale/offset writing
    Change _unsigned to _Unsigned; look for _Unsigned but ignore case.
  28: EarthLocation.isMissing()
    Improvements to CoordAxis1D.findCoordElement(coord)
    Start to fix CoordSysBuilder to deal with groups.
    DefaultConventions - split from GDV.
    Nested Tables implementation FeatureType (ucar.nc2.ft) framework. mostly POINT, some STATION
    Bugs and performance improvements for StructureDS
    TDWR into NIDS iosp
    Grib2 tolerate missing parameters
  27: Start implementing CF point data spec in FeatureType (ucar.nc2.ft) framework
    Point data: RecordHelper using wrong StructureMembers - always need to get from curent StructureData/Array object!
    Range, Section: use Range.VLEN for size < 0.
    H5iosp: structure member reading had wrong byteOrder
    VariableDS.lookupEnum must defer to orgVar
    H5header: redo String, char attributes;  _FillValue attribute vs Message
    H5iosp: exception if unknown filter.
    HDF5 shuffle filter was inverted
    HDF5 char attributes are Strings (UTF-8)
    DataType.getClass is deprecated - use DataType.getPrimitiveClass
    Array.isUnsigned(): ArrayByte, ArrayShort, ArrayInt all check when doing conversions;
      NetcdfFile.readData() sets this based on Variable.isUnsigned().
    DataType.OPAQUE : use ByteBuffers wrapped by ArrayObject
    Array.set() made public for efficiency, eg in Attributes
    bugs in enhance handling and NcML
    JNI interface to netcdf4 C library, for testing
  26: ucar.nc2.ft.point.writer.CFPointObWriter, WriterCFPointObsDataset for writig point obs data in proposed CF format.
    EnhancedScaleMissingImpl: deal with unsigned data and missing values
    Universal Formal Radar IOSP
    NetcdfDatasetInfo must reopen dataset, capture CoordSysBuilder info, so that normal case doesnt retain unneeded objects
  25: opendap parsing bug with signed bytes
    ncml agg fixes
    grib thread-safety
    Calendar.clear() to eliminate random millisecs in a new Date
    NIDS: raster,  DPA read bug
    BUFR tables cleanup
    add Grib GDS type 87
    NCDumpW -ncml -vall now works
    cache cleanup only worked once (!)
    agg files were being opened twice under some circumstances
    FileCache hard limit
  24: cleanup error messages when catref or show catalog service fails to open remote catalog.
    HTTPRandomAccessFile tolerates lack of "Accept-Ranges" header
    bug in IO.copyUrlB buffering - was very slow, prone to hang
    start to reduce memory consumption based on TDS profiling:
        - remove ucar.ma2.Index.set/getName() since its never used
        - NetcdfDataset does not retain NetcdfDatasetInfo
        - remove GribServiceProvider.parseInfo
        - DateUnit does not retain DateFormatter or timeUnitString
        - LatLonPointImpl does not preallocate StringBuilders
  23: new visad.jar (9/12/08)
    more BUFR fixes
    DateRange now moves when start or end date = "present"
    NetcdfFile.canOpen()
    GeoCoordSys: warn, dont fail, if x, y axis units not compatible with "km"
    mcidas area iosp
  22: improved BUFR reading
  21: Improve nexrad3 iosp
    GeoTiff: new projections
  20: StructureDS: get nested convert to work
    Mercator projection: remove lat0; grib parameters were interpreted wrong
    Allow opening GRIB files where we dont know the grid type, and so cant add coordinates
    HDF5 bug: filtered data (eg compressed) wasnt checking for byte order.
    add 'nodods':, 'slurp:' as aliases for http:
    enums return values, enhance will convert to Strings
    redo NetcdfDataset.EnhanceMode, use EnumSet
    ENUM1, ENUM2, ENUM4 enum types
    BUFR code tables (still experimental)
    BUFR "associated variables"
    VariableDS extends EnhanceScaleMissing, StructureDS and VariableEnhanced does not
  19: BUFR reading mostly works
    turn off debugging
    StructureDS.convert nested structures
  18: fix large file writing
    in agg, fix CacheVar, joinExisting persistance.
    move NetcdfDataset.makeArray to Array.makeArray, add new variant
    UnidataPointObsDataset does not require bounding box in global attributes
    NetcdfFileWriteable will allow object names to start with a digit
    ToolsUI : allow setting file caching
    add NcdumpW.printArray for vanilla array printing
    CoordSysBuilder allows coordinate axes to have coordinate systems
    move McIDASAreaProjection, McIDASAreaTransformBuilder to ucar.nc2.iosp.mcidas
    change AxisType, DataType, FeatureType, TransformType into a java 1.5 enum
    WRFConvention tolerates not having GLAT,GLON fields
    bug fixes in BUFR
    NcMLWriter.writeXMLexplicit puts <explicit/> in NcML
    fix bug in NCdumpW.print sequences
  17: HTTPRandomAccessFile allows content-length to be long
    fix NcML aggregation unit tests; add new ones
    integrate aggregation with FileCache, experimental concurrency
    fix bug with relative URLs with blanks in them (URLnaming)
    finish new agg features : promoteGlobalAttribute, timeUnitsChange
  16: remove direct use of ucar.units, except from ucar.nc2.units
    rewrite NetcdfFileCache, remove NetcdfDatasetCache
    EnhanceScaleMissingImpl uses Misc.closeEnough for missing value comparisions.
    default VariableDS.useNaNs = true
    ucar.nc2.util.cache.FileCache uses FileCacheable, FileFactory interfaces;
        implement NetcdfFileCache, HTTP file cache with FileCache.
    start adding net.jcip.annotations to document thread safetyAgg
    convertScaleOffsetMissing() methods back into VariableEnhanced
    clean up Aggregation, make sure docs are correct
    clean up NetcdfDataset.EnhanceMode, add deferred option
  15: change StringBuffer to StringBuilder for efficiency
    clean up ArrayStructure/StructureData API, clarify Member use
    StructureData.getScalarXXX(name) must be correct type
    cleanup javadoc, improve reference docs
    NetcdfFileWriteable - redefine mode, large file support, extra header bytes
    library upgrades : JDOM 1.1
    NetcdfFile.readSection(secSpec) used in NcDumpPanel, replaces old readNestedData.
  14: NetcdfDataset: unsigned always gets converted
    Netcdf-3 files: truncate Strings at first null byte.
    complete rework of point datatypes, now in package ucar.nc2.ft (feature types)
    many improvements to Structure, ArrayStructure etc
    rewrite BUFR and supporting library, improve tables, etc
    make sure compiles under 1.5
  13: hdf4 attribute arrays
  12: DODS preload
    put back HttpClientManager, RuntimeConfigParser temporarily (testing with IDV)
    hdf4 bug fixes
    experiment with ucar.nc2.dt2
    iosp.NmcObsLegacy
    DataType Sequence
  11: start to fix name/shortName, ie deal with Groups systematically
    Structure/ArrayStructure/StructureData refactor
  10: hdf4 bug fix - no data tag, use missing data
    Structure.subset(), nc3 optimizes for it
    hdf5, ArrayStructureBB : set byteOrder
    ArrayStructureBB puts Strings on "heap"
    rearrange packages to separate modules
    cdm build redone - xxxComplete.jar added
    fix problem preventing 1.5 compilation (ternary op returns array)
  09: hdf5 byteOrder must be set when chunked (tiledLayout)

  ---------------------

  Overview of changes from 2.2

   Data Model
    * Object names are Unicode Strings. No Restrictions on characters used.
    * DataType STRING are Unicode. In Netcdf3/4, stored as UTF-8 encoded.
    * DataType CHAR are uninterpreted bytes, default is to consider them ascii.
    * DataType ENUM : stored as 1,2,4 byte ints, map to Strings
    * DataType OPAQUE : byte[] cant be subsetted.
    * DataType SEQUENCE : Structure(*) only accessible through StructureDataIterator

   Features:
    netcdf
      * Structure.select(): create subset consisting only of selected member variables
      * StructureDS correctly gets enhanced
      * NetcdfFileWriteable supports large file writing, redefine mode, extra header bytes, preallocating file size,
         all for Netcdf-3 files.
    iosp
     * netcdf-4
     * complete HDF5 access
     * complete HDF4 access
     * parsing of HDF-EOS/HDF5-EOS metadata to identify dimensions.
     * GEMPAK grids
     * NMC Office Note 29/143
     * BUFR (edition 2-4)
     * Mcidas AREA
     * Universal Radar Format
    geoloc
     * Add RotatedLatLon projection
     * Add RotatedPole projection
    ft
     * Point Feature Types completely reworked, based on StructureData iterators
    NcML
     * Tiled aggregation
     * A JoinExisting type now accepts timeUnitsChange, ndicating time units change in the differnt files
     * A JoinExisting type now accepts dateFormatMark, if theres only one time step per file, to specify the agg coord value
     * Union accepts scan
     * Global attributes can be promoted to Variables.
     * Can specify variables to cache.
     * Can specify iosp, a string parameter to the iosp, and the RAF buffer size

   Libraries
    * JDOM 1.1
    * updated visad 9/12/08
