Using the Marlin Renderer with Spectrum Spatial

Spectrum Spatial renders maps and map tiles with anti-aliasing (Quality) enabled. Spectrum Spatial uses the default Ductus renderer that comes with Java 8, which does not scale its anti-aliasing. Starting with version 12.0 of Spectrum Spatial, images of maps and map tiles are only produced with anti-aliasing. This means if you have images that require a lot of anti-aliasing, it is possible you will see a lack of scaling.
A very simple way to ensure that rendering is scalable with anti-aliasing enabled is to use the Marlin renderer, "an open source (GPL2+CP) Java2D RenderingEngine optimized for performance." The new map images may be slightly different but not by a noticeable amount.
Note: For information about supported operating systems, see https://github.com/bourgesl/marlin-renderer/wiki/How-to-use.
These instructions below specifically describe how to integrate the Marlin renderer with Spectrum Spatial.
  1. Download a Marlin release from github (the RenderingEngine only): https://github.com/bourgesl/marlin-renderer/. Spectrum Spatial was tested with version 0.7.5.
  2. Edit your SpectrumFolder\server\modules\spatial\java.vmargs file to add the path to your marlin jar. Be sure to keep the a: before the path. For example:
    -Xbootclasspath/a:C:/Users/Admin/Downloads/marlin-0.7.5-Unsafe.jar -Dsun.java2d.renderer=org.marlin.pisces.MarlinRenderingEngine
    Note: The above path is an example. Your Marlin engine will have a different path.

    If you are experiencing memory issues or want to further take advantage of your systems resources, then consider looking into the Tuning-options.

  3. Restart the Spectrumâ„¢ Technology Platform server. You should see this in the wrapper.log file:
    INFO: ===============================================================================
    INFO: Marlin software rasterizer           = ENABLED
    INFO: Version                              = [marlin-X.Y]
    INFO: sun.java2d.renderer                  = org.marlin.pisces.MarlinRenderingEngine
    ...
    

    If you do not see this in your wrapper.log after you initialize the Mapping Service with a mapping request, this is an indication that something was misconfigured,