Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
I have Java code which gets a GeoGrid object from a NetCDF GridDataset via the variable name. It normally works correctly but for the input NetCDF file I currently need to work with I get an error when this code runs, in that the GeoGrid is not found, even though you can see the variable in the NetCDF dataset using other tools such as ncdump and/or when stepping through the code with a debugger. This code works as expected with other NetCDF files so I assume that there must be something in the NetCDF file itself which is preventing the fetch of a variable's grid via a lookup of the variable name. When I view the NetCDF file I can see the variable and it displays as a Geo2D type in Panoply. The ncdump -h output for the file is below: File "prism_nidis_pet.nc" Dataset type: NetCDF-3/CDM netcdf file:/C:/home/prism/prism_nidis_pet.nc { dimensions: lon = 1405; lat = 621; time = UNLIMITED; // (1457 currently variables: int time(time=1457); :long_name = "time"; :standard_name = "time"; :units = "days since 1800-1-1 00:00:00"; :calendar = "gregorian"; float lon(lon=1405); :long_name = "longitude"; :standard_name = "longitude"; :units = "degrees_north"; float lat(lat=621); :long_name = "latitude"; :standard_name = "latitude"; :units = "degrees_west"; float pet(time=1457, lon=1405, lat=621); :calibration_start_year_month = "full"; :calibration_end_year_month = "full"; :_FillValue = -999.9f; // float :missing_value = -999.9f; // float :valid_min = 0.0f; // float :valid_max = 3.4028235E38f; // float :units = "millimeters"; :cell_methods = "time: potential evapotranspiration estimate, Thornthwaite equation"; :long_name = "Potential evapotranspiration estimate, Thornthwaite equation"; :standard_name = "Potential evapotranspiration estimate, Thornthwaite equation"; // global attributes: :date_created = "2016-06-23 11:52:37"; :date_modified = "2016-06-23 11:52:37"; :standard_name_vocabulary = "CF Standard Name Table (v26, 08 November 2013)"; :Conventions = "1.6"; :geospatial_lon_min = -125.0f; // float :geospatial_lon_max = -66.5f; // float :geospatial_lat_min = 24.083334f; // float :geospatial_lat_max = 49.916668f; // float } Is there anything about the file described above which would prevent being able to get a GeoGrid associated with the variable named "pet"? Below is the code which is failing when using the above file as input. private GeoGrid getGrid(final String netcdfFile, final String variableName) throws IOException { // open the NetCDF data set GridDataset gridDataset = GridDataset.open(netcdfFile); // verify that we opened the GridDataset if (gridDataset == null) { String errorMessage = "Error opening the NetCDF data set using the file \'" + netcdfFile + "\'"; logger.error(errorMessage); throw new RuntimeException(errorMessage); } // THIS IS WHERE THE PROBLEM OCCURS // get the grid based on the associated variable name GeoGrid geoGrid = gridDataset.findGridByShortName(variableName); // verify that we found the GeoGrid if (geoGrid == null) { String errorMessage = "Error finding the NetCDF grid from the NetCDF file \'" + netcdfFile + "\' using the variable name \'" + variableName + "\'"; logger.error(errorMessage); throw new RuntimeException(errorMessage); } // more code omitted... } When the above code runs and fails the arguments are the NetCDF file name and "pet" which is the variable name in that NetCDF for which we're trying to get the corresponding grid. Can anyone suggest what's going wrong here? Thanks in advance...
netcdf-java
archives: