Introduction to GIS Programming#

image image Docker Image Amazon YouTube

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

book cover

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.

image

Using Google Colab#

The code examples can be run using Google Colab.

image

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.

Enroll Now

About the Author#

Dr. Qiusheng Wu is an Associate Professor and the Director of Graduate Studies in the Department of Geography & Sustainability at the University of Tennessee, Knoxville. He also serves as an Amazon Scholar. Dr. Wu’s research focuses on geospatial data science and open-source software development, with an emphasis on leveraging big geospatial data and cloud computing to study environmental change, particularly surface water and wetland inundation dynamics. He is the creator of several widely used open-source Python packages, including geemap, leafmap, segment-geospatial, and geoai, which support advanced geospatial analysis and interactive visualization. His open-source work is available at the Open Geospatial Solutions on GitHub.

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.