NumberRange<?>[] subtracted = dr.subtract(category.getRange()); for (NumberRange<?> range : subtracted) { if (!range.isEmpty()) { newDataRanges.add(range);
@Override public boolean isUnset() { return range == null || range.isEmpty(); }
@Override public void validate(Object target, Errors errors) { if (range != null && !range.isEmpty() && !range.contains((Number) target)) { errors.reject(CODE, "Value " + target + " is out of the valid range " + range); } }
/** * Returns a list of scale dependent filters that represent the difference (the uncovered * area) between this {@link SLDSelector} and then specified rule * * @param rule * @return */ public List<SLDSelector> difference(SLDSelector other) { List<SLDSelector> result = new ArrayList<>(); // fast interaction tests if (!this.scaleRange.intersects(other.scaleRange)) { return Collections.singletonList(this); } // first case, portions of scale range not overlapping NumberRange<?>[] scaleRangeDifferences = this.scaleRange.subtract(other.scaleRange); for (NumberRange<?> scaleRangeDifference : scaleRangeDifferences) { result.add(new SLDSelector(scaleRangeDifference, this.filter)); } // second case, scale ranges overlapping, but filter/pseudoclass not NumberRange<?> scaleRangeIntersection = this.scaleRange.intersect(other.scaleRange); if (scaleRangeIntersection != null && !scaleRangeIntersection.isEmpty()) { And difference = FF.and(this.filter, FF.not(other.filter)); Filter simplifiedDifference = simplify(difference); if (simplifiedDifference != Filter.EXCLUDE) { result.add(new SLDSelector(scaleRangeIntersection, simplifiedDifference)); } } return result; }
protected void handleRange(CoverageInfo ci) { start("wcs:Range"); // at the moment we only handle single field coverages start("wcs:Field"); List<CoverageDimensionInfo> dimensions = ci.getDimensions(); element("wcs:Identifier", "contents"); // the output domain of the field start("wcs:Definition"); NumberRange range = getCoverageRange(dimensions); if (range == null || range.isEmpty()) { element("ows:AnyValue", ""); } else { start("ows:AllowedValues"); start("ows:Range"); element("ows:MinimumValue", Double.toString(range.getMinimum())); element("ows:MaximumValue", Double.toString(range.getMaximum())); end("ows:Range"); end("ows:AllowedValues"); } end("wcs:Definition"); handleNullValues(dimensions); handleInterpolationMethods(ci); handleAxis(ci); end("wcs:Field"); end("wcs:Range"); }
private void handleRange(CoverageInfo ci) { start("wcs:Range"); // at the moment we only handle single field coverages start("wcs:Field"); CoverageDimension[] dimensions = ci.getDimensions(); element("wcs:Identifier", "contents"); // the output domain of the field start("wcs:Definition"); NumberRange range = getCoverageRange(dimensions); if (range == null || range.isEmpty()) { element("wcs:AnyValue", ""); } else { start("ows:AllowedValues"); start("ows:Range"); element("ows:MinimumValue", Double.toString(range.getMinimum())); element("ows:MaximumValue", Double.toString(range.getMaximum())); end("ows:Range"); end("ows:AllowedValues"); } end("wcs:Definition"); handleNullValues(dimensions); handleInterpolationMethods(ci); handleAxis(ci); end("wcs:Field"); end("wcs:Range"); }