Package org.geotools.util

Examples of org.geotools.util.NumberRange


    final int numBands = sampleModel.getNumBands();
    highValues = new double[numBands];
    lowValues = new double[numBands];
    numBins = new int[numBands];
    for (int b = 0; b < numBands; b++) {
      final NumberRange range = TypeMap.getRange(TypeMap.getSampleDimensionType(
          sampleModel,
          b));
      int bins;
      double min = range.getMinimum(true);
      double max = range.getMaximum(true);
      if (Double.isInfinite(min) || Double.isInfinite(max) || Double.isNaN(min) || Double.isNaN(max)) {
        // in this case there is no reasonable default, just use a range
        // of 0 to 1 as a placeholder
        min = 0;
        max = 1;
View Full Code Here


        }
       
        @Override
        public void marshal(Object original, HierarchicalStreamWriter writer,
                MarshallingContext context) {
            NumberRange range = (NumberRange) original;
           
            writer.startNode("min");
            if ( Double.isInfinite( ((Number)range.getMinValue()).doubleValue() ) ) {
                context.convertAnother( "-inf" );
            }
            else {
                context.convertAnother( range.getMinValue() )
            }
            writer.endNode();
           
            writer.startNode("max");
            if ( Double.isInfinite( ((Number)range.getMaxValue()).doubleValue() )) {
                context.convertAnother( "inf");
            }
            else {
                context.convertAnother( range.getMaxValue() )
            }
            writer.endNode();
        }
View Full Code Here

        Number startTime = (Number) f.getAttribute(start);
        Number endTime = startTime;
        if (end != null) {
            endTime = (Number) f.getAttribute(end);
        }
        return new NumberRange(startTime.getClass(), startTime, endTime);
    }
View Full Code Here

        // Setting default elevation
        if (elevationSubset == null) {
            // use "min" as the default
            Number minElevation = accessor.getMinElevation();
            if (minElevation != null) {
                elevationSubset = new NumberRange(minElevation.getClass(), minElevation, minElevation);
            }
        }

        // Setting default custom dimensions
        final List<String> customDomains = accessor.getCustomDomains();
View Full Code Here

                        final TreeSet<Object> domain = helper.getElevationDomain();
                        for (Object item : domain) {
                            if (item instanceof Number) {
                                element(TAG.SINGLE_VALUE, item.toString());
                            } else if(item instanceof NumberRange) {
                                NumberRange range = (NumberRange) item;
                                encodeInterval(range.getMinValue().toString(), range.getMaxValue().toString(), null, null);
                            }
                        }
                        break;
                }
                end(TAG.ELEVATION_DOMAIN);
View Full Code Here

                        return false;
                    } else if(result == 0) {
                        return true;
                    }
                } else if(curr instanceof NumberRange) {
                    NumberRange range = (NumberRange) curr;
                    if(range.contains(sliceNumber)) {
                        return true;
                    } else if(range.getMaxValue().compareTo(sliceNumber) < 0) {
                        return false;
                    }
                }
            }
        }
View Full Code Here

     * @param elevationDimension
     * @return
     * @throws IOException
     */
    private NumberRange extractElevationSubset() throws IOException {
        NumberRange elevationSubset = null;
        if (elevationDimension != null) {
            for (DimensionSubsetType dim : request.getDimensionSubset()) {
                String dimension = WCSDimensionsSubsetHelper.getDimensionName(dim);
               
                // only care for elevation dimensions
                if (!WCSDimensionsSubsetHelper.ELEVATION_NAMES.contains(dimension.toLowerCase())) {
                    continue;
                }

                // did we parse the range already?
                if (elevationSubset != null) {
                    throw new WCS20Exception("Elevation dimension trimming/slicing specified twice in the request",
                            WCS20Exception.WCS20ExceptionCode.InvalidSubsetting, "subset");
                }

                // now decide what to do
                if (dim instanceof DimensionTrimType) {

                    // TRIMMING
                    final DimensionTrimType trim = (DimensionTrimType) dim;
                    final Double low = PARSER.parseDouble(trim.getTrimLow());
                    final Double high = PARSER.parseDouble(trim.getTrimHigh());

                    // low > high???
                    if (low > high) {
                        throw new WCS20Exception("Low greater than High: " + trim.getTrimLow()
                                + ", " + trim.getTrimHigh(),
                                WCS20Exception.WCS20ExceptionCode.InvalidSubsetting, "subset");
                    }

                    elevationSubset = new NumberRange<Double>(Double.class, low, high);
                } else if (dim instanceof DimensionSliceType) {

                    // SLICING
                    final DimensionSliceType slicing = (DimensionSliceType) dim;
                    final String slicePointS = slicing.getSlicePoint();
                    final Double slicePoint = PARSER.parseDouble(slicePointS);

                    elevationSubset = new NumberRange<Double>(Double.class, slicePoint, slicePoint);
                } else {
                    throw new WCS20Exception(
                            "Invalid element found while attempting to parse dimension subsetting request: " + dim.getClass()
                            .toString(), WCS20Exception.WCS20ExceptionCode.InvalidSubsetting, "subset");
                }
            }

            // right now we don't support trimming
            // TODO: revisit when we have some multidimensional output support
            if (!(reader instanceof StructuredGridCoverage2DReader) && elevationSubset != null && !elevationSubset.getMinValue().equals(elevationSubset.getMaxValue())) {
                throw new WCS20Exception("Trimming on elevation is not supported at the moment on not StructuredGridCoverage2DReaders, only slicing is");
            }

            // apply nearest neighbor matching on elevation
            if (elevationSubset != null && elevationSubset.getMinValue().equals(elevationSubset.getMaxValue())) {
                interpolateElevation (elevationSubset, accessor);
            }
        }
        return elevationSubset;
    }
