Ejemplo n.º 1
0
  private void sldExample() {
    // sldExample start
    StyleFactory styleFactory = CommonFactoryFinder.getStyleFactory();

    StyledLayerDescriptor sld = styleFactory.createStyledLayerDescriptor();
    sld.setName("example");
    sld.setAbstract("Example Style Layer Descriptor");

    UserLayer layer = styleFactory.createUserLayer();
    layer.setName("layer");

    FeatureTypeConstraint constraint =
        styleFactory.createFeatureTypeConstraint("Feature", Filter.INCLUDE, null);

    layer.layerFeatureConstraints().add(constraint);

    Style style = styleFactory.createStyle();

    style.getDescription().setTitle("Style");
    style.getDescription().setAbstract("Definition of Style");

    // define feature type styles used to actually
    // define how features are rendered
    //
    layer.userStyles().add(style);

    sld.layers().add(layer);
    // sldExample end
  }
Ejemplo n.º 2
0
  StyledLayerDescriptor parse10(
      Object input, ResourceLocator resourceLocator, EntityResolver entityResolver)
      throws IOException {

    Reader reader = null;
    try {
      // we need to close the reader if we grab one, but if it's a file it has
      // to stay as such to allow relative resource resolution during the parse
      if (!(input instanceof File)) {
        reader = toReader(input);
        input = reader;
      }
      SLDParser p = createSld10Parser(input, resourceLocator, entityResolver);
      StyledLayerDescriptor sld = p.parseSLD();
      if (sld.getStyledLayers().length == 0) {
        // most likely a style that is not a valid sld, try to actually parse out a
        // style and then wrap it in an sld
        Style[] style = p.readDOM();
        if (style.length > 0) {
          NamedLayer l = styleFactory.createNamedLayer();
          l.addStyle(style[0]);
          sld.addStyledLayer(l);
        }
      }
      return sld;
    } finally {
      IOUtils.closeQuietly(reader);
    }
  }
Ejemplo n.º 3
0
  public static StyledLayerDescriptor createDefaultSLD(Style style) {
    StyleFactory factory = CommonFactoryFinder.getStyleFactory();

    StyledLayerDescriptor sld = factory.createStyledLayerDescriptor();
    UserLayer layer = factory.createUserLayer();

    // FeatureTypeConstraint ftc =
    // styleFactory.createFeatureTypeConstraint(null, Filter.INCLUDE, null);
    layer.setLayerFeatureConstraints(new FeatureTypeConstraint[] {null});
    sld.addStyledLayer(layer);
    layer.addUserStyle((org.geotools.styling.Style) style);

    return sld;
  }
 private Style getStyle(final String styleName) {
   Style style = STYLES.get(styleName);
   if (style == null) {
     StyleFactory styleFactory = CommonFactoryFinder.getStyleFactory(GeoTools.getDefaultHints());
     SLDParser parser = new SLDParser(styleFactory);
     try {
       parser.setInput(getClass().getResource(styleName));
     } catch (IOException e) {
       throw new RuntimeException(e);
     }
     StyledLayerDescriptor sld = parser.parseSLD();
     UserLayer layer = (UserLayer) sld.getStyledLayers()[0];
     style = layer.getUserStyles()[0];
     STYLES.put(styleName, style);
   }
   return style;
 }
Ejemplo n.º 5
0
  /**
   * Generate SLD file. Creates everything but the FeatureTypeStyle that must be provided.
   *
   * @param fts FeatureTypeStyle. Contains all the rules and therefore the filters and symbolizers
   * @return StyledLayerDescriptor SLD file
   */
  private StyledLayerDescriptor createSLD(FeatureTypeStyle fts) {

    // create SLD
    StyleFactory styleFactory = CommonFactoryFinder.getStyleFactory(null);
    StyledLayerDescriptor sld = styleFactory.createStyledLayerDescriptor();

    // add named layer
    NamedLayer layer = styleFactory.createNamedLayer();
    // wfs-ng: ensures we recover the correct typename
    layer.setName(_command.getFeatureTypeName()); // name must match the layer name
    fts.setName(_command.getFeatureTypeName());
    sld.addStyledLayer(layer);

    // add a custom style to the user layer
    Style style = styleFactory.createStyle();
    style.setName(_command.getFeatureTypeName());
    style.setTitle(_command.getFeatureTypeName() + "_classification");
    style.addFeatureTypeStyle(fts);
    layer.addStyle(style);

    return sld;
  }
