> > From: Harvey DAVIES <hld@dit.csiro.au> > > Subject: netCDF Conventions > > > > dimensions: > > time = UNLIMITED; > > latitude = 56; > > longitude = 64; > > land_point = 1100; // about 30% of 56*64 > > variables: > > float latitude(latitude); > > float longitude(longitude); > > short land_index(latitude, longitude); // value of 'land_point' index > > land_index:valid_min = 0; > > land_index:missing_value = -1; // -1 = ocean point > > float soil.temperature(time,land_point) In this formulation, rather than looking up the coordinates of soil.temperature, you start with a lat,lon grid and then you look up the (missing or not) value of soil.temperature. One alternate, obvious solution is: float soil.temperature( time, land_point); soil.temperature:coordinates = "lat lon"; float lat( land_point); float lon( land_point); of course then the lat, lon coord system is not connected. so then you could try: float soil.temperature( time, land_point) soil.temperature:coordinates = "latidx lonidx"; short latidx(land_point); short lonidx(land_point); but theres no way (yet) to associate that to a nice connected coord system like: float lat(lat); float lon(lon); but you can see that lat * latidx, lon * lonidx is a good coordinate system for soil.temperature if "*" means functional composition. So that suggests something like: float soil.temperature( time, land_point) soil.temperature:coordinates = "lat*latidx lon*lonidx"; short latidx(land_point); short lonidx(land_point); float lat(lat); float lon(lon);