Class 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 @see WKTLIB_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
    • 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 added
      void clearCache()  
      protected String getFromCache​(String urlLib, String wktName)
      Returns a WKT geometry from cache given its URL
      Shape 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 file
      protected Properties loadLibrary​(String libFile)
      Loads a WKT symbol library as a properties file
      static void setRoot​(URL root)
      Sets the root dir for WKT libraries
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOGGER

        protected static final Logger LOGGER
        The logger for the rendering module.
      • ROOT_DIRECTORY

        protected static URL ROOT_DIRECTORY
      • CACHE

        protected static final SoftValueHashMap<String,​Map<String,​String>> CACHE
    • Constructor Detail

      • WKTMarkFactory

        public WKTMarkFactory()
    • 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 library
        wktName - 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 interface MarkFactory
        symbolUrl - the expression that will return the symbol name. Once evaluated the expression should return something like plainName or like protocol://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