View Full Code Here

        final WCSEnvelope spatialSubset = extractSubsettingEnvelope();
        assert spatialSubset != null && !spatialSubset.isEmpty();
       
        Map<String, List<Object>> dimensionsSubset = null;
        DateRange temporalSubset = null;
        NumberRange elevationSubset = null;

        // Parse specified subset values (if any)
        if (enabledDimensions != null && !enabledDimensions.isEmpty()) {
            // extract temporal subsetting
            temporalSubset = extractTemporalSubset();
View Full Code Here

        if (elevationDescriptor != null) {
            startElevationAttribute = elevationDescriptor.getStartAttribute();
            endElevationAttribute = elevationDescriptor.getEndAttribute();
            Number startValue = (Number) feature.getAttribute(startElevationAttribute);
            Number endValue = (endElevationAttribute != null) ? (Number) feature.getAttribute(endElevationAttribute) : startValue;
            NumberRange range = new NumberRange(startValue.getClass(), startValue, endValue);
            subRequest.setElevationSubset(range);
        }

        // ---------------------------------
        // Updating custom dimensions subset
        // ---------------------------------
        List<String> customDomains = (List<String>) (accessor != null ? accessor.getCustomDomains() : Collections.emptyList());
        Map<String, List<Object>> dimensionsSubset = new HashMap<String, List<Object>>();
        for (String customDomain: customDomains) {
            String startAttribute = null;
            String endAttribute = null;
            DimensionDescriptor descriptor = WCSDimensionsHelper.getDimensionDescriptor(reader, coverageName, customDomain);
            if (descriptor != null) {
                startAttribute = descriptor.getStartAttribute();
                endAttribute = descriptor.getEndAttribute();

                Object value = feature.getAttribute(startAttribute);
                if (endAttribute != null) {
                    Object endValue = feature.getAttribute(endAttribute);
                    Class objectClass = endValue.getClass();
                    String classDataType = objectClass.toString();
                    if (classDataType.endsWith("Timestamp")) {
                        value = new DateRange(new Date(((Timestamp) value).getTime()), new Date(
                                ((Timestamp) endValue).getTime()));
                    } else if (classDataType.endsWith("Date")) {
                        value = new DateRange((Date) value, (Date) endValue);
                    } else {
                        value = new NumberRange(objectClass, (Number) value, (Number) endValue);
                    }
                }
                List<Object> dimensionValues = new ArrayList<Object>();
                dimensionValues.add(value);
                dimensionsSubset.put(descriptor.getName().toUpperCase(), dimensionValues);
View Full Code Here

     * @param reader
     * @return
     */
    private Filter filterElevation(Filter filter, GridCoverageRequest gcr,
            String coverageName, StructuredGridCoverage2DReader reader) {
        NumberRange elevationRange = gcr.getElevationSubset();
        String startElevation = null;
        String endElevation = null;
        DimensionDescriptor elevationDescriptor = null;
        Filter elevationFilter = filter;
        if (elevationRange != null && filter != Filter.EXCLUDE) {
            elevationDescriptor = WCSDimensionsHelper.getDimensionDescriptor(reader, coverageName, "ELEVATION");
            startElevation = elevationDescriptor.getStartAttribute();
            endElevation = elevationDescriptor.getEndAttribute();
            elevationFilter = filter(startElevation, endElevation, elevationRange.getMinValue(), elevationRange.getMaxValue(), filter);
        }
        return elevationFilter;
    }
View Full Code Here

TOP

Related Classes of org.geotools.util.NumberRange

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.