ucar.nc2.thredds
Class DqcStationObsDataset

java.lang.Object
  extended by ucar.nc2.dt.TypedDatasetImpl
      extended by ucar.nc2.dt.point.PointObsDatasetImpl
          extended by ucar.nc2.dt.point.StationObsDatasetImpl
              extended by ucar.nc2.thredds.DqcStationObsDataset
All Implemented Interfaces:
PointCollection, PointObsDataset, StationCollection, StationObsDataset, TypedDataset

public class DqcStationObsDataset
extends StationObsDatasetImpl

This implements a StationObsDataset with a DQC.

Author:
John Caron

Nested Class Summary
 class DqcStationObsDataset.DqcObsImpl
           
 
Field Summary
 
Fields inherited from class ucar.nc2.dt.point.StationObsDatasetImpl
stationHelper, stations
 
Fields inherited from class ucar.nc2.dt.point.PointObsDatasetImpl
formatter, timeUnit
 
Fields inherited from class ucar.nc2.dt.TypedDatasetImpl
boundingBox, dataVariables, desc, endDate, location, ncfile, parseInfo, startDate, title
 
Method Summary
static DqcStationObsDataset factory(InvDataset ds, String dqc_location, StringBuilder errlog)
           
static DqcStationObsDataset factory(String desc, String dqc_location, StringBuilder errlog)
           
 List getData(CancelTask cancel)
          Get all data, allow user to cancel.
 List getData(Station s, CancelTask cancel)
          Get all data for this Station, allow user to cancel.
 int getDataCount()
          Get estimate of number of data records (may not be exact).
 DataIterator getDataIterator(int bufferSize)
          Get an efficient iterator over all the data in the Collection.
 String getDescription()
           
 String getLocation()
           
 String getTitle()
           
static void main(String[] args)
           
protected  void setBoundingBox()
           
protected  void setEndDate()
           
protected  void setStartDate()
           
protected  void setTimeUnits()
           
 
Methods inherited from class ucar.nc2.dt.point.StationObsDatasetImpl
getData, getData, getData, getData, getData, getData, getData, getData, getData, getDataClass, getDataIterator, getDataIterator, getDetailInfo, getScientificDataType, getStation, getStationDataCount, getStations, getStations, getStations, getStations, sortByTime
 
Methods inherited from class ucar.nc2.dt.point.PointObsDatasetImpl
getData, getData, getData, getMetersConversionFactor, getTime, getTimeUnits
 
Methods inherited from class ucar.nc2.dt.TypedDatasetImpl
close, findGlobalAttributeIgnoreCase, getBoundingBox, getDataVariable, getDataVariables, getEndDate, getGlobalAttributes, getLocationURI, getNetcdfFile, getStartDate, 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, getEndDate, getGlobalAttributes, getLocationURI, getNetcdfFile, getStartDate
 
Methods inherited from interface ucar.nc2.dt.PointCollection
getData, getData, getData, getTimeUnits
 

Method Detail

factory

public static DqcStationObsDataset factory(InvDataset ds,
                                           String dqc_location,
                                           StringBuilder errlog)
                                    throws IOException
Throws:
IOException

factory

public static DqcStationObsDataset factory(String desc,
                                           String dqc_location,
                                           StringBuilder errlog)
                                    throws IOException
Throws:
IOException

setTimeUnits

protected void setTimeUnits()
Specified by:
setTimeUnits in class PointObsDatasetImpl

setStartDate

protected void setStartDate()
Specified by:
setStartDate in class TypedDatasetImpl

setEndDate

protected void setEndDate()
Specified by:
setEndDate in class TypedDatasetImpl

setBoundingBox

protected void setBoundingBox()
Specified by:
setBoundingBox in class TypedDatasetImpl

getTitle

public String getTitle()
Specified by:
getTitle in interface TypedDataset
Overrides:
getTitle in class TypedDatasetImpl
Returns:
Title of the dataset.

getLocation

public String getLocation()
Overrides:
getLocation in class TypedDatasetImpl

getDescription

public String getDescription()
Specified by:
getDescription in interface TypedDataset
Overrides:
getDescription in class TypedDatasetImpl
Returns:
Text information about this dataset.

getData

public List getData(Station s,
                    CancelTask cancel)
             throws IOException
Description copied from interface: StationCollection
Get all data for this Station, allow user to cancel.

Parameters:
s - for this Station
cancel - allow user to cancel. Implementors should return ASAP.
Returns:
List of getDataClass()
Throws:
IOException - on io error

getData

public List getData(CancelTask cancel)
             throws IOException
Description copied from interface: PointCollection
Get 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.

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

getDataCount

public int getDataCount()
Description copied from interface: PointCollection
Get estimate of number of data records (may not be exact). Return -1 if not able to estimate.

Returns:
number of data records or -1

getDataIterator

public DataIterator getDataIterator(int bufferSize)
                             throws IOException
Description copied from interface: PointCollection
Get 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 }

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


Copyright © 1999-2011 UCAR/Unidata. All Rights Reserved.