@Override public int[] getShape() { if (runAxis.isScalar()) return new int[] {timeOffset.getNcoords()}; else return new int[] {runAxis.getNcoords(), timeOffset.getNcoords()}; }
@Override public CoverageCoordAxis copy() { return new TimeOffsetAxis(new CoverageCoordAxisBuilder(this)); }
@Override public Optional<CoverageCoordAxis> subset(SubsetParams params) { Optional<CoverageCoordAxisBuilder> buildero = subsetBuilder(params); return !buildero.isPresent() ? Optional.empty(buildero.getErrorMessage()) : Optional.of(new TimeOffsetAxis(buildero.get())); }
if (rt_val != null) Assert.assertEquals(rt_val, runDate); Assert.assertEquals(1, timeOffsetAxis.getNcoords()); if (timeOffsetAxis.isInterval()) { CalendarDate edge1 = timeOffsetAxis.makeDate(timeOffsetAxis.getCoordEdge1(0)); CalendarDate edge2 = timeOffsetAxis.makeDate(timeOffsetAxis.getCoordEdge2(0)); double val2 = timeOffsetAxis.getCoordMidpoint(0); CalendarDate forecastDate = timeOffsetAxis.makeDate(runDate, val2); Assert.assertEquals(time_val, forecastDate); if (timeOffsetAxis.isInterval()) { Assert.assertTrue(timeOffsetAxis.getCoordEdge1(0) <= time_offset); Assert.assertTrue(timeOffsetAxis.getCoordEdge2(0) >= time_offset); double val2 = timeOffsetAxis.getCoordMidpoint(0); Assert2.assertNearlyEquals(val2, time_offset);
axiso = timeOffset.subset(params); if (!axiso.isPresent()) return Optional.empty(axiso.getErrorMessage()); double val = runAxisSubset.getCoordMidpoint(0); // not sure runAxis is needed. maybe use runtimeSubset CalendarDate runDate = runAxisSubset.makeDate(val); Optional<TimeOffsetAxis> too = timeOffset.subsetFromTime(params, runDate); if (!too.isPresent()) return Optional.empty(too.getErrorMessage()); double start = timeOffset.getStartValue(); double end = timeOffset.getEndValue(); CoordAxisHelper helper = new CoordAxisHelper(timeOffset); CoverageCoordAxis1D timeOffsetSubset = new TimeOffsetAxis(timebuilder);
public Optional<TimeOffsetAxis> subsetFromTime(SubsetParams params, CalendarDate runDate) { CoordAxisHelper helper = new CoordAxisHelper(this); CoverageCoordAxisBuilder builder = null; if (params.isTrue(SubsetParams.timePresent)) { double offset = getOffsetInTimeUnits(runDate, CalendarDate.present()); builder = helper.subsetClosest(offset); } CalendarDate dateWanted = (CalendarDate) params.get(SubsetParams.time); if (dateWanted != null) { // convertFrom, convertTo double offset = getOffsetInTimeUnits(runDate, dateWanted); builder = helper.subsetClosest(offset); } Integer stride = (Integer) params.get(SubsetParams.timeStride); if (stride == null || stride < 0) stride = 1; CalendarDateRange dateRange = (CalendarDateRange) params.get(SubsetParams.timeRange); if (dateRange != null) { double min = getOffsetInTimeUnits(runDate, dateRange.getStart()); double max = getOffsetInTimeUnits(runDate, dateRange.getEnd()); Optional<CoverageCoordAxisBuilder> buildero = helper.subset(min, max, stride); if (buildero.isPresent()) builder = buildero.get(); else return Optional.empty(buildero.getErrorMessage()); } assert (builder != null); // all the offsets are reletive to rundate builder.setReferenceDate(runDate); return Optional.of(new TimeOffsetAxis(builder)); }
CalendarDate runDate = runAxis.makeDate(val); Assert.assertEquals(rt_val, runDate); Assert.assertEquals(1, timeOffsetAxis.getNcoords()); if (timeOffsetAxis.isInterval()) { CalendarDate edge1 = timeOffsetAxis.makeDate(runDate, timeOffsetAxis.getCoordEdge1(0)); CalendarDate edge2 = timeOffsetAxis.makeDate(runDate, timeOffsetAxis.getCoordEdge2(0)); double val2 = timeOffsetAxis.getCoordMidpoint(0); CalendarDate forecastDate = timeOffsetAxis.makeDate(runDate, val2); Assert.assertEquals(time_val, forecastDate); if (timeOffsetAxis.isInterval()) { Assert.assertTrue(timeOffsetAxis.getCoordEdge1(0) <= time_offset); Assert.assertTrue(timeOffsetAxis.getCoordEdge2(0) >= time_offset); double val2 = timeOffsetAxis.getCoordMidpoint(0); Assert2.assertNearlyEquals(val2, time_offset);
@Override public Optional<CoverageCoordAxis> subset(double minValue, double maxValue, int stride) { CoordAxisHelper helper = new CoordAxisHelper(this); Optional<CoverageCoordAxisBuilder> buildero = helper.subset(minValue, maxValue, stride); return !buildero.isPresent() ? Optional.empty(buildero.getErrorMessage()) : Optional.of(new TimeOffsetAxis(buildero.get())); }
return new LatLonAxis2D(builder); } else if (axisType == AxisType.TimeOffset) { return new TimeOffsetAxis(builder); } else { return new CoverageCoordAxis1D(builder);
return ucar.nc2.util.Optional.of(new TimeOffsetAxis(builder)); else return ucar.nc2.util.Optional.of(new CoverageCoordAxis1D(builder));
builder.setSpacingFromValues(time2D.isTimeInterval()); return new TimeOffsetAxis(builder);