finds.dev← search

// the find

kitware-data-solutions/geonotebook

★ 1,089 · Python · Apache-2.0 · updated Jan 2019

A Jupyter notebook extension for geospatial visualization and analysis

GeoNotebook bolts a Leaflet/GeoJS map view onto classic Jupyter notebooks so you can interactively visualize and query raster/vector geospatial data (layers, time series, annotations) without leaving the notebook. Built by Kitware and NASA Ames, aimed at scientists doing raster analysis who want a map widget synced to their Python kernel via JSON-RPC.

The JSON-RPC bridge between the JS frontend and Python kernel (js/src/jsonrpc, geonotebook/jsonrpc.py) is a clean, well-tested pattern for two-way notebook widget communication, and it's actually covered by unit tests on both sides (js/test, tests/test_jsonrpc.py). Pluggable tile serving is a real feature, not just a README claim - it ships its own Mapnik/GDAL-based tile server (vis/ktile) and can swap to a real GeoServer backend via config. The raster/vector wrapper layer (wrappers/raster.py, wrappers/vector.py) gives a reasonable abstraction over GDAL for subsetting and reading imagery.

Last commit is January 2019 - it targets the classic Jupyter Notebook extension model (nbextension/serverextension), which JupyterLab has since obsoleted, so this won't install cleanly on any current Jupyter stack without real porting work. System dependency chain (GDAL >= 2.1, Mapnik >= 3.1, python-mapnik) is heavy and python-mapnik itself has been effectively unmaintained for years, making a fresh install a real slog. Python 2.7 is still referenced in the test tooling (tox -e py27), underscoring how dated the codebase is. No packaging on PyPI in any recent form and no CI runs post-2019, so 'pip install .' is likely to just fail on modern Python/GDAL combos rather than degrade gracefully.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →