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
PRO

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 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 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 Slide

  4. What is GeoWebCache anyways?

    View 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 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 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 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 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 Slide

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

    View Slide

  11. Tile services

    View 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 Slide

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

    View 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 Slide

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

    View 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 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 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 Slide

  19. Tiled layers

    View 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 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 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 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 Slide

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

    View Slide

  25. Blobstores

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. GeoServer integration

    View Slide

  34. Point and click configuration

    View Slide

  35. Point and click configuration

    View Slide

  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

    View Slide

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

    View Slide

  38. REST interface

    View Slide

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

    View Slide

  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

    View Slide

  41. Community

    View Slide

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

    View Slide

  43. 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 Slide

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

    View Slide

  45. The End
    Questions?

    View Slide