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

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.

Simone Giannecchini

October 04, 2021
Tweet

More Decks by Simone Giannecchini

Other Decks in Technology

Transcript

  1. 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
  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 • Google Maps XYZ • Bing maps QuadKey • KML MBTiles ArcGIS CC
  4. Tile Sources • GeoWebCache can serve tiles from: • WMS,

    with cache (called blobstore) • MBTiles • ArcGIS compact cache • Pluggable, add your tiled layer MBTiles ArcGIS CC
  5. 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
  6. Stand Alone Configuration • XML file for stand-alone version •

    REST API to: • Manage layers (CRUD) • Manage blob stores • Run seed/truncate jobs
  7. 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
  8. 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
  9. 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
  10. 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
  11. Swift blob store • Store tiles in OpenStack Swift (2020)

    • Supports • authentication • region • keystone • No GeoServer integration yet, can be configured as XML
  12. 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)
  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. 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)
  16. OGC 2D Tile Matrix Set • “z” is a pure

    number in them (not “EPSG:****:z”) • Easier to interoperate with XYZ clients
  17. 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
  18. 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:
  19. 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
  20. 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
  21. Getting GeoWebCache • Release Packages • SourceForge: GeoWebCache • Source

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

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

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