Ray,
[has anyone looked at using visad ...]
> for point set data? As near as I can tell, netCDF cannot be used for
> this. I have not yet looked at HDF, anyone know if it is a supported
> data structure there?
Both netCDF and HDF can be used for point set data, if I'm correctly
interpreting what you mean by that: values at each point for a set of
points that are not on a grid. For a netCDF example, see the appended
CDL file.
--Russ
_____________________________________________________________________
Russ Rew UCAR Unidata Program
russ@xxxxxxxxxxxxxxxx http://www.unidata.ucar.edu
netcdf metar
{
dimensions:
maxAutoStaLen = 6; // Max automated station type length
maxAutoWeather = 5; // Max num of auto weather codes
maxAutoWeaLen = 12; // Max num of auto weather codes
maxRepLen = 6; // Max report type length
maxMETARLen = 256; // Max undecoded METAR length
maxSkyCover = 6; // Max num of sky cover groups
maxSkyLen = 8; // Max length of sky cover word
maxStaNamLen = 5; // Station name length
maxWeatherNum = 5; // Max num of present weather codes
maxWeatherLen = 25;
recNum = UNLIMITED;
variables:
// METAR ORIGIN INFO
// This variable does not appear in METARs.
long wmoId(recNum);
wmoId:long_name = "numeric WMO identification";
wmoId:valid_range = 1, 89999;
wmoId:reference = "station table";
char stationName(recNum, maxStaNamLen);
stationName:long_name = "alphanumeric station identification";
stationName:reference = "station table";
// This variable does not appear in METARs.
float latitude(recNum);
latitude:long_name = "latitude";
latitude:units = "degree_north";
latitude:reference = "station table";
// This variable does not appear in METARs.
float longitude(recNum);
longitude:long_name = "longitude";
longitude:units = "degree_east";
longitude:reference = "station table";
// This variable does not appear in METARs.
float elevation(recNum);
elevation:long_name = "elevation";
elevation:units = "meter";
elevation:reference = "station table";
// METAR DATE AND TIME
double timeObs(recNum);
timeObs:long_name = "time of observation";
timeObs:units = "seconds since 1-1-1970";
// This variable does not appear in METARs.
double timeNominal(recNum);
timeNominal:long_name = "METAR hour";
timeNominal:units = "seconds since 1-1-1970";
// REPORT TYPE
char reportType(recNum, maxRepLen);
reportType:long_name = "report type";
reportType:reference = "FMH-1";
// AUTO STATION TYPE
char autoStationType(recNum, maxAutoStaLen);
autoStationType:long_name = "automated station type";
autoStationType:reference = "FMH-1";
// SKY COVER GROUP
char skyCover(recNum, maxSkyCover, maxSkyLen);
skyCover:long_name = "sky cover";
skyCover:reference = "FMH-1";
float skyLayerBase(recNum, maxSkyCover);
skyLayerBase:long_name = "sky cover layer base";
skyLayerBase:units = "meter";
skyLayerBase:valid_min = 0;
// VISIBILITY GROUP
float visibility(recNum);
visibility:long_name = "visibility";
visibility:units = "meter";
visibility:valid_min = 0.0;
// PRESENT WEATHER
char presWeather(recNum, maxWeatherLen);
presWeather:long_name = "present weather";
presWeather:reference = "FMH-1";
// SEA LEVEL PRESSURE
float seaLevelPress(recNum);
seaLevelPress:long_name = "sea level pressure";
seaLevelPress:units = "pascal";
// TEMPERATURE
float temperature(recNum);
temperature:long_name = "temperature";
temperature:units = "kelvin";
// TEMPERATURE TO TENTHS
float tempFromTenths(recNum);
tempFromTenths:long_name = "temperature from tenths of a degree
Celsius";
tempFromTenths:units = "kelvin";
// DEWPOINT
float dewpoint(recNum);
dewpoint:long_name = "dewpoint";
dewpoint:units = "kelvin";
// DEWPOINT TO TENTHS
float dpFromTenths(recNum);
dpFromTenths:long_name = "dewpoint from tenths of a degree Celsius";
dpFromTenths:units = "kelvin";
// WIND GROUP
float windDir(recNum);
windDir:long_name = "wind direction";
windDir:units = "degree";
float windSpeed(recNum);
windSpeed:long_name = "wind speed";
windSpeed:units = "meter/sec";
windSpeed:valid_min = 0;
float windGust(recNum);
windGust:long_name = "wind gust";
windGust:units = "meter/sec";
windGust:valid_min = 0;
// ALTIMETER
float altimeter(recNum);
altimeter:long_name = "altimeter setting";
altimeter:units = "pascal";
altimeter:valid_min = 0.0;
// 24 HOUR TEMPERATURE
float minTemp24Hour(recNum);
minTemp24Hour:long_name = "24 hour min temperature";
minTemp24Hour:units = "kelvin";
float maxTemp24Hour(recNum);
maxTemp24Hour:long_name = "24 hour max temperature";
maxTemp24Hour:units = "kelvin";
// 1 HOUR PRECIP
float precip1Hour(recNum);
precip1Hour:long_name = "1 hour precipitation";
precip1Hour:units = "meter";
precip1Hour:valid_min = 0.0;
// 3 HOUR PRECIP
float precip3Hour(recNum);
precip3Hour:long_name = "3 hour precipitation";
precip3Hour:units = "meter";
precip3Hour:valid_min = 0.0;
// 6 HOUR PRECIP
float precip6Hour(recNum);
precip6Hour:long_name = "6 hour precipitation";
precip6Hour:units = "meter";
precip6Hour:valid_min = 0.0;
// 24 HOUR PRECIP
float precip24Hour(recNum);
precip24Hour:long_name = "24 hour precipitation";
precip24Hour:units = "meter";
precip24Hour:valid_min = 0.0;
// 3 HOUR PRESSURE CHANGE GROUP
short pressChangeChar(recNum);
pressChangeChar:long_name = "character of pressure change";
pressChangeChar:reference = "FMH-1";
float pressChange3Hour(recNum);
pressChange3Hour:long_name = "3 hour pressure change";
pressChange3Hour:units = "pascal";
pressChange3Hour:valid_min = 0.0;
// CORRECTION FLAG
long correction(recNum);
correction:long_name = "corrected METAR indicator";
// RAW METAR MESSAGE
char rawMETAR(recNum, maxMETARLen);
rawMETAR:long_name = "raw METAR message";
// GLOBAL ATTRIBUTES
:title = "METAR - Aviation Routine Weather Report";
}