A Jupyter notebook extension for geospatial visualization and analysis
Clone or download
Latest commit 1ed1afb Apr 24, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Add coverage reporting at codecov.io back in Apr 21, 2017
config Merge remote-tracking branch 'origin/master' into configure-base-layer Jan 25, 2017
devops Pin incompatible dependencies Apr 16, 2018
docs Change docs to clone from https rather than git Oct 16, 2017
geonotebook Fix the subset bug for annotations Jul 21, 2017
js Default to ol map renderer to support non-webgl browsers Mar 1, 2018
notebooks Add a Readme that links out to Slides Aug 30, 2017
screenshots Switch to external hosting of assets Feb 6, 2017
tests Add integration test for a non WGS84 geotiff Jul 21, 2017
.codecov.yml Add codecov config file Jan 26, 2017
.coveragerc Tweak tox/coverage to not include generated files Jan 9, 2017
.dockerignore Add node_modules to .dockerignore file Mar 28, 2017
.gitignore Ignore unnecessary devops files/directories Jan 30, 2017
Dockerfile Remove the --allow-root flag when executing jupyter Apr 16, 2018
LICENSE Added apache license Sep 16, 2016
MANIFEST.in Add static assets to the python manifest Feb 1, 2017
README.md Change docs to clone from https rather than git Oct 16, 2017
Vagrant.md Add documentation for Vagrantfile Jan 31, 2017
Vagrantfile Properly name Vagrant virtual machine as "geonotebook" Jan 31, 2017
prerequirements.txt Pin incompatible dependencies Apr 16, 2018
requirements-dev.txt Add base installation of Sphinx docs Mar 30, 2017
requirements-rtd.txt Fix readthedocs build system Mar 30, 2017
requirements.txt Tweaks to get python 3 kernel working Mar 15, 2017
setup.py Pin incompatible dependencies Apr 16, 2018
tox.ini Add dockerfile for circle2.0 Apr 21, 2017


GeoNotebook CircleCI Gitter chat

GeoNotebook is an application that provides client/server environment with interactive visualization and analysis capabilities using Jupyter, GeoJS and other open source tools. Jointly developed by Kitware and NASA Ames.

Documentation for GeoNotebook can be found at http://geonotebook.readthedocs.io.


screen shot

Checkout some additional screenshots


System Prerequisites

For default tile serving

  • GDAL >= 2.1.0
  • mapnik >= 3.1.0
  • python-mapnik >= 0.1

Clone the repo:

git clone https://github.com/OpenGeoscience/geonotebook.git
cd geonotebook

Make a virtualenv, install jupyter[notebook], install geonotebook

mkvirtualenv -a . geonotebook

# Numpy must be fully installed before rasterio
pip install -r prerequirements.txt

pip install -r requirements.txt

pip install .

# Enable both the notebook and server extensions
jupyter serverextension enable --sys-prefix --py geonotebook
jupyter nbextension enable --sys-prefix --py geonotebook

Note The serverextension and nbextension commands accept flags that configure how and where the extensions are installed. See jupyter serverextension --help for more information.

Installing geonotebook for development

When developing geonotebook, it is often helpful to install packages as a reference to the checked out repository rather than copying them to the system site-packages. A "development install" will allow you to make live changes to python or javascript without reinstalling the package.

# Install the geonotebook python package as "editable"
pip install -e .

# Install the notebook extension as a symlink
jupyter nbextension install --sys-prefix --symlink --py geonotebook

# Enable the extension
jupyter serverextension enable --sys-prefix --py geonotebook
jupyter nbextension enable --sys-prefix --py geonotebook

# Start the javascript builder
cd js
npm run watch

Run the notebook:

cd notebooks/
jupyter notebook

Configure the notebook:

Geonotebook relies on a configuration for several of its options. The system will merge configuration files in the following precedence:

  • /etc/geonotebook.ini
  • /usr/etc/geonotebook.ini
  • /usr/local/etc/geonotebook.ini
  • sys.prefix/etc/geonotebook.ini (e.g. /home/user/.virtual_environments/geonotebook/etc/geonotebook.inig)
  • ~/.geonotebook.ini
  • os.getcwd()/.geonotebook.ini
  • any path specified in the GEONOTEBOOK_INI environment variable.

The default configuration is installed in sys.prefix/etc/geonotebook.ini

Run the tests

# From the source root
pip install -r requirements-dev.txt

# Optionally only run tests on python 2.7
# tox -e py27

Docker Container

System requirements for running the notebook can sometimes prove burdensome to install. To ease these issues we have included a docker container that will run the notebook inside a containerized process.

Vagrant Machine

Additionally there is a Vagrantfile for standing up an instance of Geonotebook within a virtual machine, further instructions can be found here.

Tile Server

By default geonotebook provides its own tile server based on Mapnik and GDAL as a Jupyter Notebook server extension. Assuming system pre-requisites are available this should not need to be configured. Alternately geonotebook may be configured to use a pre-existing Geoserver for serving tiles. A built in geoserver implementation is available as a virtual machine in devops/geoserver/.

Use geoserver for tile serving

First provision the geoserver

cd devops/geoserver/
vagrant up

Second change the vis_server configuration to geoserver in the [default] section of your configuration. Then include a [geoserver] section with the pertinent configuration. E.g.:



username = admin
password = geoserver
url =