Class WKTMarkFactory
- Object
-
- WKTMarkFactory
-
- All Implemented Interfaces:
MarkFactory
public class WKTMarkFactory extends Object implements MarkFactory
Factory to produce marks based on WKT representation of symbols. WKT geometries may be defined directly in the SLD (prefixing it with @see "wkt://", or in a WKT library stored in a properties file (prefixing it with @seeWKTLIB_PREFIX
).The symbols stored in properties files are cached in soft references for better performance. The root directory for properties files can be set using the
setRoot(java.net.URL)
method.- Author:
- Luca Morandini lmorandini@ieee.org, Simone Giannecchini, GeoSolutions
-
-
Field Summary
Fields Modifier and Type Field Description protected static SoftValueHashMap<String,Map<String,String>>
CACHE
protected static Logger
LOGGER
The logger for the rendering module.protected static URL
ROOT_DIRECTORY
static String
WKT_PREFIX
static String
WKT_SEPARATOR
static String
WKTLIB_PREFIX
-
Constructor Summary
Constructors Constructor Description WKTMarkFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
addToCache(String urlLib)
Adds the shapes contained in a WKT library to the cache; if the url already exists in the cache, the shapes are not addedvoid
clearCache()
protected String
getFromCache(String urlLib, String wktName)
Returns a WKT geometry from cache given its URLShape
getShape(Graphics2D graphics, Expression symbolUrl, Feature feature)
Returns a WKT shaoe given that its URL specifies a WKT geometry or contains a reference to a WKT geometry specfied in a properties fileprotected Properties
loadLibrary(String libFile)
Loads a WKT symbol library as a properties filestatic void
setRoot(URL root)
Sets the root dir for WKT libraries
-
-
-
Field Detail
-
LOGGER
protected static final Logger LOGGER
The logger for the rendering module.
-
WKT_PREFIX
public static final String WKT_PREFIX
- See Also:
- Constant Field Values
-
WKTLIB_PREFIX
public static final String WKTLIB_PREFIX
- See Also:
- Constant Field Values
-
WKT_SEPARATOR
public static final String WKT_SEPARATOR
- See Also:
- Constant Field Values
-
ROOT_DIRECTORY
protected static URL ROOT_DIRECTORY
-
CACHE
protected static final SoftValueHashMap<String,Map<String,String>> CACHE
-
-
Method Detail
-
clearCache
public void clearCache()
-
setRoot
public static void setRoot(URL root)
Sets the root dir for WKT libraries- Parameters:
root
- Directory from which the search for WKT libraries starts
-
getFromCache
protected String getFromCache(String urlLib, String wktName)
Returns a WKT geometry from cache given its URL- Parameters:
urlLib
- URL of the WKT librarywktName
- name of the WKT shape
-
addToCache
protected void addToCache(String urlLib)
Adds the shapes contained in a WKT library to the cache; if the url already exists in the cache, the shapes are not added- Parameters:
urlLib
- URL of the WKT library as a properties file URL
-
getShape
public Shape getShape(Graphics2D graphics, Expression symbolUrl, Feature feature) throws Exception
Returns a WKT shaoe given that its URL specifies a WKT geometry or contains a reference to a WKT geometry specfied in a properties file- Specified by:
getShape
in interfaceMarkFactory
symbolUrl
- the expression that will return the symbol name. Once evaluated the expression should return something likeplainName
or likeprotocol://path
. See the actual implementations for details on the kind of supported name.feature
- The feature that will be used to evaluate the symbolURL expression (or to extract data from it, think complex attributes, in that case a visit to the expression and some direct attribute value extraction might be needed instead)- Throws:
Exception
- See Also:
MarkFactory.getShape(java.awt.Graphics2D, org.geotools.api.filter.expression.Expression, org.geotools.api.feature.Feature)
-
loadLibrary
protected Properties loadLibrary(String libFile) throws IOException
Loads a WKT symbol library as a properties file- Parameters:
libFile
- Location of the properties file (it could be a CQL expression)- Throws:
IOException
-
-