JupyterGIS

JupyterGIS is an extension to JupyterLab that adds a GIS to the notebook environment: a map with layers, symbology and an identify tool, next to the notebooks and files of a project. It is developed by QuantStack and Simula with funding from the European Space Agency, and is open source (GitHub).

Processing or communication?

JupyterGIS has both roles, and which one it plays depends on what you use it for.

  • As a processing environment, it keeps the analysis and the map together. A notebook loads and processes the data with Python libraries such as GeoPandas and Rasterio, and its Python API adds the result to the map. GDAL tools (rasterize, warp, translate) can also be run from the map itself. Because the code, the result and the text explaining it live in one project, the workflow documents itself.
  • As a communication environment, it is a shared map. Several people can edit the same map at the same time, “like Google Docs for GIS”, and leave comments tied to places on the map. This makes it useful for discussing a result with others, and less for producing a finished map for print.

On this site JupyterGIS is listed mainly as a processing environment that is easy to share. It is not a replacement for QGIS or the print layout.

Working with QGIS

JupyterGIS can import and export QGIS project files (.qgz), so a project started in QGIS can be opened, discussed and edited in JupyterGIS and taken back. The support covers layers, their data sources and their styles, not everything a QGIS project can contain. Its own maps are saved as .jGIS files.

Data

JupyterGIS reads GeoJSON, GeoPackage, GeoParquet, Shapefile, GeoTIFF and Cloud Optimised GeoTIFF, PMTiles, and WMS and WMTS services. It can also search satellite imagery through STAC.

Getting started

  • Try it in the browser without installing anything: the online demo runs JupyterGIS in JupyterLite. Real-time editing with others does not work in this version.
  • Install it in a Mamba environment with mamba install -c conda-forge jupytergis, then start jupyter lab. To share a map with others in real time, JupyterLab must run on a server that all of you can reach, for example in a Docker container.