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. Open the Management Console.
  3. From Resources, click Spatial.
  4. Expand the Process Arguments section.
  5. Enter the path to your marlin jar in the Process arguments field. 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: If you are experiencing memory issues or want to further take advantage of your systems resources, then consider looking into the Tuning-options.
  6. Click Save.

Changes take effect immediately.

You should see this in the spectrum-server.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 spectrum-server.log after you initialize the Mapping Service with a mapping request, then something was misconfigured.