Zum Hauptinhalt springen

TileServer

23.1

23.1.0

  • requires WildFly 27 and JDK 17 (#10985 and #10986), will not work on WildFly 26/Tomcat 9 and below!
  • further adaptions for running on WildFly (#11849)
    • logging is configured in WildFly only, log4j is no longer used
      • SHOWLOG command now also works on WildFly
      • RELOADLOGCONFIG command has been removed
    • relative paths in CacheManager.BasePath will be placed in the WildFly data directory (e.g. C:\WildFly\standalone\data\TileServerData)
    • the cache for web requests will be placed in the WildFly temp directory (e.g. C:\WildFly\standalone\tmp\TileServer-wrcache)
  • updated libraries

22.2

22.2.0

  • log URL used for reading versions on WMS servers
  • updated libraries

22.1

22.1.1

  • faster invalidations/TileUpdater for large polygons/linestring geometries (#10091)

22.1.0

  • performance enhancements for prerenderings and invalidations/TileUpdater
  • fixes for usage of extents in maps with RefSysInfo
  • support for setting a global coordinate system for sub extents like this: (#9549)
 TileServer.Defaults.Extents.SRS=EPSG:25833
TileServer.Defaults.Extents.1.XMin=369060
TileServer.Defaults.Extents.1.XMax=371020
TileServer.Defaults.Extents.1.YMin=5806700
TileServer.Defaults.Extents.1.YMax=5808370
  • just note that the coordinates might get transformed to lat/lon and back before being applied to non-lat/lon maps, so the resulting coordinates might be a bit different than the configured ones
  • prevent using a RefSysInfo file with a la/lon coordinate system resulting in wrongly transformed tiles
  • the default number of renderer threads is 4
    • for TileServer renderers the default number of threads is determined dynamically (from 8 to 16)
  • updated libraries

21.2

21.2.5

  • support setting DPI for WMS maps from MapServer (#9173)
  • rework of coordinate system handling for prerending and invalidate/TileUpdater (#9312/#9357)
  • fix for not showing a running invalidate/TileUpdater (#9277)
  • fix for high CPU load and long running invalidations and prerenderings of maps in lat/lon coordinate system
  • fix for GETSTATUS not showing the full error/warning message

21.2.4

  • invalidation using an URL (TileUpdater) now supports geometries using a different coordinate system than the map (e.g. a local one for Bing maps, #9076)
  • new parameter SRID to supply a coordinate system for the given extents or geometries in the URL for the following commands: INVALIDATE/RENDERIMAGE/PRERENDER
  • a warning is logged and shown in GETSTATUS/GETSTATUSXML if no password is set for the TileServer
    • to change, set a password like that:
  TileServer.Password=CHANGEME
  • updated logging to log4j2 2.17.1

21.2.3

  • updated logging to log4j2 2.17.0
  • fix for command SHOWLOG to work with new log4j
  • small fixes to transformation of extents

21.2.2

  • updated logging to log4j2 2.16.0 (skipping all vulnerable versions between the old and the new version, the old version was not vulnerable using the configuration provided by MuM)
    • NOTE: log4j2 was and is never used if the TileServer is deployed on a WildFly application server
    • new logging configuration name (TileServer.log4j.xml)
    • if a custom logging configuration (TileServer.log4j.properties) is used, it needs to be recreated in log4j2 XML format

21.2.1

  • fixes for OpenStreetMap
  • fixes for CORS handling
  • more detailed logging if rendering an image from an URL fails

21.2.0

  • requires Java 11
  • updated libraries

21.1

21.1.1

  • fixes for using BingTileSystem with MapGuide
    • the default coordinate system for using MapGuide with BingTileSystem is 3857 - the MapGuide MapDefinition should match that
    • example definition of a MapGuide map without a RefSysInfo file/in BingTileSystem:
  Renderer.1.Maps.1.Name=Map3857
Renderer.1.Maps.2.MapDefinition=Library://Map_3857.MapDefinition
Renderer.1.Maps.2.TileSystem=Bing

21.1.0

  • total rework of coordinate system handling to allow using BingTileSystem with MapGuide and WMS servers
    • all tile systems allow setting an coordinate system like that Renderer.1.Maps.1.SRS=EPSG:31467
  • extents can be defined in any coordinate system like that (X is longitude and Y is latitude):
   Renderer.1.Maps.1.Extents.1.XMin=10.3
Renderer.1.Maps.1.Extents.1.YMin=50.0
Renderer.1.Maps.1.Extents.1.XMax=15.4
Renderer.1.Maps.1.Extents.1.YMax=52.0
Renderer.1.Maps.1.Extents.SRS=EPSG:4326
  • updated libraries

20.2

20.2.3

  • WMS servers with an URL parameter containing an '?' they are rejected as that breaks the WMS logic
  • WMS maps with a MapRequestOptions parameter containing an '?' they are rejected as that breaks the WMS logic

20.2.2

  • fix for running on WildFly
  • updated libraries

20.2.1

  • fix for log4j setup if no TileServer.log4j.properties file is found

20.2.0

  • enhanced support for WildFly
  • updated libraries

20.1

20.1.4

  • small fixes for OpenStreetMap
  • fixes for password and URL handling
  • better support for WildFly
    • the TileServer.properties file can also be put into standard configuration folder (i.e. WildFly\standalone\configuration)
  • supports only TileServer.log4j.properties not log4j.properties for logging configuration anymore

20.1.3

  • faster loading of OpenStreetMap tiles
    • NOTE: prerendering of OpenStreetMap tiles and derived maps (transformed/combined) is no more possible to limit the impact on the official servers
    • limiting of render threads on this renderer is increased to a maximum of 4 requests per url
  • fixed URLs for OpenStreetMap.fr renderers

20.1.2

  • support for MapGuide 4.0 map servers
  • updated libraries

20.1.1

  • fix for TransformTileRenderer/CombinedMapsRenderer/TileServerTileRenderer complaining about rendering multiple tiles

10

10.1.0

  • fix for applying global defaults (TileServer.Defaults.*) resulting in wrong number of zoomlevels
  • errors while getting tiles for transforming them or while printing are forwarded to the caller
  • additional checks for given map name on requests
  • additional local variants of OpenStreetMap (default is openstreetmap.org)
    • NOTE: be sure to adhere to the usage policies of the server providing the map tiles to prevent blacklisting your TileServer! This means limiting render threads on this renderer to a maximum of 2 and limiting zoomlevels according to the source.
    • example config for openstreetmap.de (German):
  Renderer.1.Type=URL
Renderer.1.Source=OpenStreetMap.de
Renderer.1.Maps.1.Name=OSM
  • example config for openstreetmap.fr (French):
  Renderer.1.Type=URL
Renderer.1.Source=OpenStreetMap.fr
Renderer.1.Maps.1.Name=OSM
  • updated libraries

8

8.3.3

  • the tile refresh period for TileServer renderers is 1 day by default
  • updated libraries

8.3.2

  • fix for RefSysInfo/URL cache handling

8.3.1

  • requires at least a Tomcat 9.0 and JRE/JDK 8, supports JDK 11, using an OpenJDK 11/OpenJ9 from https://adoptopenjdk.net/ is recommended
  • removed support for Silverlight clients
  • some improvements for loading OpenStreetMap/OpenTopoMap tiles
  • to defer a refresh of tiles from a slow source/to return current tile, but try to refresh in background afterwards instead of waiting for a new tile set this option: Renderer.1.Map.1.UseDeferredTileRefresh=true
    • this option is set for OpenStreetMap/OpenTopoMap maps by default
  • updated libraries

8.2.0

  • support for Java 11
  • updated libraries

3

3.1.1

  • more detailed error message for checking WMS Version

3.1.0

  • fix for java.io.FileNotFoundException when sending non-existing empty tiles
  • fix for error on clean up task
  • support for Java 9/10

3.0.2

  • tiles from OpenStreetMap use a secure URL (https)

3.0.1

  • fix for IllegalArgumentException on memory freeing
  • new compatible server: Tomcat 9.0

3.0.0

  • new dynamic memory management and better handling of out of memory errors, the option CacheManager.CacheSize has been removed
  • new option TileServer.MaxMemoryUsage to limit overall memory usage of TileServer, default is no limit, i.e. for 10 MB:
 TileServer.MaxMemoryUsage=10 MB
  • only empty tiles in the current extents of a map are loaded
  • syncing empty tiles from another TileServer uses less memory
  • if loading a tile from an URL tile renderer fails, the received text is written to the log file on DEBUG level
  • loading tiles/images/files from URLs will now timeout
  • new command WATCHDOG for easy integration with monitor systems
    • will return OK, STARTUP, SHUTDOWN or UNKNOWN depending on current servlet state
  • command CLEARMEMCACHE has been removed as memory handling is done completely internally
  • better cleanup of old/unused tiles and folders
  • upgraded library for transformation of tiles
  • improvements for caching of web requests

2

2.13.0

  • fixes to prevent TransformTileRenderer errors if base map is missing a requested zoomlevel
  • more details are shown on errors
  • updated libraries

2.12.0

  • tiles from OpenTopoMap use a secure URL (https) and support a wider zoom level range (1-17)
  • support for map servers using a certificate from Let's encrypt (for Java versions older than 8u101)

2.11.0

  • all renderers can now be configured to use a proxy for requests
  • to prevent a renderer from using a proxy to load the RefSysInfo file set this option:
 Renderer.1.UseProxyForRefSysInfo=false
  • updated libraries

2.10.1

  • updated libraries

2.10.0

  • WMS 1.3.0 requests check for the correct coordinate order using the official EPSG coordinate system definition

2.9.13

  • fix for using correct coordinate order for WMS 1.3.0 services and coordinate systems other than EPSG:4326

2.9.12

  • fix for errors on getting the version from WMS and MapGuide servers, which require a password or proxy settings

2.9.11

  • combined maps now respect their own extents if set
  • fix for using transformed maps resulting in "Latitude is out of range"
  • fix for transformed maps with no defined zoom levels
  • fix for canceling waiting requests if rendering results in an error

2.9.10

  • fix for running on WildFly

2.9.9

  • new option for configuring transparency of WMS maps, default is true example config: Renderer.1.Maps.1.Transparent=true
  • the maximum number of tiles in the memory cache is calculated dynamically depending on memory available to the TileServer, to activate remove the entry CacheManager.CacheSize=50000 in the TileServer.properties file
  • transformation of tiles now works without a MapEdit URL, the option MapEdit.URL has been removed

2.9.8

  • MapRequestOptions of the map are used when checking the version of a WMS server
  • use WildFly\conf directory for configuration instead of WildFly\bin\conf on WildFly server
  • new version of JTS and some other libraries
  • removed support for very old chained TileServers (older than 2.5.2)

2.9.7

  • requires at least a JRE/JDK 8
  • compatible servers: Tomcat 8.0 and WildFly 9.0
  • MapGuide 3.0 support, is detected automatically on first request to it
  • WMS 1.3.0 support, is detected automatically on first request to it

2.9.6

  • fix for null pointer exception if no data is sent to the client
  • redirects from HTTP to HTTPS are supported for all URLs (RefSysInfo files etc.)

2.9.5

  • rework of sub extents handling: the tile system no longer limits the area of the sub extents, tiles can be rendered in areas not contained in the tile system
  • fix for race condition resulting in high server load while TileServer was actually idle

2.9.4

  • fix for circumventing the YCrCb bug resulting in distorted colors on loading of JPEGs
  • faster clearing of the cache
  • old tile folders are cleaned up after 14 days of runtime without config changes

2.9.3

  • fixes for invalidation reducing the number of jobs to be rendered

2.9.2

  • fixes for display of current state of render jobs on GETSTATUS page
  • fix for removing failed renderings from the active render queue
  • an error will be logged, if a RefSysInfo is missing in a CustomBing tile system map (and it will not be loaded)
  • WRITECONFIG will transform all line breaks in the TileServer properties according to the current operating system
  • GETEXTENDEDCONFIG contains the last load time of the configuration
  • changed zoomlevel calculation, affects GETKML and GETIMAGE/printing for tile layers (OpenStreetMap etc.)
  • rework of invalidation, especially for lines with a large number of points
  • WMS GetMap requests include a SERVICE=WMS parameter (though it is only required for GetCapabilities)

2.9.1

  • fix for errors regarding missing caches of dependent maps (i.e. not available in the current zoomlevel)
  • fix for missing tiles in zoomlevels higher than defined in the RefSysInfo (usually 20)

2.9.0

  • invalidate is more robust on invalid geometries and faster for geometries like lines and polygons

2.8.9

  • improvements for limiting the number of tasks executed in parallel (invalidate, prerender etc.)
  • fixes for chained TileServers, which are protected by passwords
  • the GETCONFIG command is deprecated and will be removed in a later version, use GETEXTENDEDCONFIG instead

2.8.8

  • new generic URL tile renderer for reading tiles from an external URL (including predefined configurations for OpenStreetMap and OpenTopoMap)
    • NOTE: be sure to adhere to the usage policies of the server providing the map tiles to prevent blacklisting your TileServer! This means limiting render threads on this renderer to a maximum of 2 and limiting zoomlevels according to the source.
    • there can be placeholders in the URL:
      • {ZoomLevel} - zoom level (1-28)
      • {X} - tile number in X-direction
      • {X} - tile number in Y-direction
      • {Format} - image format (png etc.), could also be hardcoded in the URL
    • example config for a generic URL:
  Renderer.1.Type=URL
Renderer.1.URL=http://myserver/{ZoomLevel}/{X}/{Y}.{Format}
Renderer.1.Maps.1.Name=MyTiles
  • example config for OpenStreetMap:
  Renderer.1.Type=URL
Renderer.1.Source=OpenStreetMap
Renderer.1.Maps.1.Name=OSM
  • the old OpenStreetMap config (Renderer.1.Type=OpenStreetMap) is deprecated, new maps should use the format above
  • example config for OpenTopoMap:
  Renderer.1.Type=URL
Renderer.1.Source=OpenTopoMap
Renderer.1.Maps.1.Name=OpenTopoMap

2.8.7

  • fix for invalidation of invalid (self-crossing) geometries and for SETDISPLAYHEIGHT/WIDTH=0 on MapGuide

2.8.6

  • the default log4j configuration is loaded correctly if there is no other configuration

2.8.5

  • included templates for clientaccesspolicy.xml/crossdomain.xml files
  • reworked sample TileServer.properties

2.8.4

  • fix for "java.io.IOException: closed" at rendering

2.8.3

  • faster prerendering for chained TileServers if there is only one TileServer chained
  • fixed some problems regarding missing/empty tiles

2.8.2

  • requires at least a Tomcat 7.0 and JRE/JDK 7

2.8.1

  • invalidate resets the flag for canceling prerendering (fixes non-rendering invalidate requests)

2.8.0

  • fix for an invalidation issue, which led to re-rendering of only one zoomlevel

2.7.9

  • GETEXTENDEDCONFIG returns the startup time rather than the time the config file was changed as last modified header (fixes caching of configurations, which failed to load correctly)

2.7.8

  • invalidate command allows URLs with spaces and special characters

2.7.7

  • fix for combined maps using base maps with different valid zoomlevels

2.7.6

  • faster removing of entries from cache, affects rendering and invalidating
  • a large number of invalidation/prerender requests should no more deadlock or block the TileServer

2.7.5

  • combined maps can use any other map, even if those are defined after the combined map in the TileServer.properties
  • renderers with no valid maps are discarded and not started

2.7.4

  • prerendering combined maps does not put underlying tiles into memory cache anymore
  • reworked cache resizing and reduced locking

2.7.3

  • queueing requests for prerendering/invalidate is faster, GETSTATUS also returns faster on high load
  • the log4j configuration is now stored in conf/TileServer.log4j.properties to allow relating the name of the configuration to the TileServer (but log4j.properties is accepted also)

2.7.2

  • faster reading of large images

2.7.1

  • fix for reading very large images

2.7.0

  • fix for errors on INVALIDATE using a url resulting in MapGuide-Error 559

2.6.9

  • fix for errors regarding invalid image files
  • the RENDERIMAGE command needs no password anymore if a password for the TileServer has been configured
  • the option CASCADE works for CLEAREMPTYTILES and CLEARCACHE
  • additional checks for valid map configurations

2.6.8

  • support for Cross-origin resource sharing (CORS) requests of JavaScript clients

2.6.7

  • fix for invalidate on chained TileServers to render correct number of tiles
  • chained TileServer versions are checked
  • smaller fixes and speedups

2.6.6

  • invalidate requests run in the background, so the request returns immediately avoiding a timeout
  • the option *.BufferNumberOfTiles now also works for Bing tile systems without a RefSysInfo file

2.6.5

  • new option *.TileRefreshPeriod for maps to refresh tiles periodically example:
Renderer.1.Maps.1.TileRefreshPeriod=1d

(refreshes tiles of the map after one day)

 format: value[unit]

value is made of digits, whitespace between value and unit is allowed. possible units:

  d  - days
h - hours
m - minutes
s - seconds
ms - milliseconds (can be omitted, as it is the default)
  • faster rendering of combined maps
  • transformed tiles are refreshed when the tiles of the underlying base map are changed, and not on a fixed interval
  • small optimizations

2.6.4

  • extents for map are now also accepted if min/max are in the wrong order
  • optimizations for transform tile renderer
  • transformed tiles are refreshed after 4 weeks if the renderer of the underlying base map is active
  • fix for HTTP and proxy authentification

2.6.3

  • new option *.UseTileSystemExtentsAsSubExtents for maps to use extents of tilesystem/RefSysInfo file only as sub extents, without limiting all extents to it. as a result sub areas outside the geographical region of the map can be defined in addition to the area defined by a RefSysInfo file (e.g. for electro internals). the default value is false. example:
Renderer.1.Maps.1.UseTileSystemExtentsAsSubExtents=true
Renderer.1.Maps.1.Extents.1.XMin=0
Renderer.1.Maps.1.Extents.1.YMin=0
Renderer.1.Maps.1.Extents.1.XMax=1000
Renderer.1.Maps.1.Extents.1.YMax=1000
  • speed ups and consolidation of prerender and invalidate if using sub extents note: if possible try to avoid overlapping sub extents, they are slower than non-overlapping ones on prerendering/invalidating
  • removed default attributed for center point and zoomlevel of maps as they are not used and make no sense for sub extents

2.6.2

  • Renderer.NumberOfThreads are no longer enforced to be at least 2, though it is highly recommended

2.6.1

  • invalidate without URL no works correctly for chained TileServers (fixes #508)

2.6.0

  • fixes for INVALIDATE using an URL
  • GETSTATUS and GETSTATUSXML show now the number of parts rendered in a given render job (XML attribute RenderJob.RenderedParts)

2.5.9

  • enhancements for GETEXTENDEDCONFIG:
    • new attributes for Renderers: Username, Password, ProxyUsername, ProxyPassword
    • new attributes for TileServerMapDefinitions: BaseMapType, BaseMapTileServer to allow retrieving base renderer configuration

2.5.8

  • small optimizations reducing locks and used memory
  • the GETSTATUS page shows the last error/warning message as a tooltip over the timestamp of the error/warning without having to open the log file
  • the GETSTATUSXML command has new attribute LastErrorMessage and LastWarningMessage to show this message

2.5.7

  • faster shutdown of TileServer
  • automatic refresh for tiles if the renderer is not set to inactive and supports it
    • the refresh happens per tile and uses last modified/ETag caching to prevent reloading tiles, which have not changed
    • currently the following renderers support automatic tile refresh:
      • OpenStreetMap tiles are refreshed after four weeks
      • chained TileServer tiles are refreshed after four weeks
      • combined maps tiles are refreshed if the base tiles should be refreshed
  • faster rendering for chained TileServers
  • extension to command GETTILE
    • new parameter TILESERVER to signal a request from a chained TileServer and create a reply in extended format
  • render jobs, which only exist in the active render queue are not tracked as already finished anymore
  • new log4j version 1.2.17

2.5.6

  • faster rendering for OpenStreetMap tiles and reduced memory consumption
  • prevent lockups of CombinedMapsRenderer
  • performance optimizations

2.5.5

  • Renderer.NumberOfThreads should be at least 2, a warning is issued if it is set to 1 and the number of threads is forced to be 2
    • in addition lockups by a too low number of render threads in certain conditions are prevented now
  • small fixes and cleanups

2.5.4

  • GETRENDERIMAGE now works correct for images built from tiles (e.g. on printing of OpenStreetMap tiles)
  • it is possible to override the coordinate system per map even if a RefSysInfo file is defined example: Renderer.1.Maps.1.SRS=EPSG:31467
  • transformation of tiles works even without MapEdit if RefSysInfo file is given
  • enhancements for GETEXTENDEDCONFIG: MapEdit URL
  • better error handling for unsupported/missing coordinates in invalidate file

2.5.3

  • empty tiles in JPEG format are now all white
  • new option MapEdit.URL to attach a MapEdit instance for additional functionality like tile transformation example: MapEdit.URL=http://localhost/MuM.Geo.Services/
  • new renderer for transforming tiles between different coordinate systems, needs MapEdit.URL for transformation
    • example config:
  Renderer.1.Type=Transform
Renderer.1.Maps.1.Name=LocalOSM
# base map is the map to be transformed
Renderer.1.Maps.1.BaseMap=OSM
# the target coordinate system is defined by this given RefSysInfo file
Renderer.1.Maps.1.TileSystem=CustomBing
Renderer.1.Maps.1.RefSysInfoFile=http://localhost/RefSysInfo.xml
  • various small bug fixes and performance improvements

2.5.2

  • enhancements for chained TileServers
    • after a PRERENDER/FORCE the main TileServer checks the rendering TileServers and then cleans up its own cache if all render jobs are finished
    • please upgrade all TileServers in the chain starting from the TileServers on the bottom (which are using no other TileServer's maps)!
  • empty tiles are now stored and transferred in optimized delta format, existing files are migrated to this format on the first start
  • extension to command PRERENDER and INVALIDATE
    • new parameter RENDERJOBID to set a fixed id for querying the render job later on
  • new command GETJOBSTATE with parameter RENDERJOBID to get current state of job
  • file urls are not cached anymore by the web request cache

2.5.1

  • extension to command PRERENDER
    • new parameter CLEARLIVE to clear live rendered zoomlevels on prerender, it will be automatically set to true if no zoomlevels are given on a PRERENDER/FORCE

2.5.0

  • better support for memory-only caches, just comment out CacheManager.BasePath to use only memory caching
  • support for format "JPEG" on MapGuide, which expects "JPG"
  • fix for using formats different than "PNG"

2.4.9

  • cascading prerendering is now the default, for non-cascading prerendering use CASCADE=false as parameter
  • enhancements for combined maps
  • extensions to command CLEAREMPTYTILES
    • new parameter CASCADE (true/false) to forward clearing of empty tiles to chained TileServers
  • Changed OSMTileRenderer default URLs
  • new option *.Styles for WMS maps, example:
 Renderer.1.Maps.1.Layers=Strassen
Renderer.1.Maps.1.Styles=stylename

2.4.8

2.4.7

  • entries in the web request cache expire after 14 days without accesses
  • if the TileServer is idle, it will execute background tasks:
    • the empty tiles in the cache are resynced to external TileServers every 3 hours
    • the web request cache is cleaned up every day
  • extensions to command PRERENDER
    • new parameters BLOCKSTRIPENUMBER (1-BLOCKSTRIPECOUNT) and BLOCKSTRIPECOUNT (1-n) to prerender a striped set of blocks
      • can be used together with multiple TileServers to prerender one map on different servers in stripes
    • new parameter CASCADE (true/false) to forward prerenderings to chained TileServers instead of rendering them on the current server
  • extensions to command INVALIDATE
    • new parameters BLOCKSTRIPENUMBER (1-BLOCKSTRIPECOUNT) and BLOCKSTRIPECOUNT (1-n) to invalidate a striped set of blocks
  • fix for cascading invalidations
  • extensions to command CLEARCACHE
    • new parameter CASCADE (true/false) to clear cache of chained TileServers in addition to the local server

2.4.6

  • fix for loading tile system extents and more stable loading of maps with errors
  • faster prerender queuing if forcing is not used
  • small fixes for TileServerTileRenderers
  • INVALIDATE command is now cascading over TileServerTileRenderers to ensure consistency between TileServers

2.4.5

  • better load balancing between multiple TileServers, just make sure to always use the current version for all TileServers
  • new command GETEXTENDEDCONFIG to get a config similar to GETCONFIG, but containing more details about the maps and renderers

2.4.4

  • faster tiling and checking for empty images
  • faster shutdown
  • some more requests handle the last modified timestamp to enable better caching on the client side
  • internal cache for web requests between TileServers and for loading RefSysInfo files
  • new command CLEARWEBREQUESTCACHE to clear this web request cache
  • clean up old empty tiles

2.4.3

  • nicer logging of requests aborted by the client
  • logging whether prerendering is forced or not
  • small bug fixes for handling invalid zoomlevel ranges
  • TileServer renderers can have multiple urls to split maps/empty tiles among multiple TileServers
  • empty tiles files are saved with zero length for no empty entries instead of removing them, this allows caching them on other TileServers
  • new trove library 3.0.3

2.4.2

  • proxy authentication uses "Basic" keyword
  • fix for crash on very large invalidation files

2.4.1

  • better error messages for some responses
  • fix for showing a restarted job as finished - finished flag is reset on restart
  • prerendering is done using threadpool to limit load on system

2.4.0

  • small fix for forwarding refsysinfo file

2.3.9

  • GETTILE sets the content length header in the response, which enables the client to reuse the connection instead of opening a new one
  • the data for GETCONFIG requests is cached in memory
  • the modification date of empty tiles files and refsys info files is used by chained tileservers to reduce the transmitted data

2.3.8

  • disk cache can also be disabled for specific zoomlevels
    • this can be done for the renderer defaults, a specific renderer or a specific map (like ValidZoomlevels)
    • example for a specific map: Renderer.1.Maps.1.NoDiskCacheZoomlevels=20-23
  • new parameter for all commands to choose the formatting of the output of the called command:
    • response=html/xml/machine
      • html: HTML format (default, like the UI in older versions)
      • xml: XML format (machine parsable)
      • machine: text format (machine parsable, key=value)

2.3.7

  • disk cache can now be disabled for only some maps by this configuration: Renderer.1.Maps.1.NoDiskCache=true
  • disk cache for all maps can be disabled by setting CacheManager.BasePath to an empty value or not setting it at all

2.3.6

  • listing of the last 10 render jobs in GETSTATUS and GETSTATUSXML
    • contains requests to prerender and invalidate
    • shows start time of the request, last render time, waiting parts in the job and if the job is finished or not
  • new command CLEARWARNINGS to reset the warnings and errors shown on GETSTATUS/GETSTATUSXML

2.3.5

  • support for basic HTTP authentication for WMS,OSM and MapGuide
    • configuration:
Renderer.1.HTTPUser=Test
Renderer.1.HTTPPassword=changeme

2.3.4

  • count for active invalidation is now still correct, if an error occurs during the process
  • invalidation of multiple layers runs in parallel
  • RECT geometries in a request to INVALIDATE using an url are now processed correctly

2.3.3

  • INVALIDATE command now forces a prerendering of changed tiles, if prerendering for the given map is enabled and the zoomlevel should be prerendered

2.3.2

  • new parameter for INVALIDATE command:
    • URL=http://... - for invalidating using an geometry file on the given url (format is documented internally on MapEdit trac)
  • GETSTATUSXML contains now all dates as number of milliseconds since January 1, 1970
    • LastRenderQueueWasEmpty has been renamed to LastTimeRenderQueueWasEmpty

2.3.0/2.3.1

  • fix for invalidate not invalidating polygons and lines correctly

2.2.9

  • CombinedMapsRenderer supports RENDERIMAGE if the underlying base maps support it
    • it also respects the DPI to be used for the rendered image
  • printing is now possible for all types of renderers
    • even if a renderer is set to inactive (Renderer.1.IsActive=false), the existing tiles still can be printed
    • the tiles are combined and scaled for the requested print image
    • this allows using RENDERIMAGE/printing for OpenStreetMap tiles

2.2.8

  • limit OpenStreetMap zoomlevels to 1-18
  • additional checks for extents of maps
  • new parameters for INVALIDATE command:
    • POINT=xx;yy - for invalidating a point at position (xx;yy)
    • LINE=x1;y1;x2;y2;x3;y3 - for invalidating a line string consisting of the points (x1;y1) (x2;y2) (x3;y3)
  • new trove library 3.0.2

2.2.7

  • small fixes and speed ups for rendering combined maps

2.2.6

  • check for duplicate map names and warn if found

2.2.5

  • new renderer for combination of existing maps - makes it possible to overlay multiple maps and cache the result
    • example config:
  Renderer.1.Type=Combined
Renderer.1.Maps.1.Name=ALKandGas
# all maps are rendered from left to right, so the first is on the bottom and the last on the top of the combined tile
Renderer.1.Maps.1.BaseMaps=ALK,Gas
  • TileServerTileRenderer is now able to prerender

2.2.4

  • Fix for duplicate attribute in GETSTATUSXML

2.2.3

  • faster loading of empty tiles files
  • faster prerendering and invalidating (using less memory)
  • GETSTATUS/GETSTATUSXML now show the last time the render queue of a renderer was empty (i.e. finished prerendering)

2.2.2

  • better formatting of timestamps
  • subextents: they define multiple regions of rects containing valid tiles
    • just define them in the configuration like normal (but numbered) extents:
  Renderer.1.Maps.1.Extents.1.XMin=1000
Renderer.1.Maps.1.Extents.1.YMin=1000
Renderer.1.Maps.1.Extents.1.XMax=1500
Renderer.1.Maps.1.Extents.1.YMax=1500
Renderer.1.Maps.1.Extents.2.XMin=2000
Renderer.1.Maps.1.Extents.2.YMin=2000
Renderer.1.Maps.1.Extents.2.XMax=2500
Renderer.1.Maps.1.Extents.2.YMax=2500
  • the following commands allow now limiting their action to a given region: PRERENDER, INVALIDATE
    • specify the region in the url using the following parameters:
      • XMIN - minimum coordinate of rectangle in X direction
      • XYIN - minimum coordinate of rectangle in Y direction
      • XMAX - maximum coordinate of rectangle in X direction
      • YMAX - maximum coordinate of rectangle in Y direction
  • timestamps for the last warning are now limited to only track warnings, not like error which catches all messages above ERROR level
  • reworked handling of zoomlevels

2.2.1

  • timestamp for last warning is shown in GETSTATUS/GETSTATUSXML
  • CLEAREMPTYTILES allows additional parameters to target only a specific map/zoomlevel:
    • MAP - map to be used (optional)
    • ZOOMLEVEL - zoomlevel of the map (optional)
    • ZOOMLEVELFROM - start zoomlevel of the map (optional)
    • ZOOMLEVELTO - end zoomlevel of the map (optional)
  • loading of caches is faster now due larger chaching and more reduced locking time, this should speed up initial loading time of the TileServer
  • new release of Trove library integrated

2.2.0

  • the number of simultaneous RENDERIMAGE requests (plotting) is limited now, like for tile rendering
  • available memory is now shown in GETSTATUS/GETSTATUSXML responses

2.1.9

  • logging has been improved
    • out of memory errors are now logged and then rethrown, so they should show up in the TileServer log
    • if configured memory is below 1024 MB a warning is logged to make user aware of possible out of memory problems
    • on startup the current version of the TileServer is logged

2.1.8

  • new OpenStreetMap tile renderer
    • example config:
  Renderer.1.Type=OpenStreetMap
Renderer.1.Maps.1.Name=OSM
Renderer.1.Maps.1.ValidZoomLevels=1-18
Renderer.1.Maps.1.PreRenderZoomLevels=1-18
  • load balancing between urls for URLTileRenderers (MapGuide,WMS,TileServer,OSM) is now possible
    • just specify multiple urls in the configuration for one renderer, all requests are distributed between this urls
    • the distribution is currently a round-robbin with a random starting point
  • CLEARCACHE now works again for the full cache, without a MAP parameter
  • new command SYNCTODISK - synchronizes the memory cache with the disk cache, i.e. after external changes to the disk cache
    • parameters:
      • MAP - map to be used (optional)
      • ZOOMLEVEL - zoomlevel of the map (optional)
      • ZOOMLEVELFROM - start zoomlevel of the map (optional)
      • ZOOMLEVELTO - end zoomlevel of the map (optional)

2.1.7

  • further improvements for directory handling and some smaller fixes

2.1.6

  • tiling rendered images now blocks rendering new ones if all threads in the threadpool are tiling already this should prevent memory exhaustion on very fast renderers, rendering faster than tiling

2.1.5

  • further memory optimizations and speedups
  • new release of Trove library integrated

2.1.4

  • fixed memory issues from 2.1.3

2.1.3

  • faster reloading of config (it does not wait anymore for caches to be loaded)
  • tiling of rendered images is done in background using a threadpool (load on tileserver and mapguide is more constant over time)

2.1.2

  • new parameter DPI for command RENDERIMAGE to allow rendering MapGuide using custom DPI (all other renderers just ignore this)

2.1.1

  • correct content type "application/vnd.google-earth.kml+xml" for kml responses instead of generic "text/xml"
  • warnings are logged and shown in GETSTATUS if no configuration file was found and the default config is being used
  • new command RENDERIMAGE for rendering an image for the given map (needs password if a password is configured)
    • parameters:
      • MAP - map to be used for rendering
      • FORMAT - image format (default format of the map is used if missing)
      • XMIN - minimum coordinate of rectangle to render in X direction
      • YMIN - minimum coordinate of rectangle to render in Y direction
      • XMAX - maximum coordinate of rectangle to render in X direction
      • YMAX - maximum coordinate of rectangle to render in Y direction
      • SCALE - zoom scale (can be decimal, i.e. 1000.123)
      • SIZEX - image width in pixels
      • SIZEY - image height in pixels
    • with this command a TileServerTileRenderer is also able to forward/chain the image rendering to another TileServer

2.1.0

2.0.9

  • configurable size of buffer around rendered tiles, default is 0.5 (half a tile)
    • new configuration option: *.BufferNumberOfTiles=0.5
  • shorter locking of caches during search for old entries to be removed

2.0.8

  • enhanced support for proxies between two chained tileservers and on connections to URL renderers (MapGuide+WMS)

2.0.7

  • new command GETTILESKML - retrieves tiles as KML overlays for display in Google Earth
  • new config property: Renderer.#.SyncEmptyTiles=false to prevent loading empty tiles using TileServerRenderer
  • GETCONFIG requests in TileServerRenderer are now cached during startup
  • dropping old entries from cache and cache loading run now in parallel threads
  • removed dependencies on apache commons primitives
  • multiple layers can be used in WMS map definitions

2.0.6

  • allow chaining of GETREFSYSINFO requests through multiple TileServers
  • cache disabling is only used for Silverlight clients
  • logging of requested URLs for TileServerTileRenderer in TRACE mode
  • new command READEMPTYTILES - allows retrieving of _EmptyTiles.dat remotely
  • using this new command empty tiles are synced while starting up a TileServer with a TileServerRenderer and defined maps

2.0.5

  • new command GETREFSYSINFO - retrieves the RefSysInfo.xml file for the given map
  • RefSysInfo.xml loading allows gzip compression during transfer
  • new flag in config to show if renderer is able to do prerendering
  • first implementation of TileServerRenderer, which allows to use another TileServer as source for this TileServer

2.0.4

  • Fix for logging dying rendering threads

2.0.3

  • nicer locking for adding rendered tiles to cache

2.0.2

  • reduced memory usage for render queues
  • version handling detects newer versions on disk and warns if TileServer version is older
  • reduced locking while storing rendered tiles to cache

2.0.1

  • small fixes for prerendering
  • cleanup better to reduce work of garbage collector

2.0.0

  • complete new cache handling with less memory overhead and less locking while accessing different maps/zoomlevels at the same time
    • migrate empty tiles from text file to splitted binary files to support new cache handling
  • one image format per Map can be defined, default is png
    • syntax in config: *.Format=png

1

1.8.1

  • error messages like "invalid map" now also log the request url
  • if TRACE level for log4j logging is enabled, the request url is logged

1.8.0

  • versioning in TileServer.version file with automatic upgrade
  • reduced memory usage

1.7.2

  • always send content type to prevent showing html as plain text

1.7.1

  • Use Trove HashSet, as it requires less memory than standard JDK HashSet and is faster
  • Clear cache and list data on shutdown to reduce memory while reloading
  • Block servlet requests until servlet is fully loaded

1.7.0

  • commands are listed automatically below web ui pages (including new commands)
  • prerendered tiles are not stored in memory cache
  • reduced log levels for non important status messages
  • new command CLEARMEMCACHE - clears the memory cache only, without deleting any files or empty entries

1.6.3

  • Fix for prerendering only valid zoomlevels

1.6.2

  • faster check for empty bitmaps
  • faster statistics
  • new parameter FINISHEXISTING for command CANCELPRERENDER - set it to true to just stop queuing new jobs, but finish exisiting
  • the number of active prerenderers is shown on GETSTATUS/-XML

1.6.1

  • different number of tiles can be used for rendering and prerendering
  • new configuration option: *.RenderNumberOfTilesX/RenderNumberOfTilesY/PreRenderNumberOfTilesX/PreRenderNumberOfTilesY
    • defines how many tiles should be rendered/prerendered
  • log4j config is only loaded on startup and reload config
    • but new command RELOADLOGCONFIG enables refresh
  • speedups due reduced locking
  • nicer menu for calling commands from webinterface

1.6.0

  • new command SHOWLOG - shows the log4j logfile, if it is configured and exists
  • formats can be specified in the TileServer.properties, default format is PNG
    • new configuration option: *.ValidFormats=png,jpeg,...
  • write config is more secure and writes the config file just when it has read all received file data
  • a bug leaving stream handles open on rendering is fixed (fixes java.net.SocketException: Too many open files)