GeotoolKit - Symbology
Date de publication : 24 juin 2010
Par
Johann Sorel
Cet article explique comment créer des symbols complexe pour vos cartes dans GeotoolKit.
Un zip contenant tous les exemples se trouve à la fin.
Commentez
I. Introduction
II. Exemple
I. Introduction
La symbology dans GeotoolKit s'appuit sur quatre normes :
- OGC Styled Layer Descriptor
- OGC Symbology Encoding
- OGC Filter
- ISO 19117 : Portrayal Service
La structure des styles est tres proche de la definition de SLD et SE, je vous invites
donc a les télécharger.
II. Exemple
Exmple de cercle rouge.
import org.geotoolkit.factory.FactoryFinder;
import org.geotoolkit.factory.Hints;
import org.geotoolkit.style.MutableFeatureTypeStyle;
import org.geotoolkit.style.MutableRule;
import org.geotoolkit.style.MutableStyle;
import org.geotoolkit.style.MutableStyleFactory;
import org.opengis.filter.FilterFactory;
import org.opengis.filter.expression.Expression;
import org.opengis.style.AnchorPoint;
import org.opengis.style.Displacement;
import org.opengis.style.Fill;
import org.opengis.style.Graphic;
import org.opengis.style.GraphicalSymbol;
import org.opengis.style.PointSymbolizer;
import org.opengis.style.Stroke;
import static org.geotoolkit.style.StyleConstants.*;
...
final MutableStyleFactory sf = (MutableStyleFactory) FactoryFinder.getStyleFactory (
new Hints (Hints.STYLE_FACTORY,MutableStyleFactory.class ));
final FilterFactory ff = FactoryFinder.getFilterFactory (null );
final Stroke stroke = sf.stroke (Color.RED, 1 );
final Fill fill = sf.fill (new Color (0 , 0 , 0 , 0 ));
final GraphicalSymbol redCercle = sf.mark (MARK_CIRCLE, stroke, fill);
final List< GraphicalSymbol> symbols = new ArrayList< GraphicalSymbol> ();
symbols.add (redCercle);
final Expression opacity = LITERAL_ONE_FLOAT;
final Expression size = ff.literal (14 );
final Expression rotation = LITERAL_ZERO_FLOAT;
final AnchorPoint anchor = DEFAULT_ANCHOR_POINT;
final Displacement displacement = DEFAULT_DISPLACEMENT;
final Graphic graphic = sf.graphic (symbols, opacity, size, rotation, anchor, displacement);
final PointSymbolizer symbolizer1 = sf.pointSymbolizer (graphic, null );
final MutableStyle style = sf.style ();
final MutableFeatureTypeStyle fts = sf.featureTypeStyle ();
final MutableRule rule = sf.rule ();
rule.symbolizers ().add (symbolizer1);
fts.rules ().add (rule);
style.featureTypeStyles ().add (fts);
System.out.println (style);
|
Exmple pour une image.
final GraphicalSymbol image = sf.externalGraphic (new ImageIcon (" image/monImage.gif " ), null );
final List< GraphicalSymbol> symbols = new ArrayList< GraphicalSymbol> ();
symbols.add (image);
final Expression opacity = LITERAL_ONE_FLOAT;
final Expression size = ff.literal (14 );
final Expression rotation = LITERAL_ZERO_FLOAT;
final AnchorPoint anchor = DEFAULT_ANCHOR_POINT;
final Displacement displacement = DEFAULT_DISPLACEMENT;
final Graphic graphic = sf.graphic (symbols, opacity, size, rotation, anchor, displacement);
final PointSymbolizer symbolizer1 = sf.pointSymbolizer (graphic, null );
final MutableStyle style = sf.style ();
final MutableFeatureTypeStyle fts = sf.featureTypeStyle ();
final MutableRule rule = sf.rule ();
rule.symbolizers ().add (symbolizer1);
fts.rules ().add (rule);
style.featureTypeStyles ().add (fts);
|
Ne pas oublier qu'un toString() sur un object de style vous affichera sa structure,
toujours tres pratique pour le debuggage.
Style : DefaultMutableStyle null [Description : Title= Title Abstract= Description]
+ - - - FTS : DefaultMutableFeatureTypeStyle null [Description : Title= Title Abstract= Description]
+ - - - Rule : DefaultMutableRule null [Description : Title= Title Abstract= Description]
+ - - - Symbol : DefaultPointSymbolizer null [Description : Title= Title Abstract= Description]
|