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
Tweet

More Decks by Simone Giannecchini

Other Decks in Technology

Transcript

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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  4. What is GeoWebCache anyways?

    View full-size slide

  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

    View full-size slide

  6. A WMS server!
    • FullWMS option
    • Compose/rescale
    tiles from the tile
    layer
    • Currently single layer
    • Anyone interested in
    sponsoring
    multi-layer support?

    View full-size slide

  7. Based on Tile Sources
    • GeoWebCache can fetch
    (or build) tiles from a
    variety of sources:
    • WMS
    • MBtiles
    • Compact cache
    MBTiles
    ArcGIS CC

    View full-size slide

  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

    View full-size slide

  9. With Stand Alone Configuration
    • XML file for stand-alone
    version
    • REST API to:
    • Manage layers
    (CRUD)
    • Manage blob stores
    • Run seed/truncate
    jobs

    View full-size slide

  10. Or With GeoServer integration
    • Also runs as a module in GeoServer
    • Point and click configuration
    • A few other perks

    View full-size slide

  11. Tile services

    View full-size slide

  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

    View full-size slide

  13. WMTS
    • The current OGC tiling standard
    • KVP or RESTful
    • Capabilities document with explicit
    time/elevation/dimension support

    View full-size slide

  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

    View full-size slide

  15. OGC 2D Tile Matrix Set
    • “z” is a pure number in them (not “EPSG:****:z”)
    • Easier to interoperate with XYZ clients

    View full-size slide

  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?"
    }
    }
    ]
    }

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  19. Tiled layers

    View full-size slide

  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

    View full-size slide

  21. ArcGIS compact cache
    • Tile bundles generated by
    ArcGIS
    • Open specification
    • Contributed by external
    devs
    • Needs a maintainer, know
    anyone that can step up?

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  24. TileLayer is an interface
    • You can add your own tile layer
    implementation

    View full-size slide

  25. 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

    View full-size slide

  26. 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

    View full-size slide

  27. 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

    View full-size slide

  28. Swift blob store
    • Store tiles in OpenStack
    Swift
    • Supports
    • authentication
    • region
    • keystone
    • No GeoServer integration
    yet, can be configured as
    XML

    View full-size slide

  29. 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
    `-- …

    View full-size slide

  30. BlobStore is an interface
    • You can add your
    own tile layer
    implementation
    • Ideas:
    • Google storage
    • memcached
    • …

    View full-size slide

  31. But also, disk quota
    • Database
    accounting space
    used by tiles
    • Automatic
    cleaning when
    going over given
    quota

    View full-size slide

  32. GeoServer integration

    View full-size slide

  33. Point and click configuration

    View full-size slide

  34. Point and click configuration

    View full-size slide

  35. 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

    View full-size slide

  36. Automated cleanups
    • Clean up caches
    automatically:
    • When changing
    styles
    • When editing data
    via WFS-T (area
    and zoom
    sensitive)

    View full-size slide

  37. REST interface

    View full-size slide

  38. Configuration
    • Configure
    • GWC basics (e.g. runtime stats)
    • Disk quota
    • Create/update/remove
    • Layers
    • Tile Matrix Sets
    • Blob stores

    View full-size slide

  39. 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

    View full-size slide

  40. Getting GeoWebCache
    • Release Packages
    • SourceForge: GeoWebCache
    • Source
    • GitHub: GeoWebCache
    • Documentation
    • https://www.geowebcache.org/docs
    /current/index.html

    View full-size slide

  41. 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

    View full-size slide

  42. Ways to Contribute
    • Development
    • New Features
    • Bug Fixes
    • Boring Maintenance
    • Testing
    • Test the Release Candidate
    • It’s in your own interest!
    • Documentation

    View full-size slide

  43. The End
    Questions?

    View full-size slide