CHANGES for Netcdf-Java library
Version 4.0.22.20080822.2045
Build Date = 2008-08-22 20:45:43
Changes in version 4.0
This code is ALPHA
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 3) mostly works
geoloc
* Add RotatedPole projection
ft
* Point Feature Types completely reworked, based on StructureData iterators
NcML
* Tiled aggregation
* Existing accepts timeUnitsChange
* Union accepts scan
* Global attributes can be promoted to Variables.
Libraries
* JDOM 1.1
* use new visad library 12/04/07
Release Details:
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 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)
========================================
API Changes from Java-Netcdf version 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
* DataType OPAQUE
* DataType SEQUENCE
API Extensive API changes. Most, but not completely backwards-compatible.
* change StringBuffer to StringBuilder for efficiency
Package ucar.ma2
+ Array local iterator: hasNext() nextXXXX() methods.
+ ArraySequence handles Sequence with StructureDataIterator.
* Old ArraySequence now called ArraySequenceNested
- ArrayStructure.getArrayXXX removed - use getJavaArrayXXX
+ ArrayStructure.getMemberArray() to extract individual member data as Arrays
+ ArrayStructure.convertScalarDouble, Float
+ Section used instead of List
+ Section.appendRange() idioms for constructing
- StructureData.convertScalarDouble() removed, use StructureDS.convertScalarDouble()
- StructureData.getArrayXXX removed - use getJavaArrayXXX
- StructureData.findMemberArray removed - use getArray
+ StructureData.convertScalarDouble, Float
* StructureData.getScalarXXX(String memberName), getJavaArrayXXX(String memberName) must match type exactly
Package ucar.nc2
* Attribute mutable methods no longer public, so Attribute is immutable
- Dimension.getCoordinateVariables(), addCoordinateVariable() removed
+ Dimensions know what Group they belong to
* Dimension.UNKNOWN now DIMENSION.VLEN
- Dimension.UNLIMITED removed
* Dimension can be set immutable.
+ EnumTypedef class added for DataType.ENUM
+ Group tracks EnumTypedef
+ Group.findVariableEscaped() assumes variable name is escaped.
+ Group can be set immutable.
* IOServiceProvider -> ucar.nc2.iosp.IOServiceProvider
+ NetcdfFile.addStringVariable(), addVariable() convenience methods
- NetcdfFile.addRecordStructure removed, use sendIospMessage(IOSP_MESSAGE_ADD_RECORD_STRUCTURE)
- NetcdfFile.readMemberData() removed: use Structure.select() or readSection()
+ NetcdfFile.readToByteChannel experimental, for maximum performance
- NetcdfFile.read(String variableSection, boolean flatten) -> readSection(secSpec); flatten= false not supported
+ NetcdfFile implements FileCacheable
* NetcdfFile.setFileCache() replaced old setCacheState().
+ NetcdfFileWriteable has new convenience methods
+ NetcdfFileWriteable redefine mode, large file support, extra header bytes
- NCdump is deprecated, use NCdumpW which uses a java.io.Writer to do Unicode correctly
* NCdumpW.CEresult put in sepetat class
* NCdumpW.makeSectionString moved to CEresult
* VariableSimpleIF.convertScaleOffsetMissing moved to VariableEnhanced
* VariableIF extends VariableSimpleIF
- Variable.getCoordinateDimension() removed
- Variable.calcIsCoordinateVariable() removed
+ Variable.isCoordinateVariable() added
- Variable.setIsCoordinateAxis() removed
- Variable.set/getIOVar() removed
* Variable can be set immutable.
- Variable.readAllStructures is removed
+ Sequence is a one-dimensional Structure with indeterminate length
* Structure.select() create subset consisting only of given member variables
- Structure.convertXXX removed
+ VariableSimpleAdapter adapts a StructureMembers.Member into a VariableSimpleIF
Package ucar.nc2.dataset
* NetcdfDataset.EnhanceMode to control enhancing
* StructureDS correctly gets enhanced
* NetcdfDataset.makeArray -> Array.makeArray()
+ both NetcdfFile and NetcdfDataset are in the same FileCache, using acquireXXX().
+ FileCache configuration done though NetcdfDataset.
- VariableDS.isEnhanced() removed
Package ucar.nc2.dt
* TypedDatasetFactory.open() uses StringBuilder
Package ucar.nc2.iosp
* Layouts and Chunkers factored out for reuse
- IndexChunker, IndexChunkerTiled
- LayoutRegular, LayoutRegularSegmented, LayoutSegmented, LayoutTIled, LayoutBBTiled
* IOServiceProvider.readNestedData() not needed anymore. optimize readData(Structure struct),
where struct has only a subset of member Variables
+ IOServiceProvider.readSection(secSpec) with default implementation in AbstractIOServiceProvider
+ IOServiceProvider.readData(ucar.nc2.Variable v2, Section section, WritableByteChannel channel)
to allow use of nio.Channels
Package ucar.nc2.iosp.netcdf3
* netcdf3 format is now just one of the possible IOSPs
* N3streamWriter allows netcdf3 to be written as a stream
Package ucar.nc2.util
* RuntimeConfigParser -> ucar.nc2.util.xml
Package ucar.nc2.util.cache
* FileCache uses FileCacheable and FileFactory, replaces NetcdfFileCache, NetcdfDatasetCache, HTTPFileCache
+ FileCache no longer static, allows any number of caches. uses java.util.concurrent
* FileCacheRaf handles RandomAccessFile caching for TDS HTTP file serving.
Package ucar.nc2.units
* DateUnit is not a superclass of SimpleUnit
Package thredds.catalog
* DataType -> ucar.nc2.constants.FeatureType
Refactoring to reduce dependencies among modules (core, netcdf, ui, tds)
* ucar.nc2.dataset.conv._Coordinate moved to ucar.nc2.constants
* thredds.catalog.DataType moved to ucar.nc2.constants
* ucar.nc2.dataset.AxisType moved to ucar.nc2.constants
* thredds.util.DateFromString moved to ucar.nc2.units
* thredds.datatype to ucar.nc2.units
* thredds.util to ucar.nc2.util
* thredds.util.net to ucar.nc2.util.net
* ucar.nc2.dataset.HttpClientManager to ucar.nc2.util.net
* remove opendap.dap.DConnect2, ucar.unidata.io.http.HTTPRandomAccessFile from HttpClientManager: must be done seperately
* ucar.nc2.util.NetworkUtils to ucar.nc2.util.net.URLnaming
* thredds.util.net.URLExtractor to ui module
* thredds.util.ListenerManager to ui module
* thredds.util.Resource to ui module
* thredds.util.SocketMessage to ui module
* thredds.datamodel to ui
* thredds.tools to ui
* thredds.cataloggen.catalogGenMain (org.apache.log4j) to tds module
* thredds.dqc to tds
* thredds.cataloggen.CatalogRefInfo to thredds.cataloggen.config