Ejemplo n.º 6
0
  private void styleFactoryExample() throws Exception {
    // styleFactoryExample start
    //
    // We are using the GeoTools styleFactory that allows access to get/set methods
    org.geotools.styling.StyleFactory sf = CommonFactoryFinder.getStyleFactory();
    FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();

    StyledLayerDescriptor sld = sf.createStyledLayerDescriptor();
    sld.setName("sld");
    sld.setTitle("Example");
    sld.setAbstract("Example Style Layer Descriptor");

    UserLayer layer = sf.createUserLayer();
    layer.setName("layer");

    //
    // define constraint limited what features the sld applies to
    FeatureTypeConstraint constraint =
        sf.createFeatureTypeConstraint("Feature", Filter.INCLUDE, null);

    layer.layerFeatureConstraints().add(constraint);

    //
    // create a "user defined" style
    Style style = sf.createStyle();
    style.setName("style");
    style.getDescription().setTitle("User Style");
    style.getDescription().setAbstract("Definition of Style");

    //
    // define feature type styles used to actually define how features are rendered
    FeatureTypeStyle featureTypeStyle = sf.createFeatureTypeStyle();

    // RULE 1
    // first rule to draw cities
    Rule rule1 = sf.createRule();
    rule1.setName("rule1");
    rule1.getDescription().setTitle("City");
    rule1.getDescription().setAbstract("Rule for drawing cities");
    rule1.setFilter(ff.less(ff.property("POPULATION"), ff.literal(50000)));

    //
    // create the graphical mark used to represent a city
    Stroke stroke = sf.stroke(ff.literal("#000000"), null, null, null, null, null, null);
    Fill fill = sf.fill(null, ff.literal(Color.BLUE), ff.literal(1.0));

    // OnLineResource implemented by gt-metadata - so no factory!
    OnLineResourceImpl svg = new OnLineResourceImpl(new URI("file:city.svg"));
    svg.freeze(); // freeze to prevent modification at runtime

    OnLineResourceImpl png = new OnLineResourceImpl(new URI("file:city.png"));
    png.freeze(); // freeze to prevent modification at runtime

    //
    // List of symbols is considered in order with the rendering engine choosing
    // the first one it can handle. Allowing for svg, png, mark order
    List<GraphicalSymbol> symbols = new ArrayList<GraphicalSymbol>();
    symbols.add(sf.externalGraphic(svg, "svg", null)); // svg preferred
    symbols.add(sf.externalGraphic(png, "png", null)); // png preferred
    symbols.add(sf.mark(ff.literal("circle"), fill, stroke)); // simple circle backup plan

    Expression opacity = null; // use default
    Expression size = ff.literal(10);
    Expression rotation = null; // use default
    AnchorPoint anchor = null; // use default
    Displacement displacement = null; // use default

    // define a point symbolizer of a small circle
    Graphic city = sf.graphic(symbols, opacity, size, rotation, anchor, displacement);
    PointSymbolizer pointSymbolizer =
        sf.pointSymbolizer("point", ff.property("the_geom"), null, null, city);

    rule1.symbolizers().add(pointSymbolizer);

    featureTypeStyle.rules().add(rule1);

    //
    // RULE 2 Default

    List<GraphicalSymbol> dotSymbols = new ArrayList<GraphicalSymbol>();
    dotSymbols.add(sf.mark(ff.literal("circle"), null, null));
    Graphic dotGraphic = sf.graphic(dotSymbols, null, ff.literal(3), null, null, null);
    PointSymbolizer dotSymbolizer = sf.pointSymbolizer("dot", null, null, null, dotGraphic);
    List<org.opengis.style.Symbolizer> symbolizers = new ArrayList<org.opengis.style.Symbolizer>();
    symbolizers.add(dotSymbolizer);
    Filter other = null; // null will mark this rule as "other" accepting all remaining features
    Rule rule2 =
        sf.rule("default", null, null, Double.MIN_VALUE, Double.MAX_VALUE, symbolizers, other);
    featureTypeStyle.rules().add(rule2);

    style.featureTypeStyles().add(featureTypeStyle);

    layer.userStyles().add(style);

    sld.layers().add(layer);
    // styleFactoryExample end
  }