private void addCoordTransforms(CoverageCollection subsetDataset, NetcdfFileWriter writer) { for (CoverageTransform ct : subsetDataset.getCoordTransforms()) { // scalar coordinate transform variable - container for transform info Variable ctv = writer.addVariable(null, ct.getName(), DataType.INT, ""); for (Attribute att : ct.getAttributes()) ctv.addAttribute(att); } }
@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()); } } }
CdmrFeatureProto.CoverageDataset.Builder encodeHeader(CoverageCollection gridDataset, String location) { CdmrFeatureProto.CoverageDataset.Builder builder = CdmrFeatureProto.CoverageDataset.newBuilder(); builder.setName(location); builder.setCoverageType(convertCoverageType(gridDataset.getCoverageType())); builder.setDateRange(encodeDateRange(gridDataset.getCalendarDateRange())); if (gridDataset.getLatlonBoundingBox() != null) builder.setLatlonRect(encodeRectangle(gridDataset.getLatlonBoundingBox())); if (gridDataset.getProjBoundingBox() != null) builder.setProjRect(encodeRectangle(gridDataset.getProjBoundingBox())); for (Attribute att : gridDataset.getGlobalAttributes()) builder.addAtts(NcStream.encodeAtt(att)); for (CoverageCoordSys gcs : gridDataset.getCoordSys()) builder.addCoordSys(encodeCoordSys(gcs)); for (CoverageTransform gct : gridDataset.getCoordTransforms()) builder.addCoordTransforms(encodeCoordTransform(gct)); for (CoverageCoordAxis axis : gridDataset.getCoordAxes()) builder.addCoordAxes(encodeCoordAxis(axis)); for (Coverage grid : gridDataset.getCoverages()) builder.addGrids(encodeGrid(grid)); return builder; }
for (CoverageTransform ct : gcd.getCoordTransforms()) { rootElem.addContent(writeCoordTransform(ct));