Introduction to GIS Programming#
Introduction#
Welcome to the official repository for Introduction to GIS Programming: A Practical Python Guide to Open Source Geospatial Tools. This repository contains all the code examples featured in the book, designed to help you learn and apply Python for geospatial analysis using open-source tools.
Get the Book#
🇺🇸 Full-Color Print Edition (556 pages): Now available on Amazon (link)
🇺🇸 English PDF Edition (553 pages): Available on Leanpub (link)
🇨🇳 Chinese PDF Edition (540 pages): 中文电子版可在 Leanpub 购买 (link)
🇯🇵 Japanese PDF Edition (573 pages): 日本語版が Leanpub で利用可能 (link)
🇰🇷 Korean PDF Edition (555 pages): 한국어판 Leanpub에서 이용 가능 (link)
🇲🇽 Spanish PDF Edition (572 pages): Edición en español disponible en Leanpub (link)
🇫🇷 French PDF Edition (581 pages): Édition française disponible sur Leanpub (link)
🇵🇹 Portuguese PDF Edition (569 pages): Edição em português disponível na Leanpub (link)
🇮🇩 Indonesian PDF Edition (565 pages): Edisi bahasa Indonesia tersedia di Leanpub (link)
🇩🇪 German PDF Edition (582 pages): Deutschsprachige Edition auf Leanpub verfügbar (link)
🇷🇺 Russian PDF Edition (599 pages): Российская версия на Leanpub доступна (link)
Cite the Book#
If you use this book in your research or teaching, please consider citing it as follows:
Wu, Q. (2025). Introduction to GIS Programming: A Practical Python Guide to Open Source Geospatial Tools. Independently published. ISBN 979-8286979455. https://amazon.com/dp/B0FFW34LL3
Table of Contents#
To download a PDF version of the Table of Contents, please visit https://gispro.gishub.org/book-toc.pdf.
Preface
Introduction
Who This Book Is For
What This Book Covers
Getting the Most Out of This Book
Conventions Used in This Book
Downloading the Code Examples
Video Tutorials
Get in Touch
Acknowledgments
About the Author
Licensing and Copyright
Software Setup
Overview of Software Tools
Introduction to Python Package Management
Setting Up Visual Studio Code
Version Control with Git
Using Google Colab
Working with JupyterLab
Using Docker
Python Programming Fundamentals
Variables and Data Types
Python Data Structures
String Operations
Loops and Conditional Statements
Functions and Classes
Working with Files
Data Analysis with NumPy and Pandas
Geospatial Programming with Python
Introduction to Geospatial Python
Vector Data Analysis with GeoPandas
Working with Raster Data using Rasterio
Multi-dimensional Data Analysis with Xarray
Raster Analysis with Rioxarray
Interactive Visualization with Leafmap
Geoprocessing with WhiteboxTools
3D Mapping with MapLibre
Cloud Computing with Earth Engine and Geemap
Hyperspectral Data Visualization with HyperCoast
High-Performance Geospatial Analytics with DuckDB
Geospatial Data Processing with GDAL and OGR
Building Interactive Dashboards with Voila and Solara
Distributed Computing with Apache Sedona
How to Run Code Examples#
The code examples are organized into folders, each corresponding to a chapter in the book. The code examples are written in Python and can be run using MyBinder, Google Colab, or Docker. Follow this video tutorial to learn how to run the code examples.
Using MyBinder#
The code examples can be run using MyBinder.
Using Google Colab#
The code examples can be run using Google Colab.
Using Docker#
The code examples can be run using Docker. There are two Docker images available:
A lightweight docker image without Apache Sedona:
docker pull giswqs/pygis:book
docker run -it -p 8888:8888 -v $(pwd):/app/workspace giswqs/pygis:book
A docker image with Apache Sedona:
docker pull giswqs/pygis:sedona
docker run -it -p 8888:8888 -p 4040:4040 -p 8080:8080 -p 8081:8081 -p 7077:7077 -p 8085:8085 -v $(pwd):/app/workspace giswqs/pygis:sedona
Video Tutorials#
Complementing the written content, this book is supported by a comprehensive series of video tutorials that walk through key concepts and provide additional examples:
https://tinyurl.com/intro-gispro-videos
The videos are designed to complement, not replace, the written material. They’re particularly helpful for:
Visual learners who benefit from seeing code being written and executed
Understanding complex concepts through multiple explanations
Learning about the development workflow and best practices
Seeing how to approach problems and debug issues
The playlist is organized to follow the book’s structure. You can watch them in order as you progress through the book, or jump to specific topics as needed.
The videos were created in Fall 2024 when I was teaching the Introduction to GIS Programming course at the University of Tennessee. Although the course has concluded, the videos remain relevant and can be used as a reference for the book. Additional videos will be added in the future.
Enroll for Certification#
Please note that you can access the course materials and lecture videos on the course website without enrolling in the course. However, if you’re interested in submitting lab assignments, receiving grades, and earning a certificate of completion, you can enroll in the course at any time by clicking the link below. There is no deadline for enrollment, and you can complete the course at your own pace.
Acknowledgments#
This book was written using MyST Markdown and compiled using Typst with the min-book template. Credits to developers and maintainers of the Typst and MyST Markdown projects. Special thanks to @mayconfmelo for the min-book template and their help with customizing the template for this book.
Licensing and Copyright#
This book embraces the principles of open science and open education. To support transparency, learning, and reuse, the code examples in this book are released under a Creative Commons Attribution 4.0 International (CC BY 4.0) license. This means you are free to copy, modify, and distribute the code, even for commercial purposes, as long as appropriate credit is given.
Please attribute code usage by citing the book or linking to the GitHub repository:
Wu, Q. (2025). Introduction to GIS Programming: A Practical Python Guide to Open Source Geospatial Tools. Independently published. ISBN 979-8286979455. https://amazon.com/dp/B0FFW34LL3
While the code is freely available, the text, figures, and images in this book are copyrighted by the author and may not be reproduced, redistributed, or modified without explicit permission. This includes all written content, custom diagrams, and embedded visualizations unless otherwise noted.
If you wish to reuse or adapt any non-code material from the book—for example, for teaching, presentations, or publications—please contact the author to request permission.
This dual licensing approach helps balance open access to learning materials with the protection of original creative work. Thank you for respecting these terms and supporting the open-source geospatial community.