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.
- Getting started Fundamentals 3 fixes
- Files & formats Fundamentals 14 fixes
- Data sources & downloads Fundamentals 4 fixes
- Geometry & topology Geometry & space 9 fixes
- CRS & projections Geometry & space 14 fixes
- Joins & relationships Geometry & space 6 fixes
- Networks & routing Geometry & space 4 fixes
- Satellite imagery Imagery & point clouds 3 fixes
- LiDAR & point clouds Imagery & point clouds 3 fixes
- Data cleaning Analysis 11 fixes
- Raster & rasterio Analysis 8 fixes
- Maps & visualisation Analysis 7 fixes
- Spatial statistics Analysis 4 fixes
- Terrain & elevation Analysis 4 fixes
- Movement & time Analysis 2 fixes
- Web maps & tiles Analysis 3 fixes
- Spatial machine learning Modelling & prediction 3 fixes
- Interpolation & surfaces Modelling & prediction 3 fixes
- Batch processing Production 7 fixes
- Pipelines & automation Production 8 fixes
- Performance & scale Production 11 fixes
- Cloud-native formats Production 3 fixes
- Testing, CI & Docker Production 5 fixes
- QGIS & PyQGIS Tools 6 fixes
- PostGIS & databases Tools 4 fixes
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
Get the data before you analyse it — from OSM, web services and satellite catalogues.
3 of its 14 steps are fixes → -
Spatial Statistics
Measure the pattern instead of eyeballing the map.
3 of its 13 steps are fixes → -
Terrain & Elevation
Turn a grid of heights into slope, shade, contours and drainage.
3 of its 12 steps are fixes → -
Networks & Routing
Distance along the street, not across the rooftops.
3 of its 11 steps are fixes → -
Raster Analysis
Read, reproject, clip and summarise raster data in Python.
4 of its 14 steps are fixes → -
Spatial SQL & PostGIS
Move the heavy lifting from Python into the database.
4 of its 15 steps are fixes → -
Making Maps
Turn a GeoDataFrame into a map someone else can read.
3 of its 13 steps are fixes → -
GIS Data Cleaning
Turn messy spatial data into analysis-ready datasets.
13 of its 33 steps are fixes → -
Batch Processing
Process many files at once, reliably.
5 of its 26 steps are fixes → -
Automation & Pipelines
Build repeatable, config-driven GIS pipelines.
5 of its 26 steps are fixes → -
QGIS Automation
Automate QGIS with PyQGIS and Processing models.
6 of its 25 steps are fixes → -
Satellite Imagery
From a scene on a catalogue to a number you can defend.
3 of its 16 steps are fixes → -
LiDAR & Point Clouds
Millions of points, and the surfaces worth deriving from them.
3 of its 14 steps are fixes → -
Cloud-Native GIS
Read the part you need, not the file it lives in.
3 of its 14 steps are fixes → -
Publishing Web Maps
Get the data into a browser without shipping the whole dataset.
3 of its 15 steps are fixes → -
Movement & Time
Tracks are not points — the order and the clock are the data.
2 of its 14 steps are fixes → -
Spatial Machine Learning
Why the usual rules break, and what to do instead.
3 of its 14 steps are fixes → -
Interpolation & Surfaces
A continuous surface from scattered samples, with its support attached.
3 of its 13 steps are fixes →
Every fix, A–Z
90 guides in total. Showing 1–30, page 1 of 3.
- A LAZ File Will Not Open in Python laz file will not open
- Batch GIS Job Slows Down and Runs Out of Memory: How to Fix It batch job memory leak python
- Batch Job Gives Different Results Each Run: How to Fix It gis batch non deterministic output
- Batch Output Files Keep Overwriting Each Other: How to Fix It batch output files overwriting
- Batch Script Stops at the First Bad File: How to Keep It Running batch script stops on error
- buffer(0) Does Not Fix My Invalid Geometry: What to Do Instead buffer 0 not fixing geometry
- Cannot Transform Naive Geometries to CRS: How to Fix It in GeoPandas cannot transform naive geometries
- Contours Come Out Jagged or Full of Tiny Rings contours jagged noisy
- CRS Not Found Error in GeoPandas: Causes and Fixes crs not found geopandas
- dask-geopandas Uses More Memory or Time Than Plain GeoPandas dask geopandas slower than geopandas
- DBSCAN Returns One Giant Cluster or Labels Everything Noise dbscan one cluster
- Feature Importance Says Coordinates Are the Best Predictor coordinates dominate feature importance
- Fiona ImportError When Using GeoPandas: How to Fix It fiona importerror geopandas
- Fixing Memory Errors in GeoPandas When Working with Large Files geopandas memory error
- Garbled Attribute Text and UnicodeDecodeError from a Shapefile: How to Fix Encoding shapefile encoding error python
- GDAL and GeoPandas Fail Inside Docker: How to Fix the Build geopandas gdal docker build fails
- GDAL Cannot Open an S3 or HTTPS Path gdal cannot open s3 url
- Geocoding Returns Wrong or Missing Coordinates geocoding wrong coordinates
- GeoJSON Downloaded from an API Is Empty or Truncated api geojson truncated
- GeoPandas .apply() Takes Hours: How to Fix It geopandas apply slow
- GeoPandas "Columns Overlap but No Suffix Specified" Error: How to Fix It columns overlap but no suffix specified
- GeoPandas "Geometry Is in a Geographic CRS" Warning: How to Fix It geopandas geographic crs warning
- GeoPandas "No Geometry Column" Error: How to Fix It geopandas no geometry column
- GeoPandas Cannot Connect to PostGIS: How to Fix It geopandas postgis connection error
- GeoPandas Installation Fails: How to Fix Common Errors geopandas installation error
- GeoPandas Merge Returns NaN or No Matches: How to Fix It geopandas merge no matches
- GeoPandas Not Reading Shapefile: Common Causes and Fixes geopandas not reading shapefile
- GeoPandas Spatial Join Returns Duplicate Rows: How to Fix It geopandas spatial join duplicates
- GeoPandas to_file() Fails on a Column Type: How to Fix It geopandas to_file field type error
- GIS Tests Pass Locally but Fail in CI: How to Fix It gis tests fail in ci