public BufferedImage openDataset( GridDatatype grid) throws java.io.IOException { this.grid = grid; this.time = 0; GridCoordSystem gcsys = grid.getCoordinateSystem(); if (gcsys.getTimeAxis() != null) ntimes = (int) gcsys.getTimeAxis().getSize(); Array data = grid.readDataSlice( this.time, 0, -1, -1); return ImageArrayAdapter.makeGrayscaleImage( data); }
/** * testing */ public static void main(String arg[]) throws IOException { String defaultFilename = "C:/data/rap/fmrc.xml"; String filename = (arg.length > 0) ? arg[0] : defaultFilename; GridDataset gds = ucar.nc2.dt.grid.GridDataset.open(filename); GridDatatype gg = gds.findGridDatatype("T"); GridCoordSystem gsys = gg.getCoordinateSystem(); // gsys.getTimeAxisForRun(1); // generate error CoordinateAxis1DTime rtaxis = gsys.getRunTimeAxis(); CoordinateAxis taxis2D = gsys.getTimeAxis(); Array data = taxis2D.read(); NCdump.printArray(data, "2D time array", System.out, null); System.out.println("Run Time, Valid Times"); List<CalendarDate> runtimes = rtaxis.getCalendarDates(); for (int i = 0; i < runtimes.size(); i++) { System.out.println("\n" + runtimes.get(i)); CoordinateAxis1DTime taxis = gsys.getTimeAxisForRun(i); List<CalendarDate> times = taxis.getCalendarDates(); for (int j = 0; j < times.size(); j++) { System.out.println(" " + times.get(j)); } } }
public static void main(String[] args) throws IOException { GridDataset gds = ucar.nc2.dt.grid.GridDataset.open(args[0]); ucar.nc2.dt.GridDatatype grid = gds.findGridDatatype( args[1]); ucar.nc2.dt.GridCoordSystem gcs = grid.getCoordinateSystem(); CoordinateAxis xAxis = gcs.getXHorizAxis(); CoordinateAxis yAxis = gcs.getXHorizAxis(); CoordinateAxis1D zAxis = gcs.getVerticalAxis(); // may be null if (gcs.hasTimeAxis1D()) { CoordinateAxis1D tAxis = gcs.getTimeAxis1D(); } else if (gcs.hasTimeAxis()) { CoordinateAxis tAxis = gcs.getTimeAxis(); } } }
static public CalendarDateRange extractCalendarDateRange(GridDataset gridDataset) { CalendarDateRange maxDateRange = null; for (GridDataset.Gridset gridset : gridDataset.getGridsets()) { GridCoordSystem gsys = gridset.getGeoCoordSystem(); CalendarDateRange dateRange; CoordinateAxis1DTime time1D = gsys.getTimeAxis1D(); if (time1D != null) { dateRange = time1D.getCalendarDateRange(); } else { CoordinateAxis time = gsys.getTimeAxis(); if (time == null) continue; try { DateUnit du = new DateUnit( time.getUnitsString()); Date minDate = du.makeDate(time.getMinValue()); Date maxDate = du.makeDate(time.getMaxValue()); dateRange = CalendarDateRange.of( minDate, maxDate); } catch (Exception e) { logger.warn("Illegal Date Unit "+time.getUnitsString()); continue; } } if (maxDateRange == null) maxDateRange = dateRange; else maxDateRange.extend( dateRange); } return maxDateRange; }
public BufferedImage openDataset( GridDatatype grid) throws java.io.IOException { this.grid = grid; this.time = 0; GridCoordSystem gcsys = grid.getCoordinateSystem(); if (gcsys.getTimeAxis() != null) ntimes = (int) gcsys.getTimeAxis().getSize(); Array data = grid.readDataSlice( this.time, 0, -1, -1); return ImageArrayAdapter.makeGrayscaleImage( data, grid); }
/** * testing */ public static void main(String arg[]) throws IOException { String defaultFilename = "C:/data/rap/fmrc.xml"; String filename = (arg.length > 0) ? arg[0] : defaultFilename; GridDataset gds = ucar.nc2.dt.grid.GridDataset.open(filename); GridDatatype gg = gds.findGridDatatype("T"); GridCoordSystem gsys = gg.getCoordinateSystem(); // gsys.getTimeAxisForRun(1); // generate error CoordinateAxis1DTime rtaxis = gsys.getRunTimeAxis(); CoordinateAxis taxis2D = gsys.getTimeAxis(); Array data = taxis2D.read(); NCdump.printArray(data, "2D time array", System.out, null); System.out.println("Run Time, Valid Times"); List<CalendarDate> runtimes = rtaxis.getCalendarDates(); for (int i = 0; i < runtimes.size(); i++) { System.out.println("\n" + runtimes.get(i)); CoordinateAxis1DTime taxis = gsys.getTimeAxisForRun(i); List<CalendarDate> times = taxis.getCalendarDates(); for (int j = 0; j < times.size(); j++) { System.out.println(" " + times.get(j)); } } }
static public CalendarDateRange extractCalendarDateRange(GridDataset gridDataset) { CalendarDateRange maxDateRange = null; for (GridDataset.Gridset gridset : gridDataset.getGridsets()) { GridCoordSystem gsys = gridset.getGeoCoordSystem(); CalendarDateRange dateRange; CoordinateAxis1DTime time1D = gsys.getTimeAxis1D(); if (time1D != null) { dateRange = time1D.getCalendarDateRange(); } else { CoordinateAxis time = gsys.getTimeAxis(); if (time == null) continue; try { DateUnit du = new DateUnit( time.getUnitsString()); Date minDate = du.makeDate(time.getMinValue()); Date maxDate = du.makeDate(time.getMaxValue()); dateRange = CalendarDateRange.of( minDate, maxDate); } catch (Exception e) { logger.warn("Illegal Date Unit "+time.getUnitsString()); continue; } } if (maxDateRange == null) maxDateRange = dateRange; else maxDateRange.extend( dateRange); } return maxDateRange; }
public int compare(GridDatatype grid1, GridDatatype grid2) { GridCoordSystem gcs1 = grid1.getCoordinateSystem(); GridCoordSystem gcs2 = grid2.getCoordinateSystem(); CoordinateAxis time1 = gcs1.getTimeAxis(); CoordinateAxis time2 = gcs2.getTimeAxis(); int ret = compareAxis(time1, time2); if (ret != 0) return ret; CoordinateAxis vert1 = gcs1.getVerticalAxis(); CoordinateAxis vert2 = gcs2.getVerticalAxis(); ret = compareAxis(vert1, vert2); if (ret != 0) return ret; return grid1.getFullName().compareTo(grid2.getFullName()); }
dateRange = time1D.getCalendarDateRange(); } else { CoordinateAxis time = gsys.getTimeAxis(); if (time == null) continue;
public int compare(GridDatatype grid1, GridDatatype grid2) { GridCoordSystem gcs1 = grid1.getCoordinateSystem(); GridCoordSystem gcs2 = grid2.getCoordinateSystem(); CoordinateAxis time1 = gcs1.getTimeAxis(); CoordinateAxis time2 = gcs2.getTimeAxis(); int ret = compareAxis(time1, time2); if (ret != 0) return ret; CoordinateAxis vert1 = gcs1.getVerticalAxis(); CoordinateAxis vert2 = gcs2.getVerticalAxis(); ret = compareAxis(vert1, vert2); if (ret != 0) return ret; return grid1.getFullName().compareTo(grid2.getFullName()); }
static public CalendarDateRange extractCalendarDateRange(GridDataset gridDataset) { CalendarDateRange maxDateRange = null; for (GridDataset.Gridset gridset : gridDataset.getGridsets()) { GridCoordSystem gsys = gridset.getGeoCoordSystem(); CalendarDateRange dateRange; CoordinateAxis1DTime time1D = gsys.getTimeAxis1D(); if (time1D != null) { dateRange = time1D.getCalendarDateRange(); } else { CoordinateAxis time = gsys.getTimeAxis(); if (time == null) continue; try { DateUnit du = new DateUnit( time.getUnitsString()); Date minDate = du.makeDate(time.getMinValue()); Date maxDate = du.makeDate(time.getMaxValue()); dateRange = CalendarDateRange.of( minDate, maxDate); } catch (Exception e) { logger.warn("Illegal Date Unit "+time.getUnitsString()); continue; } } if (maxDateRange == null) maxDateRange = dateRange; else maxDateRange = maxDateRange.extend( dateRange); } return maxDateRange; }
public int compare(GridDatatype grid1, GridDatatype grid2) { GridCoordSystem gcs1 = grid1.getCoordinateSystem(); GridCoordSystem gcs2 = grid2.getCoordinateSystem(); CoordinateAxis time1 = gcs1.getTimeAxis(); CoordinateAxis time2 = gcs2.getTimeAxis(); int ret = compareAxis(time1, time2); if (ret != 0) return ret; CoordinateAxis vert1 = gcs1.getVerticalAxis(); CoordinateAxis vert2 = gcs2.getVerticalAxis(); ret = compareAxis(vert1, vert2); if (ret != 0) return ret; return grid1.getFullName().compareTo(grid2.getFullName()); }
@Test public void testGrid() { GridDatatype grid = gds.findGridDatatype("T"); assert null != grid; assert grid.getFullName().equals("T"); assert grid.getRank() == 3; assert grid.getDataType() == DataType.DOUBLE; GridCoordSystem gcsys = grid.getCoordinateSystem(); assert gcsys.getYHorizAxis() != null; assert gcsys.getXHorizAxis() != null; assert gcsys.getTimeAxis() != null; CoordinateAxis1DTime taxis = gcsys.getTimeAxis1D(); assert taxis.getDataType() == DataType.STRING : taxis.getDataType(); List names = taxis.getNames(); java.util.Date[] dates = taxis.getTimeDates(); assert dates != null; for (int i = 0; i < dates.length; i++) { Date d = dates[i]; ucar.nc2.util.NamedObject name = (ucar.nc2.util.NamedObject) names.get(i); logger.debug("{} == {}", name.getName(), d); } }
public void testSubset() throws Exception { ucar.nc2.dt.grid.GridDataset dataset = GridDataset.open(TestDir.cdmLocalTestDataDir+"rankTest.nc"); GeoGrid grid = dataset.findGridByName("full4"); assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; assert grid.getRank() == 4; doRead4(grid); GeoGrid grid_section = grid.subset(null, new Range(0,3,2), null, null); GridCoordSystem gcs_section = grid_section.getCoordinateSystem(); CoordinateAxis zaxis = gcs_section.getVerticalAxis(); assert zaxis.getSize() == 2; assert gcs_section.getXHorizAxis().equals( gcs.getXHorizAxis()); assert gcs_section.getYHorizAxis().equals( gcs.getYHorizAxis()); assert gcs_section.getTimeAxis().equals( gcs.getTimeAxis()); Array data = grid_section.readDataSlice(-1, -1, -1, -1); logger.debug(NCdumpW.toString( data, "grid_section", null)); dataset.close(); }
static void readAllRuntimes(Coverage cover, GridDatatype dt, CoordinateAxis1DTime runtimeAxis, CoordinateAxis1D ensAxis, CoordinateAxis1D vertAxis) { GridCoordSystem csys = dt.getCoordinateSystem(); CoordinateAxis1DTime timeAxis1D = csys.getTimeAxis1D(); CoordinateAxis timeAxis = csys.getTimeAxis(); CoordinateAxis2D timeAxis2D = (timeAxis instanceof CoordinateAxis2D) ? (CoordinateAxis2D) timeAxis : null; if (runtimeAxis == null) readAllTimes1D(cover, dt, null, -1, timeAxis1D, ensAxis, vertAxis); else if (timeAxis2D == null) { // 1D time or no time for (int i = 0; i < runtimeAxis.getSize(); i++) readAllTimes1D(cover, dt, runtimeAxis.getCalendarDate(i), i, timeAxis1D, ensAxis, vertAxis); } else { // 2D time TimeHelper helper = TimeHelper.factory(timeAxis.getUnitsString(), timeAxis.getAttributeContainer()); if (timeAxis2D.isInterval()) { ArrayDouble.D3 bounds = timeAxis2D.getCoordBoundsArray(); for (int i = 0; i < runtimeAxis.getSize(); i++) readAllTimes2D(cover, dt, runtimeAxis.getCalendarDate(i), i, helper, bounds.slice(0, i), ensAxis, vertAxis); } else { ArrayDouble.D2 coords = timeAxis2D.getCoordValuesArray(); for (int i = 0; i < runtimeAxis.getSize(); i++) readAllTimes2D(cover, dt, runtimeAxis.getCalendarDate(i), i, helper, coords.slice(0, i), ensAxis, vertAxis); } } }
@Test @Category(NeedsCdmUnitTest.class) public void testRegular() throws Exception { try(GridDataset dataset = GridDataset.open(TestDir.cdmUnitTestDir + "conventions/nuwg/03061219_ruc.nc")) { GeoGrid grid = dataset.findGridByName("T"); assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; assert grid.getRank() == 4; CoordinateAxis zaxis = gcs.getVerticalAxis(); assert zaxis.getUnitsString().equals("hectopascals"); GeoGrid grid_section = grid.subset(null, null, null, 3, 3, 3); GridCoordSystem gcs_section = grid_section.getCoordinateSystem(); CoordinateAxis zaxis2 = gcs_section.getVerticalAxis(); assert zaxis2.getSize() == 7; assert zaxis2.getUnitsString().equals("hectopascals"); assert gcs_section.getTimeAxis().equals(gcs.getTimeAxis()); Array data = grid_section.readDataSlice(-1, -1, -1, -1); assert data.getShape()[0] == 2 : data.getShape()[0]; assert data.getShape()[1] == 7 : data.getShape()[1]; assert data.getShape()[2] == 22 : data.getShape()[2]; assert data.getShape()[3] == 31 : data.getShape()[3]; // check axes for (CoordinateAxis axis : gcs_section.getCoordinateAxes()) { assert axis.getAxisType() != null; } } }
@Test @Category(NeedsCdmUnitTest.class) public void testWRF() throws Exception { try(GridDataset dataset = GridDataset.open(TestDir.cdmUnitTestDir + "conventions/wrf/wrfout_v2_Lambert.nc")) { GeoGrid grid = dataset.findGridByName("T"); assert null != grid; GridCoordSystem gcs = grid.getCoordinateSystem(); assert null != gcs; assert grid.getRank() == 4; CoordinateAxis zaxis = gcs.getVerticalAxis(); assert zaxis.getSize() == 27; VerticalTransform vt = gcs.getVerticalTransform(); assert vt != null; assert vt.getUnitString().equals("Pa"); GeoGrid grid_section = grid.subset(null, null, null, 3, 3, 3); Array data = grid_section.readDataSlice(-1, -1, -1, -1); assert data.getShape()[0] == 13 : data.getShape()[0]; assert data.getShape()[1] == 9 : data.getShape()[1]; assert data.getShape()[2] == 20 : data.getShape()[2]; assert data.getShape()[3] == 25 : data.getShape()[3]; GridCoordSystem gcs_section = grid_section.getCoordinateSystem(); CoordinateAxis zaxis2 = gcs_section.getVerticalAxis(); assert zaxis2.getSize() == 9 : zaxis2.getSize(); assert zaxis2.getUnitsString().equals(zaxis.getUnitsString()); assert gcs_section.getTimeAxis().equals(gcs.getTimeAxis()); VerticalTransform vt_section = gcs_section.getVerticalTransform(); assert vt_section != null; assert vt_section.getUnitString().equals(vt.getUnitString()); } }
assert null == gcs.getVerticalAxis(); CoordinateAxis time = gcs.getTimeAxis(); Assert.assertNotNull("time axis", time); Assert.assertEquals(36, time.getSize());
@Test public void testSingleDataset() throws IOException { Catalog cat = TdsLocalCatalog.open(null); Dataset ds = cat.findDatasetByID("testDataset2"); assert (ds != null) : "cant find dataset 'testDataset'"; assert ds.getFeatureType() == FeatureType.GRID; DataFactory fac = new DataFactory(); try (DataFactory.Result dataResult = fac.openFeatureDataset(ds, null)) { Assert.assertTrue(dataResult.errLog.toString(), !dataResult.fatalError); Assert.assertNotNull(dataResult.featureDataset); Assert.assertEquals( ucar.nc2.dt.grid.GridDataset.class, dataResult.featureDataset.getClass()); ucar.nc2.dt.grid.GridDataset gds = ( ucar.nc2.dt.grid.GridDataset) dataResult.featureDataset; String gridName = "Z_sfc"; VariableSimpleIF vs = gds.getDataVariable(gridName); Assert.assertNotNull(gridName, vs); GeoGrid grid = gds.findGridByShortName(gridName); Assert.assertNotNull(gridName, grid); GridCoordSystem gcs = grid.getCoordinateSystem(); Assert.assertNotNull(gcs); assert null == gcs.getVerticalAxis(); CoordinateAxis time = gcs.getTimeAxis(); Assert.assertNotNull("time axis", time); Assert.assertEquals(1, time.getSize()); Array data = time.read(); Assert2.assertNearlyEquals(102840.0, data.getFloat(0)); } }
@Test public void testReadData() throws IOException { GridDatatype g = gds.findGridDatatype("IR_WV"); assert null != g; assert g.getFullName().equals("IR_WV"); assert g.getRank() == 3; assert g.getShape()[0] == ntimes; assert g.getShape()[1] == 1008; assert g.getShape()[2] == 1536; assert g.getDataType() == DataType.USHORT : g.getDataType(); GridCoordSystem gsys = g.getCoordinateSystem(); assert gsys.getXHorizAxis() != null; assert gsys.getYHorizAxis() != null; assert gsys.getTimeAxis() != null; assert gsys.getVerticalAxis() == null; assert gsys.getProjection() != null; Array data = g.readVolumeData(0); assert data.getRank() == 2; assert data.getShape()[0] == 1008; assert data.getShape()[1] == 1536; assert data.getElementType() == short.class; } }