Double dval = params.getVertCoord(); if (dval != null) return Optional.of(helper.subsetClosest(dval)); return Optional.of(helper.subsetClosest((intv[0]+intv[1])/2)); Double eval = params.getDouble(SubsetParams.ensCoord); if (eval != null) { return Optional.of(helper.subsetClosest(eval)); return Optional.of(helper.subsetClosest(date)); if (runtime != null) { date = makeDateInTimeUnits(runtime, timeOffset); return Optional.of(helper.subsetClosest(date)); } else { return Optional.of(helper.subsetClosest(timeOffset)); dateIntv[0] = makeDateInTimeUnits(runtime, timeOffsetIntv[0]); dateIntv[1] = makeDateInTimeUnits(runtime, timeOffsetIntv[1]); return Optional.of(helper.subsetClosest(dateIntv)); CalendarDate rundate = (CalendarDate) params.get(SubsetParams.runtime); if (rundate != null) return Optional.of(helper.subsetClosest(rundate)); Double oval = params.getDouble(SubsetParams.timeOffset); if (oval != null) { return Optional.of(helper.subsetClosest(oval));
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)); }