Getting started
A working install, your first GeoDataFrame, and what Python GIS is for.
Everything on Spatial Workflow about getting started, in the order that usually works: understand the idea, then run the task, then fix it when it goes wrong. 24 guides in total.
7 learning paths run through this topic — follow one if you would rather work through a route than pick a single guide.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- What Is a GeoDataFrame? Structure and Key Concepts geodataframe python
- Shapely Basics: Working with Geometry Objects in Python shapely python geometry
- Vector vs Raster Data in Python GIS: Key Differences vector raster data python gis
- Introduction to Rasterio: Reading Raster Data in Python rasterio python tutorial
- Python for GIS: What It Is and When to Use It python for gis
- GeoPandas Basics: Working with Spatial Data in Python geopandas basics
- PyQGIS vs GeoPandas: Which to Use for GIS Automation pyqgis vs geopandas
- What GDAL and OGR Actually Are (and Why Everything Depends on Them) what is gdal ogr
- Reproducible GIS Environments Explained: conda, pip, Lockfiles and Docker reproducible gis environment python
- GIS Data Sources Explained: Where Spatial Data Comes From gis data sources
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Set Up a Python GIS Environment That Actually Works python gis environment setup
- How to Explore a Spatial Dataset You Have Never Seen Before explore spatial dataset python
- How to Open Any Spatial File in Python When You Do Not Know the Format open any spatial file python
- How to Set Up Jupyter for Python GIS Work jupyter python gis setup
- Your First Python GIS Analysis: From Download to Map in One Script first python gis analysis
- How to Download Administrative Boundaries in Python download administrative boundaries python
- How to Install and Load the DuckDB Spatial Extension install duckdb spatial
- How to Move Data Between DuckDB and GeoPandas duckdb geopandas
- How to Open a NetCDF File in Python with xarray open netcdf python xarray
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
- GeoPandas Installation Fails: How to Fix Common Errors geopandas installation error
- Fiona ImportError When Using GeoPandas: How to Fix It fiona importerror geopandas
- GDAL and GeoPandas Fail Inside Docker: How to Fix the Build geopandas gdal docker build fails
- Fixing xarray's "Did Not Find a Match in Any of xarray's Installed Backends" xarray did not find a match installed backends
- Fixing H3 AttributeError After Upgrading: the v3 to v4 API Rename h3 has no attribute geo_to_h3
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
-
Finding & Fetching Data
Get the data before you analyse it — from OSM, web services and satellite catalogues.
Open path → -
Raster Analysis
Read, reproject, clip and summarise raster data in Python.
Open path → -
Batch Processing
Process many files at once, reliably.
Open path → -
QGIS Automation
Automate QGIS with PyQGIS and Processing models.
Open path → -
DuckDB for Spatial Data
A spatial database with no server, reading the file you already have.
Open path → -
Gridded & Climate Data
A raster with a time axis, a calendar and forty years in one file.
Open path → -
H3 & Global Grids
Give every point a cell id and half the geometry work becomes a join.
Open path →
Related topics
Subjects that keep coming up alongside this one, most overlap first.