Re: [netcdf-java] Can I tell if a GridDatatype is "enhanced"?

Hi Jon,

Whoops! Sorry about that.

A few possibilities:

1) It would be pretty easy to change the TDS to give you back a
NetcdfDataset instead of a GridDataset. You could use that for the
enhancement information and convert it to a GridDataset to get all the
grid goodness out of it.

2) We could (probably should) expose the enhancement information in
GridDataset.

3) Yuck! Dipping into implementation details. -- The only implementation
of ucar.nc2.dt.GridDataset is by ucar.nc2.dt.grid.GridDataset which has
a public getNetcdfDataset() method.

Number 2 would be my first choice. Though I'm trying to think of any
other reasons it would be useful for the WMS code to have a
NetcdfDataset instead of GridDataset.

Ethan

On 2/11/2010 1:46 PM, Jonathan Blower wrote:
> Hi Ethan,
> 
> Thanks but there's no public getEnhanceMode() method on VariableDS
> (http://www.unidata.ucar.edu/software/netcdf-java/v4.1/javadoc/ucar/nc2/
> dataset/VariableDS.html).  There's a similar method on NetcdfDataset
> though:
> http://www.unidata.ucar.edu/software/netcdf-java/v4.1/javadoc/ucar/nc2/d
> ataset/class-use/NetcdfDataset.Enhance.html.
> 
> But I can't get a handle to the NetcdfDataset if all I have is a
> GridDataset (I think).
> 
> Along similar lines, is there a way to get the underlying file type of a
> GridDataset/GridDatatype (so I can optimise data-reading algorithms
> based on what sort of file I'm reading from)?
> NetcdfDataset.getFileTypeId() works for a NetcdfDataset, but again I
> can't get this if all I have is a GridDataset.
> 
> In case you hadn't guessed, this is all part of my effort to refactor
> ncWMS to be more integrable with TDS.  From our previous conversations I
> believe that TDS will give me GridDataset objects, so that's why I'm
> trying to work at this level, but if there's a way that the TDS config
> system could pass me higher-level objects that could work too.  Any
> thoughts?
> 
> Cheers, Jon
> 
> 
> 
> -----Original Message-----
> From: Ethan Davis [mailto:edavis@xxxxxxxxxxxxxxxx] 
> Sent: 11 February 2010 18:34
> To: Jonathan Blower
> Cc: netcdf-java@xxxxxxxxxxxxxxxx
> Subject: Re: Can I tell if a GridDatatype is "enhanced"?
> 
> Hi Jon,
> 
> Not very straight forward and there may be some loopholes I'm missing
> that John can comment on when he returns.
> 
> If you call getVariable() on your GridDataype, you will get the backing
> VariableDS. Call getEnhanceMode() on that and you'll get an
> EnumSet<NetcdfDataset.Enhance>. If that Set contains
> Enhance.ScaleMissing, the data you get back will have already had the
> scale/offset/missing applied. If that set contains
> Enhance.ScaleMissingDefer, you can directly use
> VariableDS.convertScaleOffsetMissing() to convert the data.
> 
> VariableDs also implements VariableEnhance.enhance(Set<Enhance>) but the
> comments say "DO NOT USE DIRECTLY. public by accident". I'll leave it to
> John to explain that and comment on the possibility of exposing any of
> this directly through the GridDatatype.
> 
> Ethan
> 
> On 2/8/2010 8:05 AM, Jonathan Blower wrote:
>> Hi,
>>
>> I'm writing a method along the lines of:
>>
>> double[] extractDataFrom(GridDatatype grid);
>>
>> where the GridDatatype is being passed to me by "foreign" code out of
> my
>> control.  Do I have any way of telling whether the GridDatatype is
>> "enhanced", i.e. whether scale/offset/missing attributes are
>> automatically applied when I extract data?
>>
>> And does it matter?  Can I program defensively to take care of both
>> situations (enhanced and not enhanced)?  I'm worried that simply
>> applying convertScaleOffsetMissing() to a value from an enhanced
>> GridDatatype might actually apply the enhancements twice and hence
> give
>> me the wrong answer.
>>
>> Thanks,
>> Jon



  • 2010 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: