void testCoverage(String endpoint) throws IOException, InvalidRangeException { System.out.printf("open CoverageDatasetFactory %s%n", endpoint); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { assert cc != null; CoverageCollection gds = cc.findCoverageDataset(what); Assert.assertEquals(what, gds.getCoverageType()); } }
/** * * @param endpoint cdmrFeature:url, local GRIB data or index file, or NetcdfDataset location * @return FeatureDatasetCoverage or null on failure. use openCoverageDataset to get error message * @throws IOException */ static public FeatureDatasetCoverage open(String endpoint) throws IOException { Optional<FeatureDatasetCoverage> opt = openCoverageDataset(endpoint); return opt.isPresent() ? opt.get() : null; }
Optional<FeatureDatasetCoverage> opt = CoverageDatasetFactory.openGrib(location); if (opt.isPresent()) { // its a GRIB file return opt.get();
@Test public void testGridCoverageDatasetFmrc() throws IOException, InvalidRangeException { try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { Assert.assertNotNull(endpoint, cc); CoverageCollection gcs = cc.findCoverageDataset(FeatureType.FMRC); if (gcs == null) return; logger.debug("testGridCoverageDatasetFmrc {}", endpoint); Coverage cover = gcs.findCoverage(covName); Assert.assertNotNull(covName, cover); readOne(cover, rt_val, time_val, time_offset, vert_level); } }
@Test public void testReadGridCoverageSlice() throws IOException, InvalidRangeException { logger.debug("Test Dataset {} coverage {}", endpoint, covName); FeatureDatasetCoverage cc = null; try { Optional<FeatureDatasetCoverage> opt = CoverageDatasetFactory.openCoverageDataset(endpoint); Assert.assertTrue(opt.getErrorMessage(), opt.isPresent()); cc = opt.get(); Assert.assertNotNull(endpoint, cc); Assert.assertEquals(1, cc.getCoverageCollections().size()); CoverageCollection gcs = cc.getCoverageCollections().get(0); Assert.assertNotNull("gcs", gcs); Coverage cover = gcs.findCoverage(covName); Assert.assertNotNull(covName, cover); readOne(cover, rt_val, time_val, time_offset, vert_level); } finally { if (cc != null) cc.close(); } }
if (durl.serviceType == null) { // skip GRIB check for anything not a plain ole file Optional<FeatureDatasetCoverage> opt = openGrib(endpoint); if (opt.isPresent()) return opt; if (opt.getErrorMessage() == null)
static int timeDataRead2(String remote, int stride) throws IOException, InvalidRangeException { logger.debug("--Coverage Read {} stride={} ", remote, stride); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(remote)) { CoverageCollection gcs = cc.getSingleCoverageCollection(); String gridName = "10_metre_V_wind_component_surface"; Coverage grid = gcs.findCoverage(gridName); Assert.assertNotNull(gridName, grid); SubsetParams params = new SubsetParams().setTimePresent().setHorizStride(stride); long start = System.currentTimeMillis(); GeoReferencedArray geo = grid.readData(params); long took = System.currentTimeMillis() - start; logger.debug("took={} size={}", took, geo.getData().getSize()); } return 1; } }
@Test public void testFactory() throws IOException { try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { assert cc != null; Assert.assertEquals(1, cc.getCoverageCollections().size()); CoverageCollection gds = cc.getCoverageCollections().get(0); Assert.assertNotNull(endpoint, gds); Assert.assertEquals("NGrids", ncoverages, gds.getCoverageCount()); Assert.assertEquals(expectType, gds.getCoverageType()); } }
@Test public void testGridCoverageDatasetBest() throws IOException, InvalidRangeException { logger.debug("testGridCoverageDatasetBest {}", endpoint); 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); // Cant subset on runtime for Best, so we set to null readOne(cover, null, time_val, time_offset, vert_level); } }
@Test public void testLatLonCoordTransformAddedToCollection() throws IOException { String filename = TestDir.cdmUnitTestDir + "gribCollections/gfs_2p5deg/GFS_Global_2p5deg_20150301_0000.grib2.ncx4"; try (FeatureDatasetCoverage featDsetCov = CoverageDatasetFactory.open(filename)) { Assert.assertEquals(1, featDsetCov.getCoverageCollections().size()); CoverageCollection covColl = featDsetCov.getCoverageCollections().get(0); Assert.assertEquals(1, covColl.getCoordTransforms().size()); CoverageTransform covTransform = covColl.getCoordTransforms().get(0); Assert.assertTrue(covTransform.getProjection() instanceof LatLonProjection); Attribute gridMappingNameAttrib = covTransform.findAttribute("grid_mapping_name"); Assert.assertNotNull("CoverageTransform didn't contain 'grid_mapping_name' attribute.", gridMappingNameAttrib); Assert.assertEquals("latitude_longitude", gridMappingNameAttrib.getStringValue()); } } }
@Test public void TestCFWriterCoverageSize() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "ncss/GFS/CONUS_80km/GFS_CONUS_80km_20120227_0000.grib1"; logger.info("open {}", endpoint); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { assert cc != null; Assert.assertEquals(1, cc.getCoverageCollections().size()); CoverageCollection gds = cc.getCoverageCollections().get(0); Assert.assertNotNull(endpoint, gds); Assert.assertEquals(FeatureType.GRID, gds.getCoverageType()); // CFGridCoverageWriter2 adds another (dependent) time coordinate, so we need to test this case ucar.nc2.util.Optional<Long> opt = CFGridCoverageWriter2.writeOrTestSize(gds, Lists.newArrayList("Temperature_isobaric"), new SubsetParams(), false, true, null); Assert.assertTrue(opt.isPresent()); long size = opt.get(); Assert.assertEquals(25245084, size); // Includes sizes of non-coverage variables. } }
public int readCoverageDataset() throws IOException { kind = KIND_COVERAGE; int countFailures = 0; try (FeatureDatasetCoverage fdc = CoverageDatasetFactory.open(filename)) { Attribute att = fdc.findGlobalAttributeIgnoreCase("file_format"); isGrib1 = att.getStringValue().equalsIgnoreCase("GRIB-1"); for (CoverageCollection cc : fdc.getCoverageCollections()) { for (Coverage cover : cc.getCoverages()) { if (readCoverage(cover)) counters.count(kind, "success"); else { counters.count(kind, "fail"); countFailures++; } } } } return countFailures; }
try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { Assert.assertNotNull(endpoint, cc); CoverageCollection gcs = cc.findCoverageDataset(type); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(tempFile.getPath())) { Assert.assertNotNull(endpoint, cc); Assert.assertEquals(1, cc.getCoverageCollections().size());
@Test public void testGridCoverageDatasetRdavm() throws IOException, InvalidRangeException { if (showDetails) System.out.printf("%s%n", filename); try (FeatureDatasetCoverage fdc = CoverageDatasetFactory.open(filename)) { Assert.assertNotNull(filename, fdc); for (CoverageCollection cc : fdc.getCoverageCollections()) { System.out.printf(" %s type=%s%n", cc.getName(), cc.getCoverageType()); //for (CoverageCoordSys coordSys : cc.getCoordSys()) { //Assert.assertTrue( coordSys.isTime2D(coordSys.getAxis(AxisType.RunTime))); //Assert.assertTrue( coordSys.isTime2D(coordSys.getTimeAxis())); //} if (showDetails) for (CoverageCoordAxis axis : cc.getCoordAxes()) { if (axis.getAxisType().isTime()) System.out.printf(" %12s %10s %5d %10s %s%n", axis.getName(), axis.getAxisType(), axis.getNcoords(), axis.getDependenceType(), axis.getSpacing()); } } } }
try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(tempFile.getPath())) { Assert.assertNotNull(tempFile.getPath(), cc); Assert.assertEquals(1, cc.getCoverageCollections().size());
@Test public void testSrcNoParams() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "ncss/GFS/CONUS_80km/GFS_CONUS_80km_20120227_0000.grib1"; String covName = "Temperature_isobaric"; logger.debug("testSrcNoParams 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(); logger.debug(" subset {}", params); GeoReferencedArray geo = cover.readData(params); int[] resultShape = geo.getData().getShape(); int[] expectShape = new int[] {36, 29, 65, 93}; Assert.assertArrayEquals("shape", expectShape, resultShape); } }
@Test // there is no interval with offset value = 51 public void testNoIntervalFound() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "gribCollections/gfs_2p5deg/gfs_2p5deg.ncx4"; String covName = "Momentum_flux_u-component_surface_Mixed_intervals_Average"; logger.debug("test1Runtime1TimeOffset Dataset {} coverage {}", endpoint, covName); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { Assert.assertNotNull(endpoint, cc); CoverageCollection gcs = cc.findCoverageDataset(FeatureType.FMRC); Assert.assertNotNull("gcs", gcs); Coverage cover = gcs.findCoverage(covName); Assert.assertNotNull(covName, cover); SubsetParams params = new SubsetParams(); CalendarDate runtime = CalendarDate.parseISOformat(null, "2015-03-01T12:00:00Z"); params.set(SubsetParams.runtime, runtime); double offsetVal = 51.0; // should fail params.set(SubsetParams.timeOffset, offsetVal); logger.debug(" subset {}", params); GeoReferencedArray geo = cover.readData(params); testGeoArray(geo, runtime, null, offsetVal); // should be empty, but instead its a bunch of NaNs assert Float.isNaN(geo.getData().getFloat(0)); } }
System.out.printf(" write to %s%n", tempFile.getAbsolutePath()); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { Assert.assertNotNull(endpoint, cc); Assert.assertEquals(1, cc.getCoverageCollections().size()); try (FeatureDatasetCoverage gcs = CoverageDatasetFactory.open(tempFile.getPath())) { Assert.assertNull(tempFile.getPath(), gcs);
@Test // 1 runtime, 1 timeOffset (Time2DCoordSys case 1a) public void test1Runtime1TimeOffset() throws IOException, InvalidRangeException { String endpoint = TestDir.cdmUnitTestDir + "gribCollections/gfs_2p5deg/gfs_2p5deg.ncx4"; String covName = "Momentum_flux_u-component_surface_Mixed_intervals_Average"; logger.debug("test1Runtime1TimeOffset Dataset {} coverage {}", endpoint, covName); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { Assert.assertNotNull(endpoint, cc); CoverageCollection gcs = cc.findCoverageDataset(FeatureType.FMRC); Assert.assertNotNull("gcs", gcs); Coverage cover = gcs.findCoverage(covName); Assert.assertNotNull(covName, cover); SubsetParams params = new SubsetParams(); CalendarDate runtime = CalendarDate.parseISOformat(null, "2015-03-01T06:00:00Z"); params.set(SubsetParams.runtime, runtime); double offsetVal = 205.0; params.set(SubsetParams.timeOffset, offsetVal); logger.debug(" subset {}", params); GeoReferencedArray geo = cover.readData(params); testGeoArray(geo, runtime, null, offsetVal); // LOOK need to test data } }
@Test public void TestCoverageSize() throws IOException { String endpoint = TestDir.cdmUnitTestDir + "ncss/GFS/CONUS_80km/GFS_CONUS_80km_20120227_0000.grib1"; logger.info("open {}", endpoint); try (FeatureDatasetCoverage cc = CoverageDatasetFactory.open(endpoint)) { assert cc != null; Assert.assertEquals(1, cc.getCoverageCollections().size()); CoverageCollection gds = cc.getCoverageCollections().get(0); Assert.assertNotNull(endpoint, gds); 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(25243920, size); covName = "Relative_humidity_layer_between_two_sigmas_layer"; cover = gds.findCoverage(covName); Assert.assertNotNull(covName, cover); size = cover.getSizeInBytes(); Assert.assertEquals(870480, size); } }