@Test public void testCustomCloudCoverDimensionConvertion() throws IOException, ParseException { MockDimensionReader reader = new MockDimensionReader(); reader.metadata.put("HAS_MYDIM_DOMAIN", "true"); reader.metadata.put("MYDIM_DOMAIN_DATATYPE", "java.lang.Integer"); ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); List<Object> converted = accessor.convertDimensionValue("MYDIM", Arrays.asList("75/100")); assertEquals(1, converted.size()); NumberRange<Double> expected = new NumberRange<Double>(Double.class, 75d, 100d); assertEquals(expected, converted.get(0)); } }
@Test public void testCustomDepthDimensionConvertion() throws IOException, ParseException { MockDimensionReader reader = new MockDimensionReader(); reader.metadata.put("HAS_MYDIM_DOMAIN", "true"); reader.metadata.put("MYDIM_DOMAIN_DATATYPE", "java.lang.Double"); ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); List<Object> converted = accessor.convertDimensionValue("MYDIM", Arrays.asList("10/20")); assertEquals(1, converted.size()); NumberRange<Double> expected = new NumberRange<Double>(Double.class, 10d, 20d); assertEquals(expected, converted.get(0)); }
@Test public void testCustomTimeDimensionConvertion() throws IOException, ParseException { MockDimensionReader reader = new MockDimensionReader(); reader.metadata.put("HAS_MYDIM_DOMAIN", "true"); reader.metadata.put("MYDIM_DOMAIN_DATATYPE", "java.util.Date"); ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); List<Object> converted = accessor.convertDimensionValue( "MYDIM", Arrays.asList( "2001-05-01T00:00:00.000Z", "2001-05-02T00:00:00.000Z", "2001-05-03T00:00:00.000Z")); assertEquals(3, converted.size()); assertEquals(DF.parse("2001-05-01 00:00:00"), converted.get(0)); assertEquals(DF.parse("2001-05-02 00:00:00"), converted.get(1)); assertEquals(DF.parse("2001-05-03 00:00:00"), converted.get(2)); }
@Test public void testMixedElevationExtraction() throws IOException { MockDimensionReader reader = new MockDimensionReader(); reader.metadata.put(GridCoverage2DReader.HAS_ELEVATION_DOMAIN, "true"); reader.metadata.put(GridCoverage2DReader.ELEVATION_DOMAIN, "0/0/0,10,15/20/1"); ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); TreeSet<Object> domain = accessor.getElevationDomain(); assertEquals(3, domain.size()); Iterator<Object> it = domain.iterator(); Number firstEntry = (Number) it.next(); assertEquals(0, firstEntry.doubleValue(), 0d); Number secondEntry = (Number) it.next(); assertEquals(10, secondEntry.doubleValue(), 0d); NumberRange thirdEntry = (NumberRange) it.next(); assertEquals(15, thirdEntry.getMinimum(), 0d); assertEquals(20, thirdEntry.getMaximum(), 0d); }
@Test public void testMixedTimeExtraction() throws IOException, ParseException { MockDimensionReader reader = new MockDimensionReader(); reader.metadata.put(GridCoverage2DReader.HAS_TIME_DOMAIN, "true"); reader.metadata.put( GridCoverage2DReader.TIME_DOMAIN, "2016-02-23T03:00:00.000Z/2016-02-23T03:00:00.000Z/PT1S,2016-02-23T06:00:00.000Z,2016-02-23T09:00:00.000Z/2016-02-23T12:00:00.000Z/PT1S"); ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); TreeSet<Object> domain = accessor.getTimeDomain(); assertEquals(3, domain.size()); Iterator<Object> it = domain.iterator(); Date firstEntry = (Date) it.next(); assertEquals(accessor.getTimeFormat().parse("2016-02-23T03:00:00.000Z"), firstEntry); Date secondEntry = (Date) it.next(); assertEquals(accessor.getTimeFormat().parse("2016-02-23T06:00:00.000Z"), secondEntry); DateRange thirdEntry = (DateRange) it.next(); assertEquals( accessor.getTimeFormat().parse("2016-02-23T09:00:00.000Z"), thirdEntry.getMinValue()); assertEquals( accessor.getTimeFormat().parse("2016-02-23T12:00:00.000Z"), thirdEntry.getMaxValue()); }
public WCSDefaultValuesHelper( GridCoverage2DReader reader, ReaderDimensionsAccessor accessor, GetCoverageType request, String coverageName) throws IOException { super(); this.accessor = accessor == null ? new ReaderDimensionsAccessor(reader) : accessor; // Force the creation of an accessor this.reader = reader; this.request = request; this.coverageName = coverageName; }
private TreeSet<Object> getDimensionDomain() throws IOException { ReaderDimensionsAccessor accessor = new ReaderDimensionsAccessor(reader); if (ResourceInfo.TIME.equals(dimensionName)) { return accessor.getTimeDomain(); } else { throw new IllegalArgumentException( "Nearest match support on simple grid readers is supported only " + "for time at the moment"); } }
public WCSDimensionsHelper( final Map<String, DimensionInfo> dimensions, final GridCoverage2DReader reader, final String coverageId) throws IOException { this.accessor = new ReaderDimensionsAccessor(reader); this.coverageId = coverageId; if (dimensions != null && !dimensions.isEmpty()) { initDimensions(dimensions); } }
public WCSDimensionsSubsetHelper( GridCoverage2DReader reader, GetCoverageType request, CoverageInfo ci, CoordinateReferenceSystem subsettingCRS, EnvelopeAxesLabelsMapper envelopeDimensionsMapper) throws IOException { this.request = request; this.coverageInfo = ci; // Note that dimensions will be returned if existing and enabled too this.enabledDimensions = WCSDimensionsHelper.getDimensionsFromMetadata(ci.getMetadata()); this.subsettingCRS = subsettingCRS; this.reader = reader; this.envelopeDimensionsMapper = envelopeDimensionsMapper; timeDimension = enabledDimensions.get(ResourceInfo.TIME); elevationDimension = enabledDimensions.get(ResourceInfo.ELEVATION); if (timeDimension != null || elevationDimension != null || !enabledDimensions.isEmpty()) { accessor = new ReaderDimensionsAccessor(reader); } }
/** * Base constructor which only deals with timeDimension. It is used by WCS-EO classes which * deals with up to timeDimensions * * @param timeDimension * @param reader * @param coverageId * @throws IOException */ public WCSDimensionsHelper(CoverageInfo ci) throws IOException { this.coverageId = NCNameResourceCodec.encode(ci); this.accessor = new ReaderDimensionsAccessor( (GridCoverage2DReader) ci.getGridCoverageReader(null, null)); Map<String, DimensionInfo> dimensions = new HashMap<String, DimensionInfo>(); for (Map.Entry<String, Serializable> entry : ci.getMetadata().entrySet()) { if (entry.getValue() instanceof DimensionInfo) { dimensions.put(entry.getKey(), (DimensionInfo) entry.getValue()); } } if (!dimensions.isEmpty()) { initDimensions(dimensions); } }
public TimeDimensionHelper( DimensionInfo timeDimension, GridCoverage2DReader reader, String coverageId) throws IOException { this.timeDimension = timeDimension; this.accessor = new ReaderDimensionsAccessor(reader); this.coverageId = coverageId; if (timeDimension.getResolution() != null) { setupResolution(timeDimension.getResolution()); } }
(GridCoverage2DReader) ((CoverageInfo) resource).getGridCoverageReader(null, null); ReaderDimensionsAccessor dimAccessor = new ReaderDimensionsAccessor(reader);
(GridCoverage2DReader) ((CoverageInfo) resource).getGridCoverageReader(null, null); ReaderDimensionsAccessor dimAccessor = new ReaderDimensionsAccessor(reader);
(GridCoverage2DReader) ((CoverageInfo) resource).getGridCoverageReader(null, null); ReaderDimensionsAccessor dimAccessor = new ReaderDimensionsAccessor(reader);
GridCoverage2DReader reader = (GridCoverage2DReader) ci.getGridCoverageReader(null, null); ReaderDimensionsAccessor ra = new ReaderDimensionsAccessor(reader);
ci.getMetadata().get(ResourceInfo.TIME, DimensionInfo.class); if (timeInfo != null && timeInfo.isEnabled()) { ReaderDimensionsAccessor dimensions = new ReaderDimensionsAccessor(reader); SimpleDateFormat format = dimensions.getTimeFormat(); element("gml:timePosition", format.format(dimensions.getMinTime()));
/** * Query and returns the times for the given layer, in the given time range * * @throws IOException */ public TreeSet<Object> queryCoverageTimes( CoverageInfo coverage, DateRange queryRange, int maxAnimationSteps) throws IOException { // grab the time metadata DimensionInfo time = coverage.getMetadata().get(ResourceInfo.TIME, DimensionInfo.class); if (time == null || !time.isEnabled()) { throw new ServiceException( "Layer " + coverage.getPrefixedName() + " does not have time support enabled"); } GridCoverage2DReader reader = null; try { reader = (GridCoverage2DReader) coverage.getGridCoverageReader(null, null); } catch (Throwable t) { throw new ServiceException( "Unable to acquire a reader for this coverage " + coverage.prefixedName(), t); } if (reader == null) { throw new ServiceException( "Unable to acquire a reader for this coverage " + coverage.prefixedName()); } ReaderDimensionsAccessor dimensions = new ReaderDimensionsAccessor(reader); return dimensions.getTimeDomain(queryRange, maxAnimationSteps); }
"Unable to acquire a reader for this coverage " + coverage.prefixedName()); ReaderDimensionsAccessor dimensions = new ReaderDimensionsAccessor(reader); return dimensions.getElevationDomain(queryRange, maxAnimationSteps);
ReaderDimensionsAccessor dimensions = new ReaderDimensionsAccessor(reader); start("wcs:domainSet"); start("wcs:spatialDomain");
ReaderDimensionsAccessor dimensions = new ReaderDimensionsAccessor(reader); handleEnvelope(cv.getLatLonBoundingBox(), timeInfo, dimensions); handleKeywords(cv.getKeywords());