Expanding Geospatial Workflows in JupyterGIS: STAC Browsing and Story Maps
Since its initial announcement less than two years ago, JupyterGIS has been a growing effort to bring interactive geospatial workflows into the Jupyter ecosystem. Early milestones focused on laying the foundations: a composable GIS interface in Jupyter, a shared document model allowing real-time collaboration, a Python scripting API for exploration in the Jupyter Notebook, and a compatibility layer with the QGIS file format.
With the project maturing, recent work has focused on improving two key aspects of everyday geospatial workflows: discovering data and sharing results.
In this post, we (the JupyterGIS team) introduce two new features that move JupyterGIS further in that direction. First, a STAC browser integrated directly into the JupyterGIS user interface, allowing users to explore SpatioTemporal Asset Catalogs and add selected items to a project as map layers. Second, a new Story Map feature, inspired by existing GIS storytelling tools, which makes it possible to combine maps and narrative content in a single, interactive view.
Together, these additions aim to make JupyterGIS not only a place to analyze geospatial data, but also a place to explore datasets and communicate results, all within Jupyter.
Exploring STAC Catalogs in JupyterGIS
The SpatioTemporal Asset Catalog (STAC) specification provides a common way to describe and access geospatial datasets, particularly large collections of Earth observation data. By standardizing how data and metadata are exposed, STAC enables tools to discover and query datasets across different providers using consistent spatial, temporal, and property-based criteria.
JupyterGIS now includes a STAC browser user interface that allows users to explore STAC catalogs directly from within a project. The browser makes use of the STAC Filter extension, enabling users to define rich queries on catalog items. Based on the catalog metadata, JupyterGIS automatically generates the corresponding UI components for defining these filters, making it possible to refine searches and add selected items to a project as layers without leaving the Jupyter environment.
At the moment, the STAC browser ships with a small set of preconfigured catalogs: CDSE’s Copernicus catalog, CNES’s Geodes catalog, and University of Southampton’s WorldPop. This limited selection reflects the early stage of the feature. Work is already underway by the Eric and Wendy Schmidt Center for Data Science & Environment (DSE) at UC Berkeley to allow users to connect to arbitrary STAC catalogs by providing their own catalog URL, and to introduce a catalog of STAC catalogs to make discovering and configuring additional data sources easier in future releases.
Story Maps in JupyterGIS
Communicating geospatial results often requires more than interactive maps alone. To address this, JupyterGIS now introduces a Story Map feature that makes it possible to combine narrative content with map-based views inside a single interface. Inspired by existing GIS storytelling tools, this feature allows users to structure a sequence of markdown text and map position, where each step can capture a specific state of the project, including visible layers, layers symbology, and map extent.
Story Maps in JupyterGIS are designed to complement exploratory and analytical workflows, providing a lightweight way to present results directly from the same environment in which they were produced. This makes it easier to move from data exploration to communication without exporting projects to external tools.
Try it live in your browser by clicking on the following link, https://notebook.link/@quantstack/earthquakes-story-map, hosted by notebook.link, a free service for sharing Jupyter documents.
Acknowledgments
This work on JupyterGIS by QuantStack was funded by the French National Centre for Space Studies (CNES).

About the author
Greg Mooney is a Scientific Computing Developer at QuantStack. He is one of the core developers of JupyterGIS, the author of jupyterlab-gather, and a contributor to several other Jupyter extensions.


