[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IDV #HZA-459071]: IDV - NOAA pathfinder v5 sst data



Hi Joseph-

> Thanks for the prompt help. I tried it and the link below and it opened
> one image. The problem is, I am quite new to this IDV software and I was
> wondering how I can, while using the URL, display/stack the data
> together for more than one time. I am trying to access the SST data for
> the Western Indian Ocean for the years between 1985-2005 since I am
> interested in doing a time series analysis. Is there a straightforward
> way to handle this procedure or do I need a script/algorithm to get this
> done. For example, the URL below is for 1 day. In case I want to perform
> a getRequest for a certain time period, how should I change this
> request?
> 
> 
> http://data.nodc.noaa.gov/cgi-bin/nph-dods/pathfinder/Version5.0_interim
> _NOAA17/Daily/2005/2005002.s04d2pfrt-sst.hdf.dods?sst[0:10:4095][0:10:81
> 91]

You would have to contact the Data provider to see if they have an
DODS/OPeNDAP server that can serve up a sequence of times.  I looked
on that site and didn't see any sequences, just averages.

If you were able to get a time series of images, you could use the
following Jython procedure that I sent to your colleague S. Mittra:

def makeUrlTo2DSet(a):
  from visad import *
  from visad import RealType
  from visad import RealTupleType
  from visad import Gridded1DDoubleSet
  from visad import Gridded2DSet
  from ucar.unidata.data.grid import GridUtil

  timedom = a.getDomainSet()
  numTimes = timedom.getLength()
  dom1 = GridUtil.getSpatialDomain(a)
  samples = dom1.getSamples(0)
  sets = dom1.getSets()

  sdomain = Gridded2DSet(RealTupleType.SpatialEarth2DTuple, samples,
                        sets[0].getLength(), sets[1].getLength(),
                        dom1.getCoordinateSystem(),
                        dom1.getSetUnits(),
                        dom1.getSetErrors(), 0, 0)

  image = GridUtil.setSpatialDomain(a,sdomain)
  newTime = Gridded1DDoubleSet(RealType.Time, timedom.getSamples(0),
                               numTimes,
                               timedom.getCoordinateSystem(),
                               timedom.getSetUnits(),
                               timedom.getSetErrors(), 0)
  newType = FunctionType(RealTupleType.Time1DTuple, image[0].getType())
  timeImage = FieldImpl(newType, newTime)
  for i in range(numTimes):
    timeImage.setSample(i, image[i],0)
  return timeImage

> Also, when I display this data, I am unable to figure out what units the
> range is in. Also, if it is in ASCII, what kind of algorithm should I
> use to convert it to degrees Celsius or degrees Farenheit?

The units listed in the dataset are:

units: "Temp"

which of course is not a valid unit.  Guessing from the values, 
I would say they are in Celsius.  Presently, there is no way
to override the default units in the IDV, but you could
do this with the following Jython formula:

def newUnit(field, varname, unitname):
  from ucar.visad import Util
  from ucar.unidata.data.grid import GridUtil
  newunit = Util.parseUnit(unitname)
  newType = Util.makeRealType(varname, newunit)
  return GridUtil.setParamType(field, newType)

and when you create the calling formula, set the Formula as:

newUnit(field, name[isuser=true], unitSpec[isuser=true])

the [isuser=true] will pop up a dialog where you can enter a
new name and a unit specification.  The unit specifications
must conform to the udunits specifications which can be found here:

http://www.unidata.ucar.edu/software/udunits/udunits.txt

in this particular case, you must enter degC or celsius.  C
is the international standard for Coulomb.

Don Murray


Ticket Details
===================
Ticket ID: HZA-459071
Department: Support IDV
Priority: Normal
Status: Open