Package ucar.nc2.dt.point
Class DapperDataset
- java.lang.Object
-
- ucar.nc2.dt.TypedDatasetImpl
-
- ucar.nc2.dt.point.PointObsDatasetImpl
-
- ucar.nc2.dt.point.DapperDataset
-
- All Implemented Interfaces:
Closeable,AutoCloseable,PointCollection,PointObsDataset,TypedDataset,TypedDatasetFactoryIF
public class DapperDataset extends PointObsDatasetImpl implements TypedDatasetFactoryIF
Handles datasets using Dapper doubley nested sequences.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classDapperDataset.SeqPointObsclassDapperDataset.SeqStationObs
-
Field Summary
Fields Modifier and Type Field Description protected ucar.nc2.VariablealtVarprotected ucar.nc2.dods.DODSNetcdfFiledodsFileprotected booleanfatalprotected ucar.nc2.dataset.StructureDSinnerSequenceprotected booleanisProfileprotected ucar.nc2.VariablelatVarprotected ucar.nc2.VariablelonVarprotected ucar.nc2.dataset.StructureDSouterSequenceprotected ucar.nc2.VariabletimeVar-
Fields inherited from class ucar.nc2.dt.point.PointObsDatasetImpl
formatter, timeUnit
-
Fields inherited from class ucar.nc2.dt.TypedDatasetImpl
boundingBox, dataVariables, desc, endDate, location, netcdfDataset, parseInfo, startDate, title
-
-
Constructor Summary
Constructors Constructor Description DapperDataset()DapperDataset(ucar.nc2.dataset.NetcdfDataset ds)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static PointObsDatasetfactory(ucar.nc2.dataset.NetcdfDataset ds)ListgetData(ucar.nc2.util.CancelTask cancel)Get all data, allow user to cancel.ListgetData(ucar.unidata.geoloc.LatLonRect boundingBox, Date start, Date end, ucar.nc2.util.CancelTask cancel)Get all data within the specified bounding box and date range, allow user to cancel.ListgetData(ucar.unidata.geoloc.LatLonRect boundingBox, ucar.nc2.util.CancelTask cancel)Get all data within the specified bounding box, allow user to cancel.intgetDataCount()Get estimate of number of data records (may not be exact).DataIteratorgetDataIterator(int bufferSize)Get an efficient iterator over all the data in the Collection.booleanisMine(ucar.nc2.dataset.NetcdfDataset ds)Determine if this dataset belongs to youstatic booleanisValidFile(ucar.nc2.NetcdfFile ds)static voidmain(String[] args)TypedDatasetopen(ucar.nc2.dataset.NetcdfDataset ncd, ucar.nc2.util.CancelTask task, StringBuilder errlog)Open a NetcdfDataset as a TypedDataset.ListreadStationData(ucar.unidata.geoloc.Station s, ucar.nc2.util.CancelTask cancel)voidreadStations(List stations)protected voidsetBoundingBox()protected voidsetEndDate()protected voidsetStartDate()protected voidsetTimeUnits()-
Methods inherited from class ucar.nc2.dt.point.PointObsDatasetImpl
getData, getData, getData, getDataClass, getDetailInfo, getMetersConversionFactor, getScientificDataType, getTime, getTimeUnits
-
Methods inherited from class ucar.nc2.dt.TypedDatasetImpl
close, findGlobalAttributeIgnoreCase, getBoundingBox, getDataVariable, getDataVariables, getDescription, getEndDate, getGlobalAttributes, getLocation, getLocationURI, getNetcdfFile, getStartDate, getTitle, removeDataVariable, setDescription, setLocationURI, setTitle
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ucar.nc2.dt.TypedDataset
close, findGlobalAttributeIgnoreCase, getBoundingBox, getDataVariable, getDataVariables, getDescription, getEndDate, getGlobalAttributes, getLocationURI, getNetcdfFile, getStartDate, getTitle
-
Methods inherited from interface ucar.nc2.dt.TypedDatasetFactoryIF
getScientificDataType
-
-
-
-
Field Detail
-
dodsFile
protected ucar.nc2.dods.DODSNetcdfFile dodsFile
-
latVar
protected ucar.nc2.Variable latVar
-
lonVar
protected ucar.nc2.Variable lonVar
-
altVar
protected ucar.nc2.Variable altVar
-
timeVar
protected ucar.nc2.Variable timeVar
-
innerSequence
protected ucar.nc2.dataset.StructureDS innerSequence
-
outerSequence
protected ucar.nc2.dataset.StructureDS outerSequence
-
isProfile
protected boolean isProfile
-
fatal
protected boolean fatal
-
-
Constructor Detail
-
DapperDataset
public DapperDataset()
-
DapperDataset
public DapperDataset(ucar.nc2.dataset.NetcdfDataset ds) throws IOException- Throws:
IOException
-
-
Method Detail
-
isValidFile
public static boolean isValidFile(ucar.nc2.NetcdfFile ds)
-
factory
public static PointObsDataset factory(ucar.nc2.dataset.NetcdfDataset ds) throws IOException
- Throws:
IOException
-
isMine
public boolean isMine(ucar.nc2.dataset.NetcdfDataset ds)
Description copied from interface:TypedDatasetFactoryIFDetermine if this dataset belongs to you- Specified by:
isMinein interfaceTypedDatasetFactoryIF- Parameters:
ds- examine this NetcdfDataset to see if it belongs to this class.- Returns:
- true if this class knows how to create a TypedDataset out of this NetcdfDataset.
-
open
public TypedDataset open(ucar.nc2.dataset.NetcdfDataset ncd, ucar.nc2.util.CancelTask task, StringBuilder errlog) throws IOException
Description copied from interface:TypedDatasetFactoryIFOpen a NetcdfDataset as a TypedDataset.- Specified by:
openin interfaceTypedDatasetFactoryIF- Parameters:
ncd- already opened NetcdfDataset.task- use may cancelerrlog- place errors here- Returns:
- a subclass of TypedDataset
- Throws:
IOException- on error
-
setTimeUnits
protected void setTimeUnits()
- Specified by:
setTimeUnitsin classPointObsDatasetImpl
-
setStartDate
protected void setStartDate()
- Specified by:
setStartDatein classTypedDatasetImpl
-
setEndDate
protected void setEndDate()
- Specified by:
setEndDatein classTypedDatasetImpl
-
setBoundingBox
protected void setBoundingBox()
- Specified by:
setBoundingBoxin classTypedDatasetImpl
-
getDataCount
public int getDataCount()
Description copied from interface:PointCollectionGet estimate of number of data records (may not be exact). Return -1 if not able to estimate.- Specified by:
getDataCountin interfacePointCollection- Returns:
- number of data records or -1
-
getData
public List getData(ucar.nc2.util.CancelTask cancel) throws IOException
Description copied from interface:PointCollectionGet all data, allow user to cancel. Return null if too expensive to implement. Call getDataCount() to get estimate of size. This will return a list of getDataClass(), but the actual data may or may not already be read in to memory. In any case, you call dataType.getData() to get the data.- Specified by:
getDatain interfacePointCollection- Parameters:
cancel- allow user to cancel. Implementors should return ASAP.- Returns:
- List of type getDataClass()
- Throws:
IOException- on io error- See Also:
as a (possibly) more efficient alternative
-
getData
public List getData(ucar.unidata.geoloc.LatLonRect boundingBox, ucar.nc2.util.CancelTask cancel) throws IOException
Description copied from interface:PointCollectionGet all data within the specified bounding box, allow user to cancel.- Specified by:
getDatain interfacePointCollection- Parameters:
boundingBox- restrict data to this bounding noxcancel- allow user to cancel. Implementors should return ASAP.- Returns:
- List of type getDataClass()
- Throws:
IOException- on io error- See Also:
as a (possibly) more efficient alternative
-
getData
public List getData(ucar.unidata.geoloc.LatLonRect boundingBox, Date start, Date end, ucar.nc2.util.CancelTask cancel) throws IOException
Description copied from interface:PointCollectionGet all data within the specified bounding box and date range, allow user to cancel.- Specified by:
getDatain interfacePointCollection- Parameters:
boundingBox- restrict data to this bounding noxstart- restrict data to after this timeend- restrict data to before this timecancel- allow user to cancel. Implementors should return ASAP.- Returns:
- List of type getDataClass()
- Throws:
IOException- on io error- See Also:
as a (possibly) more efficient alternative
-
readStations
public void readStations(List stations) throws IOException
- Throws:
IOException
-
readStationData
public List readStationData(ucar.unidata.geoloc.Station s, ucar.nc2.util.CancelTask cancel) throws IOException
- Throws:
IOException
-
getDataIterator
public DataIterator getDataIterator(int bufferSize) throws IOException
Description copied from interface:PointCollectionGet an efficient iterator over all the data in the Collection. You must fully process the data, or copy it out of the StructureData, as you iterate over it. DO NOT KEEP ANY REFERENCES to the dataType object or the StructureData object. This is the efficient way to get all the data, it can be 100 times faster than getData(). This will return an iterator over type getDataClass(), and the actual data has already been read into memory, that is, dataType.getData() will not incur any I/O. This is accomplished by buffering bufferSize amount of data at once.We dont need a cancelTask, just stop the iteration if the user want to cancel.
Example for point observations: Iterator iter = pointObsDataset.getDataIterator(); while (iter.hasNext()) { PointObsDatatype pobs = (PointObsDatatype) iter.next(); StructureData sdata = pobs.getData(); // process fully }- Specified by:
getDataIteratorin interfacePointCollection- Parameters:
bufferSize- if > 0, the internal buffer size, else use the default. Typically 100k - 1M for best results.- Returns:
- iterator over type getDataClass(), no guarenteed order.
- Throws:
IOException- on io error
-
main
public static void main(String[] args) throws IOException
- Throws:
IOException
-
-