Optional<CoverageCoordAxisBuilder> subsetContaining(double want) { int index = findCoordElement(want, false); // not bounded, may not be valid index if (index < 0 || index >= axis.getNcoords()) return Optional.empty(String.format("value %f not in axis %s", want, axis.getName())); double val = axis.getCoordMidpoint(index); CoverageCoordAxisBuilder builder = new CoverageCoordAxisBuilder(axis); builder.subset(1, val, val, 0.0, makeValues(index)); try { builder.setRange(new Range(index, index)); } catch (InvalidRangeException e) { throw new RuntimeException(e); // cant happen } return Optional.of(builder); }
.subset(runAxisSubset2.getName(), CoverageCoordAxis.Spacing.irregularPoint, ncoords, offsetValues); // aux coord (LOOK interval) ?? CoverageCoordAxis1D timeOffsetSubset = new TimeOffsetAxis(timebuilder);
private void addLatLon2D(CoverageCollection subsetDataset, NetcdfFileWriter writer) { HorizCoordSys horizCoordSys = subsetDataset.getHorizCoordSys(); CoverageCoordAxis1D xAxis = horizCoordSys.getXAxis(); CoverageCoordAxis1D yAxis = horizCoordSys.getYAxis(); Dimension xDim = writer.findDimension(xAxis.getName()); Dimension yDim = writer.findDimension(yAxis.getName()); assert xDim != null : "We should've added X dimension in addDimensions()."; assert yDim != null : "We should've added Y dimension in addDimensions()."; List<Dimension> dims = Arrays.asList(yDim, xDim); Variable latVar = writer.addVariable("lat", DataType.DOUBLE, dims); latVar.addAttribute(new Attribute(CDM.UNITS, CDM.LAT_UNITS)); latVar.addAttribute(new Attribute(CF.STANDARD_NAME, CF.LATITUDE)); latVar.addAttribute(new Attribute(CDM.LONG_NAME, "latitude coordinate")); latVar.addAttribute(new Attribute(_Coordinate.AxisType, AxisType.Lat.toString())); Variable lonVar = writer.addVariable("lon", DataType.DOUBLE, dims); lonVar.addAttribute(new Attribute(CDM.UNITS, CDM.LON_UNITS)); lonVar.addAttribute(new Attribute(CF.STANDARD_NAME, CF.LONGITUDE)); lonVar.addAttribute(new Attribute(CDM.LONG_NAME, "longitude coordinate")); lonVar.addAttribute(new Attribute(_Coordinate.AxisType, AxisType.Lon.toString())); }
private CoverageCoordAxis makeCFTimeCoord(CoverageCoordAxis1D runAxisSubset, CoverageCoordAxis1D timeAxisSubset) { String name = timeAxisSubset.getName()+"Forecast"; String desc = "forecast time"; AttributeContainerHelper atts = new AttributeContainerHelper(name); builder.attributes = atts; builder.dependenceType = CoverageCoordAxis.DependenceType.dependent; builder.setDependsOn(timeAxisSubset.getName());
private CoverageCoordAxis makeCFTimeCoord(CoverageCoordAxis1D runAxisSubset, CoverageCoordAxis1D timeAxisSubset) { String name = timeAxisSubset.getName()+"Forecast"; String desc = "forecast time"; AttributeContainerHelper atts = new AttributeContainerHelper(name); builder.attributes = atts; builder.dependenceType = CoverageCoordAxis.DependenceType.dependent; builder.setDependsOn(timeAxisSubset.getName());