Save 37% off PRO during our Black Friday Sale! »

State of GeoWebCache - FOSS4G 2021

State of GeoWebCache - FOSS4G 2021

GeoWebCache is a pure Java tile cache that can be used either stand alone, or in integration with GeoServer.
Attend this talk for a cheerful update on what is happening with this popular project, whether you are an expert user, a developer, or simply curious what it can do for you.

Bac74c17d65c22d0ae63915251f7750f?s=128

Simone Giannecchini
PRO

October 04, 2021
Tweet

Transcript

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

    of GeoWebCache
  2. GeoSolutions • Offices in Italy & US, Worldwide clients •

    30+ collaborators, 25+ Engineers • Our products • Our Offer Enterprise Support Services Deployment Subscription Professional Training Customized Solutions GeoNode
  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 • Google Maps XYZ • Bing maps QuadKey • KML MBTiles ArcGIS CC
  6. Tile Sources • GeoWebCache can serve tiles from: • WMS,

    with cache (called blobstore) • MBTiles • ArcGIS compact cache • Pluggable, add your tiled layer MBTiles ArcGIS CC
  7. Caches (blobstores) • Blobstore: a cache for tiles • 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
  8. Stand Alone Configuration • XML file for stand-alone version •

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

    • Point and click configuration + REST • Create tile cache for layers in seconds • Faster seeding, talks to rendering engine
  10. Tiled layers

  11. 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
  12. Blobstores

  13. File blob store news • Configurable layout • GWC native

    • XYZ (2019) • (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
  14. Azure blobstore • Store tiles in Azure blobs (2019) •

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

    • Supports • authentication • region • keystone • No GeoServer integration yet, can be configured as XML
  16. Other blobstores • S3 blobstore, • Minio compatibility. • Cohesity

    compatibility added in 2020. • SQLite blobstore. • No news but it deserves more attention. • Not MBTiles! Uses multiple SQLite databases to spread the write load (scalability)
  17. Tile services

  18. 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?" } } ] }
  19. 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
  20. Other improvements

  21. OGC 2D Tile Matrix Set • OGC Two Dimensional Tile

    Matrix Set • Set of well known gridsets: • WebMercatorQuad • WorldCRS84Quad • UTM31WGS84Quad (for all 60 zones, yes) • GWC now supports all of them out of the box • “z” is a pure number in them (not “EPSG:****:z”) • WMTS capabilities document restricted to grids actually used by a layer (too many new grids)
  22. OGC 2D Tile Matrix Set • “z” is a pure

    number in them (not “EPSG:****:z”) • Easier to interoperate with XYZ clients
  23. Easier seeding • Before: each seed thread would die at

    first tile failure • Now: configure tile retries, and set a maximum number of failed tiles, before stopping the seed job
  24. Better interaction with WMS-T • Nearest match on WMS dimensions

    • Return map with the closest time available • May not return if too far • → same time cached in different ways • WMS dimensions have default values • → Same URL, possibly different responses over time • • Now possible to disable caching:
  25. Quality Assurance • Pull request checks: • Full build on

    Linux, Windows, OSX • Downstream GeoServer build • Automated code formatting (Google Java AOSP conventions) • Static code analysis: • PMD • ErrorProne • Checkstyle (license headers) • SpotBugs
  26. Scalability for many tiled layers • Work done over the

    last few years by Gabriel Roldan and Andrea Aime • Large tile layer catalogs • Load faster at startup • Respond faster at runtime
  27. Community

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

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

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

    Fixes • Boring Maintenance • Testing • Test the Release Candidate • It’s in your own interest! • Documentation
  31. The End Questions? andrea.aime@geosolutionsgroup.com smithkm@draconic.ca