$30 off During Our Annual Pro Sale. View Details »

State of GeoWebCache - FOSS4G 2022

State of GeoWebCache - FOSS4G 2022

GeoWebCache is a popular open source tile cache server written in Java. GeoWebCache that can be used stand alone, working off a remote WMS or local tile layers, such as MBTiles. However, it's also integrated inside GeoServer, allowing simple and quick configuration, as well as transparent caching of WMS requests that happen to match a cached tile. This presentation will provide information on the latest development for the project, including:

- Performance and scalability improvements
- OGC TileMatrixSet built-in definitions
- Storage of tiles in more blob stores (Swift)
- MBTiles support
- Integration of tile caching in OGC API - Tiles (with GeoServer integration)
- Serving vector tiles and integration with the Mapbox ecosystem (e.g., style editing with Maputnik)
- Continued codebase QA efforts (code clean up, dependency upgrades and the like)

Attend this talk for a cheerful update on what is happening with this project, whether you are an expert user, a developer, or simply curious what it can do for you.

Simone Giannecchini

August 31, 2022

More Decks by Simone Giannecchini

Other Decks in Technology


  1. Andrea Aime Simone Giannecchini GeoSolutions Kevin Smith Vivid Solutions State

    of GeoWebCache
  2. GeoSolutions Enterprise Support Services Deployment Subscription Professional Training Customized Solutions

    GeoNode • Offices in Italy & US, Global Clients/Team • 40+ collaborators, 30+ Engineers • Our products • Our Offer
  3. Affiliations We strongly support Open Source, it is in our

    core We actively participate in OGC working groups and get funded to advance new open standards We support standards critical to GEOINT
  4. What is GeoWebCache anyways?

  5. A tile server! • GeoWebCache is a: • Java based

    • Stand-alone • Tile server • Tile protocols supported • WMTS • TMS • TileJSON and XYZ • Google Maps XYZ, Bing maps QuadKey, KML MBTiles ArcGIS CC
  6. A WMS server! • FullWMS option • Compose/rescale tiles from

    the tile layer • Currently single layer • Anyone interested in sponsoring multi-layer support?
  7. Based on Tile Sources • GeoWebCache can fetch (or build)

    tiles from a variety of sources: • WMS • MBtiles • Compact cache MBTiles ArcGIS CC
  8. Using Caches (blobstores) • Some layer sources don’t come in

    tiled form • Build tiles and cache them in a BlobStore • Different options • File system • GWC own layout (minimizes files in single directory) • XYZ • Cloud storage: S3, Azure, Swift • SQLite databases • Again, pluggable, add your own
  9. With Stand Alone Configuration • XML file for stand-alone version

    • REST API to: • Manage layers (CRUD) • Manage blob stores • Run seed/truncate jobs
  10. Or With GeoServer integration • Also runs as a module

    in GeoServer • Point and click configuration • A few other perks
  11. Tile services

  12. TMS and WMS-C • Tiled Map Service and Web Map

    Service - Cached • The original services from OSGeo • https://wiki.osgeo.org/wiki/WMS_Tile_Cachi ng • https://wiki.osgeo.org/wiki/Tile_Map_Service _Specification • GeoWebCache was born as “TMS on top of WMS” • Old, but sometimes still used
  13. WMTS • The current OGC tiling standard • KVP or

    RESTful • Capabilities document with explicit time/elevation/dimension support
  14. OGC 2D Tile Matrix Set • OGC Two Dimensional Tile

    Matrix Set • Set of well known gridsets: • WebMercatorQuad • WorldCRS84Quad • UTMxxWGS84Quad (for all 60 zones, yes) • GWC now supports all of them out of the box
  15. OGC 2D Tile Matrix Set • “z” is a pure

    number in them (not “EPSG:****:z”) • Easier to interoperate with XYZ clients
  16. TileJSON integration in WMTS • Mapbox clients often require a

    TileJSON document • Documents tile pyramid • If MVT, describes layers and attributes • Now exposed in WMTS RESTful caps document for all layers { "tilejson" :"3.0.0", "name":"OpenStreetMap" , "description" :"A free editable map of the whole world." , "version" :"1.0.0", "attribution" :"(c) OpenStreetMap contributors, CC-BY-SA" , "scheme" :"xyz", "tiles":[ "https://a.tile.custom-osm-tiles.org/{z}/{x}/{y}.mvt" , "https://b.tile.custom-osm-tiles.org/{z}/{x}/{y}.mvt" , "https://c.tile.custom-osm-tiles.org/{z}/{x}/{y}.mvt" ], "minzoom" :0, "maxzoom" :18, "bounds" :[ -180, -85, 180, 85 ], "fillzoom" :6, "something_custom" :"this is my unique field" , "vector_layers":[ { "id":"telephone", "fields":{ "phone_number":"the phone number", "payment":"how to pay" } }, { "id":"bicycle_parking", "fields":{ "type":"the type of bike parking", "year_installed":"the year the bike parking was installed" } }, { "id":"showers", "fields":{ "water_temperature":"the maximum water temperature", "wear_sandles":"whether you should wear sandles or not", "wheelchair":"is the shower wheelchair friendly?" } } ] }
  17. OGC API - Tiles • New protocol for tile serving

    by OGC • Available only when integrated in GeoServer • Both map tiles and data (vector) tiles • Spec still in draft, and evolving
  18. Other services • Google maps compatible tiles • Bing maps

    compatible tiles • KML tiles • Not satisfied? • GWC structure is modular, you can add a service module to it
  19. Tiled layers

  20. WMS source • The original tile layer! • Layer connected

    to a WMS source • Filter parameters (style, time, elevation, CQL filter, env var, pick your own) • Supported tile matrix sets • Retrieve meta-tiles from remote server, store in blob store
  21. ArcGIS compact cache • Tile bundles generated by ArcGIS •

    Open specification • Contributed by external devs • Needs a maintainer, know anyone that can step up?
  22. MBTiles layer • Layer connected to a MBTiles file •

    SQLite database • Table structure defined by open spec • Can contain a single pyramid of tiles • Images (PNG/JPEG) or vector tiles (MVT) • No GeoServer UI integration, configure as XML
  23. GeoServerTileLayer • You don’t see it, but it’s there! •

    Exposes GeoServer own layers to GWC when using integration • Also allows straight calls the rendering engine/data
  24. TileLayer is an interface • You can add your own

    tile layer implementation
  25. Blobstores

  26. File blob store • Store tiles on file system •

    Configurable layout • GWC native (smaller directories) • XYZ • (new) TMS (y axis up) • (new) Slippy (y axis down) • GWC native: dynamic caches • XYZ: seed and set on static file server 0,0 0,0 TMS Slippy
  27. S3 blobstore • Store tiles in S3 • Minio and

    Cohesity compatible! • Supports • authentication • HTTPS • proxy • Stored as {z}/{x}/{y} (TMS) • Can also be used for seeding one time static caches
  28. Azure blobstore • Store tiles in Azure blobs • Supports

    • authentication • HTTPS • proxy • Stored as {z}/{x}/{y} (TMS) • Can also be used for seeding one time static caches
  29. Swift blob store • Store tiles in OpenStack Swift •

    Supports • authentication • region • keystone • No GeoServer integration yet, can be configured as XML
  30. SQLite blob store • Stores tiles in SQLite databases •

    Not quite MBTiles: uses multiple SQLite databases to spread the write load (scalability) • Driven by a configurable path template . |-- nurc_Pk50095 | `-- EPSG_4326image_pngnull | |-- 11_2000_1500.sqlite | `-- 12_4250_3000.sqlite `-- topp_states |-- EPSG_900913image_jpeg7510004a12f49fdd49a2ba366e9c4594be7e4358 | |-- 6_250_500.sqlite | `-- 7_0_0.sqlite `-- …
  31. BlobStore is an interface • You can add your own

    tile layer implementation • Ideas: • Google storage • memcached • …
  32. But also, disk quota • Database accounting space used by

    tiles • Automatic cleaning when going over given quota
  33. GeoServer integration

  34. Point and click configuration

  35. Point and click configuration

  36. Integration tricks! • “Direct integration” • Transparent use of cache

    if WMS requests do match a cached layer • Use case: cached tiles by default, switch to dynamic rendering if filters are used, don’t even change protocol • Check the response headers to see which path was chosen
  37. Automated cleanups • Clean up caches automatically: • When changing

    styles • When editing data via WFS-T (area and zoom sensitive)
  38. REST interface

  39. Configuration • Configure • GWC basics (e.g. runtime stats) •

    Disk quota • Create/update/remove • Layers • Tile Matrix Sets • Blob stores
  40. Seeding and cleaning • Layer • Tile matrix set •

    Format • Zoom levels • BBOX • Filter Parameters • Configure tile retries, maximum number of failed tiles, before stopping the seed job
  41. Community

  42. Getting GeoWebCache • Release Packages • SourceForge: GeoWebCache • Source

    • GitHub: GeoWebCache • Documentation • https://www.geowebcache.org/docs /current/index.html
  43. Communication • Users Mailing List • geowebcache-users@lists.sourceforge.net • Get help

    • Report bugs • Developer Mailing List • geowebcache-devel@lists.sourceforge.net • Plan future development • Get help with development problems • Please post before you start working on something
  44. Ways to Contribute • Development • New Features • Bug

    Fixes • Boring Maintenance • Testing • Test the Release Candidate • It’s in your own interest! • Documentation
  45. The End Questions?