Author

Henry Rodman

Published

December 13, 2024

Tile rendering time has a big impact on the user experience so the goal is to minimize the time it takes to properly render tiles. This report contains a comparison between two systems for serving dynamic tiles from the icesat2-boreal collection.

icesat2-boreal collection

The icesat2-boreal collection is a MAAP dataset contains aboveground biomass predictions for the boreal region. The predictions are stored in cloud-optimized geotiffs (COGs) in AWS S3 storage. The collection can be visualized using dynamic tiling applications like titiler. For more details about the underlying data, check out the product page.

Collection details:

  • 30 meter resolution
  • ~4900 90x90 km COGs

Tiling service details

We are testing two dynamic tile rendering services that use different methods to construct the list of assets required for each tile. Both services are deployed as serverless functions on AWS in the us-west-2 region and are reading raster data from the same S3 bucket and returning rendered tile images to the client.

titiler-pgstac: /collections/{collection_id}/tiles endpoint

  • Queries a pgstac database to determine which STAC items in the icesat2-boreal collection are required to render an image for an XYZ tile
  • Requires a Lambda and Postgresql database to be deployed
  • Struggles to render tiles at zoom levels 5 and below
  • See deployment details in maap-eoapi

titiler: /mosaicjson/{mosaic_id}/tiles endpoint

  • Queries a MosaicJSON document in a dynamodb table to get the pre-calculated list of assets required to render an image for an XYZ tile
  • Requires a Lambda but does not require a database instance
  • Struggles to render tiles at zoom levels 6 and below

Tile rendering benchmark comparison

This benchmark simulates map browsing behavior by requesting a viewport of 63 tiles (9×7 grid) centered at -102°W, 57°N. The test makes concurrent requests using async/await to mirror how modern web browsers load map tiles.

Each test includes warmup iterations and multiple rounds to ensure reliable measurements. Results show the total time to load a complete viewport, with success and error counts providing insight into service reliability. Lower response times indicate better perceived performance for end users.

The benchmark results clearly show that titiler-pgstac will return rendered tiles much faster than the MosaicJSON service for all zoom levels.

Map browsing comparison

Try browsing a map with each tile service to get a sense for what the rendering time is for each one. The viewports for the two maps are synchronized and start out at zoom level 6.

titiler-pgstac

mosaicjson

Make this Notebook Trusted to load map: File -> Trust Notebook
0 100 200
aboveground biomass (Mg/ha)
Note

No tiles will be rendered if you zoom out beyond zoom level 6!