Hi John,
Thanks for getting back to me.
>
> You cant open a dataset with a constraint expression in netcdf-Java.
Interestingly, that's not exactly true. Apparently one can, it's just not
*really* constrained. Or I should say, everything is constrained *except* the
data in the variable. Here's a dump of part of the CDL using a constraint in
NetCDF-Java:
netcdf
dods://geoport.whoi.edu/thredds/dodsC/examples/OS_M1_20081008_TS.nc?PSAL[0:1:100][0:1:0][0:1:0][0:1:0]
{
dimensions:
TIME = UNLIMITED; // (101 currently)
DEPTH = 1;
LATITUDE = 1;
LONGITUDE = 1;
variables:
float PSAL(TIME=101, DEPTH=1, LATITUDE=1, LONGITUDE=1);
:_CoordinateAxes = "TIME DEPTH LATITUDE LONGITUDE ";
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "Hourly sea_water_salinity";
:units = " ";
:standard_name = "sea_water_salinity";
:uncertainty = "0.02";
:valid_min = "30";
:valid_max = "36";
:cell_methods = "time: mean";
:history = "From m1_ctd0001_20081008_original";
double TIME(TIME=101);
double DEPTH(DEPTH=1);
double LATITUDE(LATITUDE=1);
double LONGITUDE(LONGITUDE=1);
…
}
And without a constraint expression:
netcdf dods://geoport.whoi.edu/thredds/dodsC/examples/OS_M1_20081008_TS.nc {
dimensions:
DEPTH = 11;
bnds = 2;
LATITUDE = 1;
LONGITUDE = 1;
TIME = UNLIMITED; // (9043 currently)
variables:
float DEPTH_QC(DEPTH=11);
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "Quality flag for depth axis, 1: Good data";
double DEPTH_bnds(DEPTH=11, bnds=2);
float POSITION_QC(LONGITUDE=1);
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "Quality flag for Latitude and Longitude axes, 1: Good data";
float TIME_QC(TIME=9043);
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "Quality flag for time axis, 1: Good data";
float PSAL(TIME=9043, DEPTH=11, LATITUDE=1, LONGITUDE=1);
:_CoordinateAxes = "TIME DEPTH LATITUDE LONGITUDE ";
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "Hourly sea_water_salinity";
:units = " ";
:standard_name = "sea_water_salinity";
:uncertainty = "0.02";
:valid_min = "30";
:valid_max = "36";
:cell_methods = "time: mean";
:history = "From m1_ctd0001_20081008_original";
float PSAL_QC(TIME=9043, DEPTH=11, LATITUDE=1, LONGITUDE=1);
:_CoordinateAxes = "TIME DEPTH LATITUDE LONGITUDE ";
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "quality flag";
:units = " ";
:conventions = "OceanSITES reference table 2";
:history = "From m1_ctd0001_20081008_original";
float TEMP(TIME=9043, DEPTH=11, LATITUDE=1, LONGITUDE=1);
:_CoordinateAxes = "TIME DEPTH LATITUDE LONGITUDE ";
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "Hourly sea_water_temperature";
:units = "celsius";
:standard_name = "sea_water_temperature";
:uncertainty = "0.002";
:valid_min = "0";
:valid_max = "35";
:cell_methods = "time: mean";
:history = "From m1_ctd0001_20081008_original";
float TEMP_QC(TIME=9043, DEPTH=11, LATITUDE=1, LONGITUDE=1);
:_CoordinateAxes = "TIME DEPTH LATITUDE LONGITUDE ";
:missing_value = -1.0E34f; // float
:_FillValue = -1.0E34f; // float
:long_name = "quality flag";
:units = " ";
:conventions = "OceanSITES reference table 2";
:history = "From m1_ctd0001_20081008_original";
double DEPTH(DEPTH=11);
:units = "METERS";
:point_spacing = "uneven";
:axis = "Z";
:bounds = "DEPTH_bnds";
:positive = "down";
:long_name = "Depth";
:standard_name = "depth";
:QC_procedure = "5";
:uncertainty = "0.1";
:valid_min = "0";
:valid_max = "5000";
:_CoordinateAxisType = "Height";
:_CoordinateZisPositive = "down";
double LATITUDE(LATITUDE=1);
:point_spacing = "even";
:axis = "Y";
:units = "degrees_north";
:long_name = "Latitude";
:standard_name = "latitude";
:QC_procedure = "5";
:uncertainty = "0.0001";
:valid_min = "-90";
:valid_max = "90";
:_CoordinateAxisType = "Lat";
double LONGITUDE(LONGITUDE=1);
:point_spacing = "even";
:axis = "X";
:units = "degrees_east";
:long_name = "Longitude";
:standard_name = "longitude";
:QC_procedure = "5";
:uncertainty = "0.0001";
:valid_min = "-180";
:valid_max = "180";
:modulo = " ";
:_CoordinateAxisType = "Lon";
double TIME(TIME=9043);
:units = "DAYS since 1950-01-01 00:00:00";
:axis = "T";
:time_origin = "01-JAN-1950 00:00:00";
:long_name = "Time";
:standard_name = "time";
:QC_procedure = "1";
:uncertainty = "0.5";
:valid_min = "1223496115";
:valid_max = "1256054123";
:_CoordinateAxisType = "Time";
…
}
>
> open the dataset without a constraint expression, and constrain the read.
>
OK, got it.
Cheers,
--
Brian Schlining