Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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. 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
  2. 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
  3. 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
  4. A WMS server! • FullWMS option • Compose/rescale tiles from

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

    tiles from a variety of sources: • WMS • MBtiles • Compact cache MBTiles ArcGIS CC
  6. 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
  7. With Stand Alone Configuration • XML file for stand-alone version

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

    in GeoServer • Point and click configuration • A few other perks
  9. 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
  10. WMTS • The current OGC tiling standard • KVP or

    RESTful • Capabilities document with explicit time/elevation/dimension support
  11. 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
  12. OGC 2D Tile Matrix Set • “z” is a pure

    number in them (not “EPSG:****:z”) • Easier to interoperate with XYZ clients
  13. 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?" } } ] }
  14. 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
  15. 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
  16. 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
  17. ArcGIS compact cache • Tile bundles generated by ArcGIS •

    Open specification • Contributed by external devs • Needs a maintainer, know anyone that can step up?
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. Swift blob store • Store tiles in OpenStack Swift •

    Supports • authentication • region • keystone • No GeoServer integration yet, can be configured as XML
  24. 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 `-- …
  25. BlobStore is an interface • You can add your own

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

    tiles • Automatic cleaning when going over given quota
  27. 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
  28. Automated cleanups • Clean up caches automatically: • When changing

    styles • When editing data via WFS-T (area and zoom sensitive)
  29. Configuration • Configure • GWC basics (e.g. runtime stats) •

    Disk quota • Create/update/remove • Layers • Tile Matrix Sets • Blob stores
  30. 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
  31. Getting GeoWebCache • Release Packages • SourceForge: GeoWebCache • Source

    • GitHub: GeoWebCache • Documentation • https://www.geowebcache.org/docs /current/index.html
  32. Communication • Users Mailing List • [email protected] • Get help

    • Report bugs • Developer Mailing List • [email protected] • Plan future development • Get help with development problems • Please post before you start working on something
  33. Ways to Contribute • Development • New Features • Bug

    Fixes • Boring Maintenance • Testing • Test the Release Candidate • It’s in your own interest! • Documentation