Fixes
Targeted fixes for the most frustrating Python GIS errors — from a failed install to a batch job that stops at file seven.
Python GIS errors tend to fall into a small number of repeating patterns. A CRS mismatch silently breaks a spatial join. A Fiona import error stops GeoPandas from loading entirely. A memory error crashes the script halfway through a large dataset. These guides diagnose the root cause and give you a concrete fix.
The collection now follows the learning paths all the way into production. Alongside the classic GeoPandas errors you will find the failures that only appear once a workflow runs unattended: a batch loop that dies on one bad file, outputs that overwrite each other, a scheduled script that works in your terminal and not from cron, a YAML config that will not load, a pipeline that reports success while producing nothing, and PyQGIS scripts that segfault or return an empty layer.
Each guide explains why the error happens — not just what command to run. Understanding the cause means you can avoid the same problem next time and adapt the fix to slightly different situations. If you are hitting an error you have not seen before, start with the guide closest to your symptoms.
Browse by topic
The fastest way in. Each topic page pairs these fixes with the concepts that explain them and the tasks they interrupt.
Fundamentals What the objects, files and libraries actually are.
Geometry & space The shapes themselves, where they sit on the earth, and how they relate.
Imagery & point clouds Data that arrives as measurements of a surface rather than as features on it.
Analysis Getting from a raw download to something you can put in front of someone.
- Data cleaning
- Raster & rasterio
- Maps & visualisation
- Spatial statistics
- Census & demographics
- Housing & property data
- Terrain & elevation
- Hydrology & watersheds
- Movement & time
- Public transit & GTFS
- Web maps & tiles
- Python map libraries
- Cartography & map design
- Election maps & cartograms
- Animated & time-series maps
- Wildfire mapping
- Land cover & land change
- Health & disease mapping
- Flow maps & origin–destination data
- Bike share & micromobility
- Air travel & flight data
- Road traffic counts
- Street trees
- Drought
- Taxi & ride-hail trips
- Power plants & electricity
- Bridges & infrastructure condition
- 311 & service requests
- Severe storms & tornadoes
- Hurricanes & tropical cyclones
- Disasters & flood insurance
- Electric vehicles
- Restaurant inspections
- Historical maps & georeferencing
- Snow, ice & glaciers
- Crime & public safety mapping
- Road crashes & traffic safety
- Population grids
- Sea surface temperature & marine heatwaves
- Earthquakes & seismic hazard
- Wind & vector fields
- Rainfall, radar & storms
- Coastal & marine
- Agriculture & vegetation
- Biodiversity & species data
- Linear referencing
- Natural hazards & risk
- Air quality
- Renewable energy siting
- Urban form & morphology
- Forest monitoring
- Urban heat
Modelling & prediction Predicting values where nobody measured them, and deciding where things should go — with the limits of each model attached.
Production Work that runs without you watching it.
Delivery & sharing Handing the work to someone else: an API, an app, a link that keeps working.
Governance & trust What a dataset is allowed to say, who it is allowed to say it about, and how anyone proves where it came from.
Tools The other software in a Python GIS stack, driven from Python.
Or follow a learning path Curated routes in the order that builds on itself — concepts first, then each task, then the errors it produces.
- Finding & Fetching Data
- Spatial Statistics
- Terrain & Elevation
- Networks & Routing
- Raster Analysis
- Spatial SQL & PostGIS
- Making Maps
- GIS Data Cleaning
- Batch Processing
- Automation & Pipelines
- QGIS Automation
- Satellite Imagery
- LiDAR & Point Clouds
- Cloud-Native GIS
- Publishing Web Maps
- Movement & Time
- Spatial Machine Learning
- Interpolation & Surfaces
- Geocoding & Addresses
- Cartography & Map Design
- DuckDB for Spatial Data
- Serving Spatial Data
- Maps, Apps & Dashboards
- Gridded & Climate Data
- H3 & Global Grids
- Census & Demographics
- Location & Accessibility
- Hydrology & Watersheds
- Geoprivacy & Anonymisation
- Metadata, Licensing & Provenance
- 3D & Buildings
- Coastal & Marine
- Agriculture & Crops
- Public Transit & GTFS
- Radar & SAR Imagery
- Biodiversity & Species Data
- Linear Referencing
- Natural Hazards & Risk
- Air Quality Data
- Renewable Energy Siting
- Urban Morphology
- Forest Monitoring
- Urban Heat Mapping
Every fix, A–Z
Page 1 — use the page links below, or browse by topic above.
- 311 Counts Inflated by Duplicates: One Problem, Many Requests
- 311 Requests Closed Before They Were Created: Impossible Dates
- 311 Requests With No Location: Missing Coordinates and Placeholder Addresses
- A 3D viewer shows nothing or a black screen
- A building mesh is not watertight and its volume is wrong
- A coastline or EEZ breaks at the antimeridian
- A crop classifier confuses two crops every year
- A downloaded layer has no licence you can find
- A GBIF download is missing records
- A GTFS query returns no trips, or the wrong trips, on a date
- A hazard raster's nodata is read as zero
- A LAZ File Will Not Open in Python
- A point snaps to the wrong carriageway
- A prescription map is rejected by the machine controller
- A range polygon has the wrong shape
- A richness map is a map of sampling effort
- A SAR flood map shows water where there is none
- A SAR image looks noisy after processing
- A SAR image looks stretched or smeared in mountains
- A shared file still contains the original coordinates
- A species distribution model scores well and predicts badly
- A STAC item is rejected by the validator
- A yield map has impossible values and stripes
- ACE Comes Out Too High: Landfall Records Between Six-Hourly Fixes
- Air Quality Data Gaps and Negative Values
- AIS tracks jump across the world
- An event's measure falls outside the route
- An inundation map floods inland areas that cannot flood
- Anonymised points still identify individuals
- AQI Averaged the Wrong Way