Skip to content
Switch branches/tags
Go to file
This branch is 53 commits ahead, 1 commit behind ceholden:master.

Open Source Geoprocessing Tutorial

Creative Commons License

Tutorial of basic remote sensing and GIS methodologies using modern open source software in Python (rasterio, shapely, GeoPandas, folium, etc). Notebooks cover raster processing, vector analysis, and a workflow to perform image classification using machine learning classifiers in scikit-learn:

All chapters are available as jupyter notebooks in the notebooks/ directory or viewable via a normal web browser in HTML:

  1. Introduction [HTML]
  2. The GDAL datatypes and objects [HTML]
  3. Your first vegetation index [HTML]
  4. Visualizing data [HTML]
  5. Vector data - the OGR library [HTML]
  6. Land cover classification [HTML]
  7. Deep Learning for land cover classification [HTML] built to run in Google Colab.
  8. Earth Engine for Oceanographic Time Series Analysis [HTML]
  9. Xarray for handling N-dimensional arrays and advanced visualization (in progress)
  10. Parallelization with dask for large datasets and faster analysis (in progress)

I strongly recommend using docker and downloading the jupyter notebooks so you can play as you read along, otherwise you will quickly forget these tools.

Some of the things you'll learn:

Raster Operations, Processing, and Visualization

Interactive Shapefile and Raster Visualization

Machine Learning based Satellite Image Classification


Materials and data for these lessons are included inside this repository under the data/ directory. I would recommend downloading all of the lesson material at once, instead of downloading individual files.

Two ways to download the entire repository include:

  • Use git to clone the repository (recommended)
  • Downloading and extracting a ZIP file of the 'master' branch

Python Installation

To run the Jupyter Notebooks (formerly known as IPython Notebooks) and follow the tutorial locally, you will need to install Python and the libraries used in the tutorials. This installation can be accomplished in many ways, but I will list the two most common approaches:

docker - recommended method

I highly recommend trying out Docker if you're not familiar with it. There is a bit of a startup time just for getting up to speed but it is the way to go for reproducible work. Docker provides operating-system-level virtualization, also known as "containerization" and thus you can be sure that your setup precisely replicates the one used here and will easily run everything. Once you've downloaded Docker you can simply cd into the cloned git repo and run:

docker build -t open-geo .

which will pull the Dockerfile from the current location and create an OS image called 'open-geo' from it and then to create the container run this from the top of the git repo:

docker run --name geo-cont -p 8888:8888 -v "$PWD:/opt/notebooks" -it open-geo

which will start a container called 'geo-cont' based on the 'open-geo' image, then it will mount the repo directory to the container's /opt/notebooks directory where you can go access this repo's jupyter notebooks.


You can also run this repository using Anaconda to make sure your python environment is isolated. After installing Anaconda or "miniconda" by following their instructions, you can install the dependencies as follows:

conda create --name open-geo-tutorial
source activate open-geo-tutorial
pip install -r requirements.txt


Tutorial of fundamental remote sensing and GIS methodologies using open source software in python




No releases published


No packages published