NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
String netcdfUrl = args[0]; GeoGridDataSource ggds = new GeoGridDataSource(null, netcdfUrl, null); GridDataset gds = ggds.getDataset(); // get the geogrid by name, as Don says GeoGrid gg = gds.findGridByName( "surface_temperature" ); GeoGridAdapter gga = new GeoGridAdapter( ggds, gg ); FieldImpl fi = gga.getData();// sample 1 is 2nd time value, in my data set 1st time sample is missing for this variable
FlatField ff = (FlatField)fi.getSample(1); // now build the Displayable Contour2DDisplayable cdd = new Contour2DDisplayable( "foo" ); // we have to set the realType, I was missing thiscdd.setC2DRealType( (RealType) ((FunctionType)ff.getType()).getRange() );
cdd.setData( fi ); cdd.setContourLevels( new RegularContourLevels( 5, 273, 273, 310 ) );My biggest error was missing the line to setC2DRealType. i was under the impression that the IDV code could 'figure out' the RealType from the FieldImpl passed in. Of ocurse this cannot be the case since the FieldImpl could have many ranges, ie it could be realTupleType. Maybe if the ((FunctionType)ff.getType()).getRange() call returns a RealType that could be used automatically?
Thanks again Don! Stuart On Apr 4, 2008, at 7:22 AM, Don Murray wrote:
Hi Stuart- Just a followup to this since I'm now looking at your first message. In your code you have: Stuart Maclean wrote:I am now trying to contour a field from a netcdf grid file. The IDV does this Ok, but my image is simply a white polygon of the grid itself. My code is this:String netcdfUrl = args[0];GeoGridDataSource ggds = new GeoGridDataSource(null, netcdfUrl, null);GridDataset gds = ggds.getDataset(); GeoGrid gg = (GeoGrid)gds.getGrids().get(0);This will just get the first grid in the GridDataset. What you want to do is: GeoGrid gg = gds.findGridByName("surface_temperature");(or substitute whatever the variable name is for "surface_temperature").GeoGridAdapter gga = new GeoGridAdapter( ggds, gg, "surface_temperature" ); FieldImpl fi = gga.getData(); System.out.println( fi.getType().prettyString() ); which gives(Time -> ((XC[unit:km], YC[unit:km]) -> surface_temperature[unit:Pa]))Not sure why temp units are Pa??The first grid in the GridDataset must be a pressure grid of some sort.FlatField ff = (FlatField)fi.getSample(1); System.out.println( ff.getType().prettyString() ); which I presume extracts some time element, and gives ((XC[unit:km], YC[unit:km]) -> surface_temperature[unit:Pa])Don ************************************************************* Don Murray UCAR Unidata Program dmurray@xxxxxxxxxxxxxxxx P.O. Box 3000 (303) 497-8628 Boulder, CO 80307 http://www.unidata.ucar.edu/staff/donm *************************************************************
idvdevelopers
archives: