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

Serving earth observation data with GeoServer: COG, STAC, OpenSearch and more

Serving earth observation data with GeoServer: COG, STAC, OpenSearch and more

Never before have we had such a rich collection of satellite imagery available to both companies and the general public. Between missions such as Landsat 8 and Sentinels and the explosion of cubesats, as well as the free availability of worldwide data from the European Copernicus program and from Drones, a veritable flood of data is made available for everyday usage.
Managing, locating and displaying such a large volume of satellite images can be challenging. Join this presentation to learn how GeoServer can help with with that job, with real world examples, including:

- Indexing and locating images using The OpenSearch for EO and STAC protocols
- Managing large volumes of satellite images, in an efficient and cost effective way, using Cloud Optimized GeoTIFFs.
- Visualize mosaics of images, creating composite with the right set of views (filtering), in the desired stacking order (color on top, most recent on top, less cloudy on top, your choice)
- Perform both small and large extractions of imagery using the WCS and WPS protocols
- Generate and view time based animations of the above mosaics, in a period of interest
- Perform band algebra operations using Jiffle

This talk will give a good update on the latest GeoServer capabilities in the Earth Observation field.

Simone Giannecchini

November 09, 2023

More Decks by Simone Giannecchini

Other Decks in Technology


  1. Serving earth observation data with GeoServer: COG, STAC, OpenSearch and

    more Ing. Simone Giannecchini Ing. Daniele Romagnoli Ing. Andrea Aime GeoSolutions
  2. GeoSolutions Enterprise Support Services Deployment Subscription Professional Training Customized Solutions

    GeoNode • Offices in Italy & US, Global Clients/Team • 30+ collaborators, 25+ Engineers • Our products • Our Offer
  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. STAC API (RC1) • Same use case as OpenSearch for

    EO • Based on OGC API, JSON based • Collections and items • Cross collection search at /search ◦ filter, sort, field selection
  5. STAC API (RC1) • Screenshots from DLR's EOC Geoservice (STAC

    support in development / Beta) • Customized database, HTML and JSON templates Landing page
  6. OpenSearch for EO (2017) • Earlier OGC specification to search

    for satellite imagery • Based on OpenSearch and OpenSearch Geo and Time OpenSearch OGC OpenSearch Geo and Time OGC OpenSearch for EO
  7. Sample search • http://cloudsdi. geo-solutions.it/ • geoserver/oseo/search? parentId=SENTINEL2 &cloudCover=30] •

    Output is RSS with description, thumb/quicklook and links • Since 2021, output can also be GeoJSON
  8. Metadata and cross linking • Links to metadata: • ISO

    metadata for collection • GML O&M for products • Links to OGC services (cross linking) • WMS/WMTS to see collection/product • WFS to get “masks” (validity, snow, cloud, …) • WCS to extract raster • Direct download to get original package
  9. Finding rasters • STAC has “assets” in Item pointing to

    the imagery files • OpenSearch can point to the raw package • Where can they be located? ◦ Local file system (classic approach) ◦ HTTP server ◦ S3 or other blob storage
  10. Reading from blobstore • COG plugin ◦ Leverages COG structure

    • But also, old S3 GeoTIFF plugin (Boundless) ◦ Reads any GeoTIFF (non COG) from S3 ◦ Reads in 5MB blocks, caches them ◦ Deprecated soon
  11. COG plugin Hea der • Leverages COG structure • Reads

    header first • HTTP Range read of the tiles needed (coalesce nearby tiles into single read) • Works against HTTP(s), S3, Azure and Google Storage • May get caching down the way (interested?) Tile Tile Tile Tile Tile Tile R1 R2
  12. Mosaic Terminology • Granule/Tile • The individual raster element composing

    the mosaic (asset in STAC) • (Granule) Index • The collection of metadata records describing the location, spatial coverage and other attributes of each single granule
  13. Complete freedom • Granules can: • Overlap as they please,

    can have different resolutions • Be in different file formats (faster if the format is uniform) • Have different color models, RGB, gray, paletted (needs JAI-EXT enabled) • Be in different coordinate reference systems
  14. The mosaic index • The granule lookup system • A

    “table” of granules, their footprint, location, and extra attributes • Currently supported/tested sources: • PostGIS, Oracle, SQL Server, Shapefile • STAC API (local or remote) • Can be customized to support custom granule indexes (e.g. legacy catalog)
  15. The Dimensions • Maps to alphanumeric attributes in the index

    • TIME and ELEVATION receive special treatment for WMS and WCS • Custom/Additional dimensions • Everything besides TIME & ELEVATION • They can be dynamically discovered from GetCapabilities/DescribeCoverage
  16. Internal STAC as an index ・ The OpenSearch/STAC database can

    be used as a mosaic index ・ SQL Views selecting a particular collection sub/set ・ REST API to automatically create them Collection Product or Item Granule
  17. External STAC API as index ・ Community module for STAC

    API store ・ Integrates well with image mosaic ・ Tricky issues: each system uses different auth mechanisms to actually download data STAC API STAC store GeoTools ImageMosaic COG
  18. Documentation links • GeoServer reference docs: • http://docs.geoserver.org/stable/en/user/data/raster/image mosaic/index.html •

    http://docs.geoserver.org/stable/en/user/data/raster/image mosaic/tutorial.html • http://docs.geoserver.org/api/#/1.0.0/structuredcoverages.y aml • GeoSolutions training: • http://geoserver.geo-solutions.it/edu/en/multidim/imagemo saic/index.html • http://geoserver.geo-solutions.it/edu/en/multidim/accessing _multidim/index.html • http://geoserver.geo-solutions.it/edu/en/multidim/rest/index .html
  19. Filtering and sorting • The mosaic index can be filtered

    upon with CQL • Can be sorted on using WFS like syntax • More possibilities than just Time and Elevation SENSOR = SAR AND SATELLITE=XYZ SORTBY = TIME D
  20. Coverage Views • NetCDF/Grib/Mosaic: one reader, many coverages • Sometimes

    the coverages are strictly related • E.g., U and V components of wind/current vectors • Merge them back into a single coverage as bands • Allows rendering engine to work with them both as one
  21. Native multi-coverage support • Satellite images often comes in one

    file per band • Requirement, as they have different resolutions • Grab the band name from file, build a “band specific” coverage • Use coverage views to merge them together in a virtual multiband coverage • Smarts to read only the desired files when doing band selection
  22. Hyperspectral imagery support • Hyperspectral images: those having hundreds of

    bands • Typically stored in band-interleaved structure (one data bank for all pixels in the same tile) Rows Cols Bands
  23. Documentation links • GeoServer reference docs: • http://docs.geoserver.org/latest/en/user/data/raster/image mosaic/index.html •

    http://docs.geoserver.org/latest/en/user/data/raster/covera geview.html • http://docs.geoserver.org/latest/en/user/tutorials/imagemos aic_footprint/imagemosaic_footprint.html • GeoSolutions training: • https://geoserver.geo-solutions.it/edu/en/multidim/accessin g_multidim/coverageview.html
  24. Filtering via WMS-T support TIME, ELEVATION & Custom dimensions http://localhost:8080/geoserver/geosolutions/wms?...

    &time=2013-03-1T00:00:00.000Z &elevation=35.0 &DIM_FILEDATE=2013-03-01T00:00:00.000Z &DIM_UPDATED=2013-04-08T08:18:41.597Z
  25. Rendering transformations • Style based transformations • Applied on the

    fly, yet fast enough for interactive use • Pluggable: add your own contouring
  26. On the fly map algebra with Jiffle nir = src[7];

    vir = src[3]; dest = (nir-vir)/ (nir+vir); • Jiffle: powerful and fast map algebra language • Can be used as a rendering transformation
  27. Documentation links • GeoServer documentation • http://docs.geoserver.org/latest/en/user/services/wms /time.html • http://docs.geoserver.org/stable/en/user/data/webad

    min/layers.html#edit-layer-dimensions • http://docs.geoserver.org/latest/en/user/styling/sld/ex tensions/rendering-transform.html • GeoSolutions training: • https://geoserver.geo-solutions.it/edu/en/wps/renderi ng_tx.html • Jiffle documentation: • https://github.com/geosolutions-it/jai-ext/wiki/Jiffle
  28. WCS 2.0 • Basics • Core service • KVP binding

    • XML binding • Common extensions • CRS • Scaling • Interpolation • Range subsetting • GeoTiff • GML • NetCDF • Add the output format extensions • GeoTIFF • GML Grid • NetCDF
  29. Asynchronous download • WCS 2.0 is a fine protocol •

    But it’s synchronous • Not well suited for large downloads • WPS execute can be asynchronous • WPS download plugin • Dedicated to large extractions