org.opengis.style.Symbolizer Maven / Gradle / Ivy
Show all versions of gt-opengis Show documentation
/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2011, Open Source Geospatial Foundation (OSGeo)
* (C) 2008, Open Geospatial Consortium Inc.
*
* All Rights Reserved. http://www.opengis.org/legal/
*/
package org.opengis.style;
import static org.opengis.annotation.Specification.*;
import javax.measure.Unit;
import javax.measure.quantity.Length;
import org.opengis.annotation.Extension;
import org.opengis.annotation.UML;
import org.opengis.annotation.XmlElement;
/**
* Abstract superclass of the symbolizers defined by the Symbology Encoding specification.
*
* Please note you are not free to create your own subtype o Symbolizer - we are limited to
* LineSymbolizer, PointSymbolizer, PolygonSymbolizer, RasterSymbolizer and TextSymbolizer.
*
*
using a static geometry you can use static geometry if needed, see {@link
* #getGeometryAttribute} Particular cases if the geometry is not the defined type of the
* symbolizer
*
*
Geometry types other than inherently linear types can also be used. If a point geometry is
* used, it should be interpreted as a line of "epsilon" (arbitrarily small) length with a
* horizontal orientation centered on the point, and should be rendered with two end caps. If a
* polygon is used (or other "area" type), then its closed outline is used as the line string (with
* no end caps). If a raster geometry is used, its coverage-area outline is used for the line,
* rendered with no end caps.
*
* @version Symbology Encoding
* Implementation Specification 1.1.0
* @author Open Geospatial Consortium
* @author Johann Sorel (Geomatys)
* @author Chris Dillard (SYS Technologies)
* @since GeoAPI 2.2
*/
@UML(identifier = "PF_PortrayalSpecification", specification = ISO_19117)
public interface Symbolizer {
/**
* Returns a measure unit. This parameter is inherited from GML. Renderers shall use the unit to
* correctly render symbols.
*
*
Recommended uom definitions are :
*
*
*
*
* - {@code metre}
*
- {@code foot}
*
- {@code pixel}
*
*
*
*
* @return can be null. If the unit is null than we shall use a the pixel unit
*/
@XmlElement("uom")
Unit getUnitOfMeasure();
/**
* Returns the name of the geometry feature attribute to use for drawing. May return null (or
* Expression.NIL) if this symbol is to use the default geometry attribute, whatever it may be.
* Using null in this fashion is similar to a PropertyName using the XPath expression ".".
*
* The content of the element gives the property name in XPath syntax. In principle, a fixed
* geometry could be defined using GML or operators could be defined for computing the geometry
* from references or literals. However, using a feature property directly is by far the most
* commonly useful method.
*
* @return Geometry attribute name, or null
to indicate default geometry
*/
@XmlElement("Geometry")
String getGeometryPropertyName();
/**
* Exrepssion used to define a geometry for drawing. May return null if the default geometry
* attribute should be used. This expression is often a PropertyName.
*
* @return Expression used to define a geometry for drawing, or Expression.NIL if the default
* geometry should be used.
*/
/* Expression getGeometry(); */
/**
* Returns a name for this symbolizer. This can be any string that uniquely identifies this
* style within a given canvas. It is not meant to be human-friendly. (The "title" property is
* meant to be human friendly.)
*
* @return a name for this style.
*/
@XmlElement("Name")
String getName();
/**
* Returns the description of this symbolizer.
*
* @return Description with usual informations used for user interfaces.
*/
@XmlElement("Description")
Description getDescription();
/**
* Calls the visit method of a StyleVisitor
*
* @param visitor the style visitor
* @return value produced
*/
@Extension
Object accept(StyleVisitor visitor, Object extraData);
}