Package org.geotools.util

Examples of org.geotools.util.DateRange


        final long endSecond = secondDateRange.getMaxValue().getTime();
        final long max = Math.max(endFirst, endSecond);
        final long min = Math.min(beginFirst, beginSecond);
        final Date beginDate = new Date(min);
        final Date endDate = new Date(max);
        return new DateRange(beginDate, endDate);
    }
View Full Code Here


   
    // specify time
    final ParameterValue<List> time = ImageMosaicFormat.TIME.createValue();
        time.setValue(
                new ArrayList(){{
                    add(new DateRange(formatD.parse("2004-01-01T00:00:00.000Z"), formatD.parse("2004-07-01T00:00:00.000Z")));
                    }}
        );   
        // Testing output coverage for level 0
        TestUtils.checkCoverage(reader.getImageMosaicReaderForLevel(0), new GeneralParameterValue[] {gg,useJai ,time}, "time test");
  }
View Full Code Here

    public void testDefaultGridCoverageResponse() {
        // creation of a dummy coverage and response
        GridCoverage2D cov = new GridCoverageFactory().create("test",
                new float[][] { { 1.0f, 1.0f } }, new ReferencedEnvelope(0.0d, 1.0d, 0.0d, 1.0d,
                        null));
        DateRange temporalExtent = new DateRange(new Date(10000), new Date(20000));
        NumberRange<Double> verticalExtent = new NumberRange<Double>(Double.class, 0.0d, 100.0d);
        DefaultGridCoverageResponse response = new DefaultGridCoverageResponse(cov, temporalExtent,
                verticalExtent);

        // Check if the response results are equals to that of the input GridCoverage
View Full Code Here

                    SortedSet<DateRange> requestedTemporalSubset = new DateRangeTreeSet();
                    SortedSet<? extends DateRange> temporalElements = temporalDomain.getTemporalElements(false, null);
                    final int numTimes = temporalElements.size();
                    Iterator<? extends DateRange> iteratorT = temporalElements.iterator();
                    for (int i = 0; i < numTimes; i++) {
                        DateRange time = iteratorT.next();
                        if (i % (numTimes / 5) == 1) {
                            requestedTemporalSubset.add(time);
                        }
                    }
                    readRequest.setTemporalSubset(requestedTemporalSubset);
View Full Code Here

    // specify time range
    // Test the output coverage
    reader = TestUtils.getReader(timeURL, format);
                time.setValue(
                        new ArrayList(){{
                            add(new DateRange(formatD.parse("2004-02-01T00:00:00.000Z"), formatD.parse("2004-03-01T00:00:00.000Z")));
                            }}
                );   
                TestUtils.checkCoverage(reader, new GeneralParameterValue[] {gg,useJai ,time}, "time test");
   
 
View Full Code Here

   
    private GridCoverage2D readCoverageInDateRange(ImageMosaicReader reader, String start, String end) throws Exception {
        final ParameterValue<List> time = ImageMosaicFormat.TIME.createValue();
        Date s = parseTimeStamp(start);
        Date e = parseTimeStamp(end);
        DateRange range = new DateRange(s, e);
        time.setValue(Arrays.asList(range));

        // use imageio with defined tiles
        final ParameterValue<Boolean> useJai = AbstractGridFormat.USE_JAI_IMAGEREAD .createValue();
        useJai.setValue(false);
View Full Code Here

            if (dcs.getDimensionTrim() == null || dcs.getDimensionTrim().size() == 0) {
                return Query.ALL;
            }

            // find out what the selection is about
            DateRange timeRange = null;
            NumberRange<Double> lonRange = null;
            NumberRange<Double> latRange = null;
            for (DimensionTrimType trim : dcs.getDimensionTrim()) {
                String name = trim.getDimension();
                if ("Long".equals(name)) {
                    if (lonRange != null) {
                        throw new WCS20Exception("Long trim specified more than once",
                                OWSExceptionCode.InvalidParameterValue, "subset");
                    }
                    lonRange = parseNumberRange(trim);
                } else if ("Lat".equals(name)) {
                    if (latRange != null) {
                        throw new WCS20Exception("Lat trim specified more than once",
                                OWSExceptionCode.InvalidParameterValue, "subset");
                    }
                    latRange = parseNumberRange(trim);
                } else if ("phenomenonTime".equals(name)) {
                    if (timeRange != null) {
                        throw new WCS20Exception("phenomenonTime trim specified more than once",
                                OWSExceptionCode.InvalidParameterValue, "subset");
                    }
                    timeRange = parseDateRange(trim);
                } else {
                    throw new WCS20Exception("Invalid dimension name " + name
                            + ", the only valid values "
                            + "by WCS EO spec are Long, Lat and phenomenonTime",
                            OWSExceptionCode.InvalidParameterValue, "subset");
                }
            }

            // check the desired containment
            boolean overlaps;
            String containment = dcs.getContainmentType();
            if (containment == null || "overlaps".equals(containment)) {
                overlaps = true;
            } else if ("contains".equals(containment)) {
                overlaps = false;
            } else {
                throw new WCS20Exception("Invalid containment value " + containment
                        + ", the only valid values by WCS EO spec are contains and overlaps",
                        OWSExceptionCode.InvalidParameterValue, "containment");
            }

            // spatial subset
            FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
            Filter filter = null;
            if (lonRange != null || latRange != null) {
                try {
                    // we are going to intersect the trims with the original envelope
                    // since the trims can only be expressed in wgs84 we need to reproject back and forth
                    ReferencedEnvelope original = new ReferencedEnvelope(reader.getOriginalEnvelope())
                            .transform(DefaultGeographicCRS.WGS84, true);
                    if (lonRange != null) {
                        ReferencedEnvelope lonTrim = new ReferencedEnvelope(lonRange.getMinimum(),
                                lonRange.getMaximum(), -90, 90, DefaultGeographicCRS.WGS84);
                        original = new ReferencedEnvelope(original.intersection(lonTrim), DefaultGeographicCRS.WGS84);
                    }
                    if (latRange != null) {
                        ReferencedEnvelope latTrim = new ReferencedEnvelope(-180, 180,
                                latRange.getMinimum(), latRange.getMaximum(),
                                DefaultGeographicCRS.WGS84);
                        original = new ReferencedEnvelope(original.intersection(latTrim), DefaultGeographicCRS.WGS84);
                    }
                    if (original.isEmpty()) {
                        filter = Filter.EXCLUDE;
                    } else {
                        Polygon llPolygon = JTS.toGeometry(original);
                        GeometryDescriptor geom = reader.getGranules(coverageName, true).getSchema().getGeometryDescriptor();
                        PropertyName geometryProperty = ff.property(geom.getLocalName());
                        Geometry nativeCRSPolygon = JTS.transform(llPolygon, CRS.findMathTransform(DefaultGeographicCRS.WGS84, reader.getCoordinateReferenceSystem()));
                        Literal polygonLiteral = ff.literal(nativeCRSPolygon);
                        if(overlaps) {
                            filter = ff.intersects(geometryProperty, polygonLiteral);
                        } else {
                            filter = ff.within(geometryProperty, polygonLiteral);
                        }
                    }
                } catch(Exception e) {
                    throw new WCS20Exception("Failed to translate the spatial trim into a native filter", e);
                }
            }

            // temporal subset
            if (timeRange != null && filter != Filter.EXCLUDE) {
                DimensionDescriptor timeDescriptor = WCSDimensionsHelper.getDimensionDescriptor(reader, coverageName, "TIME");
                String start = timeDescriptor.getStartAttribute();
                String end = timeDescriptor.getEndAttribute();
               
                Filter timeFilter;
                if(end == null) {
                    // single value time
                    timeFilter = ff.between(ff.property(start), ff.literal(timeRange.getMinValue()), ff.literal(timeRange.getMaxValue()));
                } else {
                    // range value, we need to account for containment then
                    if(overlaps) {
                        Filter f1 = ff.lessOrEqual(ff.property(start), ff.literal(timeRange.getMaxValue()));
                        Filter f2 = ff.greaterOrEqual(ff.property(end), ff.literal(timeRange.getMinValue()));
                        timeFilter = ff.and(Arrays.asList(f1, f2));
                    } else {
                        Filter f1 = ff.greaterOrEqual(ff.property(start), ff.literal(timeRange.getMinValue()));
                        Filter f2 = ff.lessOrEqual(ff.property(end), ff.literal(timeRange.getMaxValue()));
                        timeFilter = ff.and(Arrays.asList(f1, f2));
                    }
                }
               
                if(filter == null) {
View Full Code Here

                    throw new WCS20Exception("Low greater than High in trim for dimension: "
                            + trim.getDimension(),
                            WCS20Exception.WCS20ExceptionCode.InvalidSubsetting, "dimensionTrim");
                }

                return new DateRange(low, high);
            } catch (IllegalArgumentException e) {
                throw new WCS20Exception("Invalid date value",
                        OWSExceptionCode.InvalidParameterValue, "dimensionTrim", e);
            }
View Full Code Here

     */
    public String format(Object date) {
        if(date instanceof Date) {
            return format((Date) date);
        } else if(date instanceof DateRange){
            DateRange range = (DateRange) date;
            StringBuilder sb = new StringBuilder();
            format(range.getMinValue(), sb);
            sb.append("/");
            format(range.getMaxValue(), sb);
            sb.append("/PT1S");
            return sb.toString();
        } else {
            throw new IllegalArgumentException("Date argument should be either a Date or a " +
                    "DateRange, however this one is neither: " + date);
View Full Code Here

     * @throws IOException
     */
    private GridCoverageRequest setDefaultsFromStructuredReader(GridCoverageRequest subsettingRequest) throws IOException {

        // Get subsetting request
        DateRange temporalSubset = subsettingRequest.getTemporalSubset();
        NumberRange<?> elevationSubset = subsettingRequest.getElevationSubset();
        Map<String, List<Object>> dimensionsSubset = subsettingRequest.getDimensionsSubset();
        Envelope envelopeSubset = subsettingRequest.getSpatialSubset();
        Filter originalFilter = subsettingRequest.getFilter();

View Full Code Here

TOP

Related Classes of org.geotools.util.DateRange

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.