Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

What is GeoWebCache anyways?

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Tile services

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Tiled layers

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Blobstores

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

GeoServer integration

Slide 34

Slide 34 text

Point and click configuration

Slide 35

Slide 35 text

Point and click configuration

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

REST interface

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

Community

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

The End Questions?