hnawaz007 /
pythondataanalysis
Python data repo, jupyter notebook, python scripts and data.
69/100 healthLoading repository data…
mortcanty / repository
Python scripts and Jupyter Notebooks for the textbook "Image Analysis, Classification and Change Detection in Remote Sensing, Fifth Revised Edition"
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Companion Python scripts, Jupyter notebooks and Docker images for the textbook
Image Analysis, Classification and Change Detection in Remote Sensing Fifth Revised Edition Mort Canty
All material in this repository is pre-installed in the Docker image
mort/crc5docker so that the
chapter examples and exercises can be reproduced without any local Python
setup.
This repository provides the software that accompanies the fifth revised edition of the textbook Image Analysis, Classification and Change Detection in Remote Sensing. It contains:
Chapter1.ipynb ... Chapter9.ipynb) with the
worked examples from the book,src/scripts/ directory of stand-alone Python modules that the
notebooks import (e.g. iMad.py, kmeans.py, sar_seqQ.py),geemap, geopandas, GDAL and the rest
of the scientific Python stack,mort/crc5docker_rag image variant that adds an experimental
retrieval-augmented-generation (RAG) notebook for querying the textbook
with a local LLM.A supplementary ~60-page monograph on SAR change detection with Sentinel-1
(gee-s1.pdf) is included in the image.
docker run command gets you a fully
working JupyterLab.sar_seqQ.py and friends reproduce
the sequential algorithms from the SAR monograph.| Component | Minimum | Recommended |
|---|---|---|
| Docker Engine | 20.10+ | 24+ |
| Host OS | Linux, macOS 11+, Windows 10/11 WSL2 | Linux |
| Free disk space | 8 GB | 15 GB (RAG image is larger) |
| RAM | 8 GB | 16 GB |
| Google Earth Engine | required for the GEE notebooks | — |
| ollama account (free) | required for the RAG cloud backend | — |
The compressed crc5imagery directory used by the notebooks is hosted on
Google Drive:
https://drive.google.com/file/d/1EOJolX0Diumo0ebM6xDvCZQqb34s8Gxz/view?usp=sharing
Unpack it somewhere on the host machine and note the path. The notebooks
expect to find it at /home/imagery/ inside the container.
docker run -d \
-p 8888:8888 \
-v <path-to-crc5imagery>:/home/imagery/ \
--name=crc5 \
mort/crc5docker
This command
8888 of the container to 8888 on the host,crc5imagery directory onto /home/imagery/ in the
container, andcrc5.Open http://localhost:8888 in your browser — JupyterLab will appear.
Pick a ChapterN.ipynb notebook to begin.
docker stop crc5 # shut down
docker start crc5 # bring it back up
If you also want the LLM-augmented query notebook:
docker run -d \
-p 8888:8888 \
-p 7860-7869:7860-7869 \
-v <path-to-crc5imagery>:/home/imagery/ \
--name=crc5_rag \
mort/crc5docker_rag
The extra port range 7860-7869 is for the gradio web interface that serves
the RAG chat.
.
|-- LICENSE.txt # MIT licence
|-- README.md # this file
|-- run_jupyter # helper script for running Jupyter locally
|-- chapter_abstracts.pdf # one-page summary of every chapter
|-- errata5.pdf # known errata for the 5th edition
|-- gee-s1.pdf # SAR change-detection monograph (Sentinel-1)
|-- longbeach.pdf # supporting reference for the chapter examples
|-- python_scripts.pdf # auto-generated reference for src/scripts/*.py
|-- solutions.pdf # worked solutions to the exercises
'-- src/
|-- Chapter1.ipynb ... Chapter9.ipynb # the nine chapter notebooks
|-- crc5rag.ipynb # RAG/LLM query notebook (gradio UI)
|-- crc5rag_dev.ipynb # developer version of the RAG notebook
|-- Dockerfile # build for mort/crc5docker
|-- Dockerfile_rag # build for mort/crc5docker_rag
|-- requirements.txt # pinned Python dependencies
|-- setup.py # installs the bundled `auxil` package
|-- notebook.sh # container entry-point
|-- auxil/ # helper Python package
|-- scripts/ # ~40 stand-alone Python modules
|-- pngs/ # illustrations used by the notebooks
|-- imagery/ # placeholder; real data lives in the mounted volume
|-- build/ # build artefacts
'-- pythonfiles.zip # zipped copy of scripts/ for redistribution
ChapterN.ipynb notebooks are best opened in order — each builds
on the previous one.crc5rag.ipynb notebook contains the gradio interface for asking
natural-language questions about the textbook./home/imagery/. If you mount it elsewhere, edit the IMAGERY path near
the top of each notebook.Several notebooks initialise the Earth Engine Python API with
import ee
ee.Initialize(project='your-project-name')
Before that line will work, you must:
earthengine authenticate once in a terminal inside the container —
this stores a token in /root/.config/earthengine/.your-project-name with the project ID you registered.The mort/crc5docker_rag image is experimental. It includes
crc5rag.ipynb, which:
7860.Performance expectations
| Backend | Typical answer time | Answer quality |
|---|---|---|
| Local llama3.1 on CPU | minutes | often misleading |
| ollama cloud (free account) | seconds | reliable and pertinent |
A free ollama account is required for the cloud backend; the RAG notebook itself walks you through signing in.
| File | Purpose |
|---|---|
python_scripts.pdf | reference for every module in src/scripts/ |
chapter_abstracts.pdf | one-paragraph summary of each chapter |
errata5.pdf | corrections to the 5th edition |
gee-s1.pdf | ~60-page SAR change-detection monograph |
longbeach.pdf | background reading for the example imagery |
solutions.pdf | worked solutions to the end-of-chapter exercises |
Earth Engine community tutorials referenced by the notebooks:
port is already allocated — another container or process is using
8888 on the host. Change the host side: -p 8889:8888, then browse to
http://localhost:8889.docker: name already in use — a container called crc5 (or
crc5_rag) already exists. Remove it with docker rm crc5, or pick a
different name with --name=....ee.Initialize() fails — run earthengine authenticate inside the
container and make sure your GCP project ID is correct.docker system prune.This project is released under the MIT License. See
LICENSE.txt for the full text.
MIT License — Copyright (c) 2024 Mort Canty
Mort Canty E-mail: mort.canty@gmail.com
Suggestions, corrections and pull requests are welcome.
Last refreshed 2026-05-12 (matches the REFRESHED_AT in src/Dockerfile).
Selected from shared topics, language and repository description—not editorial ratings.
hnawaz007 /
Python data repo, jupyter notebook, python scripts and data.
69/100 healthdigitalearthafrica /
Repository for Digital Earth Africa Sandbox, including: Jupyter notebooks, scripts, tools and workflows for geospatial analysis with Open Data Cube and xarray
82/100 healthremykarem /
Convert from Python script to Jupyter notebook and vice versa
michaelgrund /
Collection of GMT (Generic Mapping Tools) scripts, jupyter notebooks (using PyGMT) and files (including digitized map content, colormaps, grid files etc.)
73/100 healthflorianwittkamp /
Collection of Matlab, Python and Jupyter Notebook scripts for Finite-Difference seismic wave simulation in 1-D and 2-D
66/100 healthKMFleischer /
The PyEarthScience repository created by DKRZ (German Climate Computing Center) provides Python scripts and Jupyter notebooks in particular for scientific data processing and visualization used in climate science. It contains scripts for visualization, I/O, and analysis using PyNGL, PyNIO, xarray, cfgrib, xesmf, cartopy, and others.
82/100 health