Package org.geotools.styling

Examples of org.geotools.styling.Rule


        if(reprojected == filter) {
            return rule;
        }
       
        // clone the rule (the style can be reused over and over, we cannot alter it) and set the new filter
        Rule rr = new RuleImpl(rule);
        rr.setFilter(reprojected);
        return rr;
    }
View Full Code Here


            CoordinateReferenceSystem destinationCrs, String layerId)
            throws Exception {
        boolean doElse = true;
        Rule[] elseRuleList = fts.elseRules;
        Rule[] ruleList = fts.ruleList;
        Rule r;
        Filter filter;
        Graphics2D graphics = fts.graphics;
        // applicable rules
        final int length = ruleList.length;
        for (int t = 0; t < length; t++) {
            r = ruleList[t];
            filter = r.getFilter();

            if (filter == null || filter.evaluate(rf.content)) {
                doElse = false;
                processSymbolizers(graphics, rf, r.symbolizers(), scaleRange, at, destinationCrs, layerId);
            }
        }

        if (doElse) {
            final int elseLength = elseRuleList.length;
            for (int tt = 0; tt < elseLength; tt++) {
                r = elseRuleList[tt];

                processSymbolizers(graphics, rf, r.symbolizers(), scaleRange,
                        at, destinationCrs, layerId);

            }
        }
    }
View Full Code Here

        }
        if (symbolizerBuilder != null) {
            symbolizers.add(symbolizerBuilder.build());
        }

        Rule rule = sf.createRule();
        rule.setName(name);
        // TODO: rule's description cannot be set
        rule.setTitle(title);
        rule.setAbstract(ruleAbstract);
        rule.setMinScaleDenominator(minScaleDenominator);
        rule.setMaxScaleDenominator(maxScaleDenominator);
        rule.setFilter(filter);
        rule.setElseFilter(elseFilter);
        rule.symbolizers().addAll(symbolizers);
        GraphicLegend gl = legend.build();
        if (gl != null) {
            rule.setLegend(gl);
        }

        if (parent == null) {
            reset();
        }
View Full Code Here

            for (int i = 0; i < ranged.getSize(); i++) {
                // obtain min/max values
                localMin = ranged.getMin(i);
                localMax = ranged.getMax(i);

                Rule rule = createRuleRanged(ranged, expression, localMin, localMax,
                        geometryAttrType, i, elseMode, colors, opacity, defaultStroke);
                fts.addRule(rule);
            }
        } else if (classifier instanceof ExplicitClassifier) {
            ExplicitClassifier explicit = (ExplicitClassifier) classifier;

            // for each class
            for (int i = 0; i < explicit.getSize(); i++) {
                Set value = (Set) explicit.getValues(i);
                Rule rule = createRuleExplicit(explicit, expression, value, geometryAttrType, i,
                        elseMode, colors, opacity, defaultStroke);
                fts.addRule(rule);
            }
        } else {
            LOGGER.log(Level.SEVERE, "Error: no handler for this Classifier type");
        }

        // add an else rule to capture any missing features?
        if (elseMode != ELSEMODE_IGNORE) {
            Symbolizer symb = createSymbolizer(geometryAttrType, getElseColor(elseMode, colors),
                    opacity, defaultStroke);
            Rule elseRule = sb.createRule(symb);
            elseRule.setIsElseFilter(true);
            elseRule.setTitle("Else");
            elseRule.setName("else");
            fts.addRule(elseRule);
        }

        // sort the FeatureTypeStyle rules
        Rule[] rule = fts.getRules();

        if (elseMode == ELSEMODE_INCLUDEASMIN) {
            //move last rule to the front
            for (int i = rule.length - 1; i > 0; i--) {
                Rule tempRule = rule[i];
                rule[i] = rule[i - 1];
                rule[i - 1] = tempRule;
            }
        }
View Full Code Here

        // create a symbolizer
        Symbolizer symb = createSymbolizer(geometryAttrType, getColor(elseMode, colors, i),
                opacity, defaultStroke);

        // create a rule
        Rule rule = sb.createRule(symb);
        rule.setFilter(filter);
        rule.setTitle(title);
        rule.setName(getRuleName(i + 1));

        return rule;
    }
