@Override public CoverageCoordAxis findCoordAxis(String want) { for (CoverageCoordAxis axis : axes) if (axis.getName().equals(want)) return axis; return null; } }
private boolean alreadyHave(List<CoverageCoordAxis> list, String name) { for (CoverageCoordAxis coord : list) if (coord.getName().equals(name)) return true; return false; }
public CoverageCoordAxis findCoordAxis(String axisName) { for (CoverageCoordAxis axis : axes) { if (axis.getName().equalsIgnoreCase(axisName)) return axis; } return null; } }
@Override public CoverageCoordAxis findCoordAxis(String axisName) { for (CoverageCoordAxis axis : axes) { if (axis.getName().equalsIgnoreCase(axisName)) return axis; } return null; } }
CoverageCoordAxis1D findIndependentAxis(String want, List<CoverageCoordAxis> axes) { String name = want == null ? null : want.trim(); for (CoverageCoordAxis axis : axes) if (axis instanceof CoverageCoordAxis1D && axis.getName().equalsIgnoreCase(name)) return (CoverageCoordAxis1D) axis; return null; }
public List<CoverageCoordAxis> getDependentAxes(CoverageCoordAxis indAxis) { List<CoverageCoordAxis> result = dependentMap.get(indAxis.getName()); return (result == null) ? new ArrayList<>() : result; }
public String getIndependentAxisNamesOrdered() { StringBuilder sb = new StringBuilder(); for (CoverageCoordAxis axis : coordSys.getAxes()) { if (!(axis.getDependenceType() == CoverageCoordAxis.DependenceType.independent)) continue; sb.append(axis.getName()); sb.append(" "); } return sb.toString(); }
private CoverageCoordAxis1D findDependent( CoverageCoordAxis independentAxis, AxisType axisType) { for (CoverageCoordAxis axis : axes) { if (axis.getDependenceType() == CoverageCoordAxis.DependenceType.dependent) { for (String axisName : axis.dependsOn) { if (axisName.equalsIgnoreCase(independentAxis.getName()) && axis.getAxisType() == axisType) return (CoverageCoordAxis1D) axis; } } } return null; } }
private void addDimensions(CoverageCollection subsetDataset, NetcdfFileWriter writer) { // each independent coordinate is a dimension Map<String, Dimension> dimHash = new HashMap<>(); for (CoverageCoordAxis axis : subsetDataset.getCoordAxes()) { if (axis.getDependenceType() == CoverageCoordAxis.DependenceType.independent) { Dimension d = writer.addDimension(null, axis.getName(), axis.getNcoords()); dimHash.put(axis.getName(), d); } if (axis.isInterval()) { if (null == dimHash.get(BOUNDS_DIM)) { Dimension d = writer.addDimension(null, BOUNDS_DIM, 2); dimHash.put(BOUNDS_DIM, d); } } } }
private void writeCoordinateData(CoverageCollection subsetDataset, NetcdfFileWriter writer) throws IOException, InvalidRangeException { for (CoverageCoordAxis axis : subsetDataset.getCoordAxes()) { Variable v = writer.findVariable(axis.getName()); if (v != null) { if (show) System.out.printf("CFGridCoverageWriter2 write axis %s%n", v.getNameAndDimensions()); writer.write(v, axis.getCoordsAsArray()); } else { logger.error("CFGridCoverageWriter2 No variable for %s%n", axis.getName()); } if (axis.isInterval()) { Variable vb = writer.findVariable(axis.getName() + BOUNDS); writer.write(vb, axis.getCoordBoundsAsArray()); } } }
private static CoverageCoordSys makeCoordSys(DtCoverageCS dt, Map<String, CoverageCoordAxis> covAxesMap) { List<String> transformNames = new ArrayList<>(); for (CoordinateTransform ct : dt.getCoordTransforms()) transformNames.add(ct.getName()); Set<CoverageCoordAxis> covAxes = new HashSet<>(); for (CoordinateAxis axis : dt.getCoordAxes()) { CoverageCoordAxis covAxis = covAxesMap.get(axis.getFullName()); if (covAxis == null) continue; // some may have been rejected covAxes.add(covAxis); for (String dep : covAxis.getDependsOnList()) { // add in dependencies CoverageCoordAxis depAxis = covAxesMap.get(dep); if (depAxis != null) covAxes.add(depAxis); } } // make list of names - sorted by axis type List<CoverageCoordAxis> covAxesList = new ArrayList<>(covAxes); Collections.sort(covAxesList); List<String> covAxesNames = new ArrayList<>(); for (CoverageCoordAxis axis : covAxesList) covAxesNames.add(axis.getName()); return new CoverageCoordSys(dt.getName(), covAxesNames, transformNames, dt.getCoverageType()); }
List<CoverageCoordAxis> coordList = coord2axisMap.get(axis); if (coordList != null) { for (CoverageCoordAxis coord : coordList) names.add(new NameAndType(coord.getName(), coord.getAxisType()));
return readLatLonAxis2DCoordValues((LatLonAxis2D) coordAxis); java.util.Optional<Coordinate> opt = group.findCoordinate(coordAxis.getName()); if (!opt.isPresent()) throw new IllegalStateException(); Coordinate coord = opt.get();
private List<CoordSysSet> wireObjectsTogether(List<Coverage> coverages) { for (CoverageCoordAxis axis : coordAxes) axisMap.put(axis.getName(), axis); for (CoverageCoordAxis axis : coordAxes) axis.setDataset(this); // wire dependencies Map<String, CoordSysSet> map = new HashMap<>(); for (Coverage coverage : coverages) { coverageMap.put(coverage.getName(), coverage); CoordSysSet gset = map.get(coverage.getCoordSysName()); // duplicates get eliminated here if (gset == null) { CoverageCoordSys ccsys = findCoordSys(coverage.getCoordSysName()); if (ccsys == null) { throw new IllegalStateException("Cant find "+coverage.getCoordSysName()); } gset = new CoordSysSet(ccsys); // must use findByName because objects arent wired up yet map.put(coverage.getCoordSysName(), gset); gset.getCoordSys().setDataset(this); // wire dataset into coordSys } gset.addCoverage(coverage); coverage.setCoordSys(gset.getCoordSys()); // wire coordSys into coverage } // sort the coordsys sets List<CoordSysSet> csets = new ArrayList<>(map.values()); Collections.sort(csets, (o1, o2) -> o1.getCoordSys().getName().compareTo(o2.getCoordSys().getName())); return csets; }
private void addCoordinateAxes(CoverageCollection subsetDataset, NetcdfFileWriter writer) { for (CoverageCoordAxis axis : subsetDataset.getCoordAxes()) { String dims; if (axis.getDependenceType() == CoverageCoordAxis.DependenceType.independent) { dims = axis.getName(); } else if (axis.getDependenceType() == CoverageCoordAxis.DependenceType.scalar) { dims = ""; } else { dims = axis.getDependsOn(); } boolean hasBounds = false; if (axis.isInterval()) { Variable vb = writer.addVariable(null, axis.getName()+BOUNDS, axis.getDataType(), dims+" "+BOUNDS_DIM); vb.addAttribute(new Attribute(CDM.UNITS, axis.getUnits())); hasBounds = true; } Variable v = writer.addVariable(null, axis.getName(), axis.getDataType(), dims); addVariableAttributes(v, axis.getAttributes()); v.addAttribute(new Attribute(CDM.UNITS, axis.getUnits())); // override what was in att list if (hasBounds) v.addAttribute(new Attribute(CF.BOUNDS, axis.getName()+BOUNDS)); if (axis.getAxisType() == AxisType.TimeOffset) v.addAttribute(new Attribute(CF.STANDARD_NAME, CF.TIME_OFFSET)); } }
@Override public double[] readCoordValues(CoverageCoordAxis coordAxis) throws IOException { ucar.nc2.dataset.CoordinateAxis dtCoordAxis = proxy.getNetcdfDataset().findCoordinateAxis(coordAxis.getName()); if (dtCoordAxis == null) throw new IllegalStateException("Cants find Coordinate Axis " + coordAxis.getName());
@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()); } } } }
CdmrFeatureProto.CoordAxis.Builder encodeCoordAxis(CoverageCoordAxis axis) { CdmrFeatureProto.CoordAxis.Builder builder = CdmrFeatureProto.CoordAxis.newBuilder(); builder.setName(axis.getName()); builder.setDataType(NcStream.convertDataType(axis.getDataType())); builder.setAxisType(convertAxisType(axis.getAxisType()));
@Ignore("files not present") @Test public void testGridCoverageDatasetFmrc() throws IOException, InvalidRangeException { System.out.printf("%s%n", filename); try (FeatureDatasetCoverage fdc = CoverageDatasetFactory.open(filename)) { Assert.assertNotNull(filename, fdc); CoverageCollection cc = fdc.findCoverageDataset(FeatureType.GRID); Assert.assertNotNull(FeatureType.GRID.toString(), cc); 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())); } 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()); } } } }