@Test public void TestTwoDRead() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "gribCollections/gfs_conus80/gfsConus80_file.ncx4"; logger.debug("open {}", endpoint); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { assert cc != null; Assert.assertEquals(2, cc.getCoverageCollections().size()); CoverageCollection gds = cc.getCoverageCollections().get(0); Assert.assertEquals(FeatureType.FMRC, gds.getCoverageType()); String covName = "Temperature_isobaric"; Coverage cover = gds.findCoverage(covName); Assert.assertNotNull(covName, cover); long size = cover.getSizeInBytes(); Assert.assertEquals(6*36*29*65*93*4, size); // LOOK if we dont set the runtime, assume latest. driven by Cdmrf spec. could be different. SubsetParams subset = new SubsetParams().setVertCoord(300.0).setTime(useDate); GeoReferencedArray geo = cover.readData(subset); Array data = geo.getData(); logger.debug("{}", Misc.showInts(data.getShape())); Assert.assertArrayEquals(new int[] {1,1,1,65,93}, data.getShape()); float first = data.getFloat(0); float last = data.getFloat((int)data.getSize()-1); logger.debug("data first = {} last = {}", first, last); Assert2.assertNearlyEquals(241.699997, first); Assert2.assertNearlyEquals(225.099991, last); } }
subset.setRunTime(rt_val); if (time_val != null) subset.setTime(time_val); if (time_offset != null) subset.setTimeOffset(time_offset);
@Test public void testBestTimeCoord() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "gribCollections/gfs_2p5deg/gfs_2p5deg.ncx4"; String covName = "Temperature_altitude_above_msl"; logger.debug("testBestPresent Dataset {} coverage {}", endpoint, covName); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { Assert.assertNotNull(endpoint, cc); CoverageCollection gcs = cc.findCoverageDataset(FeatureType.GRID); Assert.assertNotNull("gcs", gcs); Coverage cover = gcs.findCoverage(covName); Assert.assertNotNull(covName, cover); SubsetParams params = new SubsetParams(); params.setTime(CalendarDate.parseISOformat(null, "2015-03-03T00:00:00Z")); params.setVertCoord(3658.0); logger.debug(" subset {}", params); GeoReferencedArray geo = cover.readData(params); // should not be missing ! assert !Float.isNaN(geo.getData().getFloat(0)); Array data = geo.getData(); Index ai = data.getIndex(); float testValue = data.getFloat(ai.set(0, 0, 0, 0)); Assert2.assertNearlyEquals(244.3f, testValue); } }
@Test public void TestBestRead() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "gribCollections/gfs_conus80/gfsConus80_file.ncx4"; logger.debug("open {}", endpoint); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { assert cc != null; Assert.assertEquals(2, cc.getCoverageCollections().size()); CoverageCollection gds = cc.getCoverageCollections().get(1); Assert.assertEquals(FeatureType.GRID, gds.getCoverageType()); String covName = "Temperature_isobaric"; Coverage cover = gds.findCoverage(covName); Assert.assertNotNull(covName, cover); long size = cover.getSizeInBytes(); Assert.assertEquals(41*29*65*93*4, size); SubsetParams subset = new SubsetParams().setVertCoord(300.0).setTime(useDate); GeoReferencedArray geo = cover.readData(subset); Array data = geo.getData(); logger.debug("{}", Misc.showInts(data.getShape())); Assert.assertArrayEquals(new int[] {1,1,65,93}, data.getShape()); float first = data.getFloat(0); float last = data.getFloat((int)data.getSize()-1); logger.debug("data first = {} last = {}", first, last); Assert2.assertNearlyEquals(241.699997, first); Assert2.assertNearlyEquals(225.099991, last); } }