View Full Code Here

        // create the symbolizer
        Symbolizer symb = createSymbolizer(geometryAttrType, getColor(elseMode, colors, i),
                opacity, defaultStroke);

        // create the rule
        Rule rule = sb.createRule(symb);

        if (filters.size() == 1){
          rule.setFilter(filters.get(0));
        }else if (filters.size() > 1){
          rule.setFilter(ff.or(filters));
        }

        rule.setTitle(title);
        rule.setName(getRuleName(i + 1));

        return rule;
    }
View Full Code Here

     * @throws IllegalFilterException
     */
    public static void modifyFTS(FeatureTypeStyle fts, int ruleIndex, String styleExpression)
        throws IllegalFilterException {
        Rule[] rule = fts.getRules();
        Rule thisRule = rule[ruleIndex];
        Filter filter = thisRule.getFilter();

        if (filter instanceof And) { //ranged expression
                                                  //figure out the appropriate values

            String[] newValue = styleExpression.split("\\.\\."); //$NON-NLS-1$

            if (newValue.length != 2) {
                throw new IllegalArgumentException(
                    "StyleExpression has incorrect syntax; min..max expected.");
            }

            List<Filter> children = ((BinaryLogicOperator) filter).getChildren();
           
            if (children.size() > 2) {
                throw new IllegalArgumentException(
                    "This method currently only supports logical filters with exactly 2 children.");
            }

            // we're expecting 2 compare subfilters
            PropertyIsGreaterThanOrEqualTo filter1 = (PropertyIsGreaterThanOrEqualTo) children.get(0);
            BinaryComparisonOperator filter2 = (BinaryComparisonOperator) children.get(1);

            //filter1 should be 1 <= x and filter2 should be x <(=) 5
            if (!(filter1.getExpression2().equals(filter2.getExpression1()))) {
                throw new IllegalArgumentException(
                    "Subfilters or subExpressions in incorrect order");
            }

            if (filter1.getExpression1().toString() != newValue[0]) {
                //lower bound value has changed, update
                filter1 = ff.greaterOrEqual(filter1.getExpression1(), ff.literal(newValue[0]));
            }

            if (filter2.getExpression2().toString() != newValue[1]) {
                //upper bound value has changed, update
                if(filter2 instanceof PropertyIsLessThan) {
                    filter2 = ff.less(filter1.getExpression1(), ff.literal(newValue[1]));
                } else if(filter2 instanceof PropertyIsLessThanOrEqualTo) {
                    filter2 = ff.lessOrEqual(filter1.getExpression1(), ff.literal(newValue[1]));
                } else {
                    throw new IllegalArgumentException("Filter 2 in the comparison is not less or less or equal??");
                }
            }

            thisRule.setFilter(filter); // style events don't handle filters yet, so fire the change event for filter

            //TODO: adjust the previous and next filters (uses isFirst, isLast)
        } else if (filter instanceof Or || filter instanceof PropertyIsEqualTo) {
            // explicit expression obtain the expression containing the attribute

View Full Code Here

// docs start default style
    /**
     * Create a default Style for feature display
     */
    private Style createDefaultStyle() {
        Rule rule = createRule(LINE_COLOUR, FILL_COLOUR);

        FeatureTypeStyle fts = sf.createFeatureTypeStyle();
        fts.rules().add(rule);

        Style style = sf.createStyle();
View Full Code Here

    /**
     * Create a Style where features with given IDs are painted
     * yellow, while others are painted with the default colors.
     */
    private Style createSelectedStyle(Set<FeatureId> IDs) {
        Rule selectedRule = createRule(SELECTED_COLOUR, SELECTED_COLOUR);
        selectedRule.setFilter(ff.id(IDs));

        Rule otherRule = createRule(LINE_COLOUR, FILL_COLOUR);
        otherRule.setElseFilter(true);

        FeatureTypeStyle fts = sf.createFeatureTypeStyle();
        fts.rules().add(selectedRule);
        fts.rules().add(otherRule);

View Full Code Here

                graphic.setSize(ff.literal(POINT_SIZE));

                symbolizer = sf.createPointSymbolizer(graphic, geometryAttributeName);
        }

        Rule rule = sf.createRule();
        rule.symbolizers().add(symbolizer);
        return rule;
    }
View Full Code Here

TOP

Related Classes of org.geotools.styling.Rule

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.