CRS & projections
Coordinate systems, EPSG codes, reprojection, and the silent errors they cause.
Everything on Spatial Workflow about crs & projections, in the order that usually works: understand the idea, then run the task, then fix it when it goes wrong. 26 guides in total.
4 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.
- EPSG Codes Explained: How to Choose the Right CRS in Python epsg codes python gis
- Coordinate Reference Systems (CRS) Explained for Python GIS coordinate reference systems python
- Coordinate Precision and Floating Point in GIS Explained coordinate precision gis floating point
- Raster Resampling Explained: Nearest, Bilinear and When Each Is Wrong raster resampling methods
- Choosing a Map Projection for Display: What Web Mercator Distorts map projection for display python
- Projected vs Geographic CRS: What Actually Changes When You Reproject projected vs geographic crs
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Calculate Area and Distance in GeoPandas (Correctly) calculate area geopandas
- How to Reproject Spatial Data in Python (GeoPandas) reproject spatial data geopandas
- How to Standardise and Repair CRS Across a Folder of Files in Python standardise crs across files python
- How to Reproject a Raster in Python with Rasterio reproject raster rasterio
- How to Add a Basemap to a GeoPandas Map with contextily geopandas basemap contextily
- How to Choose the Right Projected CRS for Your Study Area choose projected crs python
- How to Set, Assign and Convert CRS in GeoPandas (set_crs vs to_crs) set_crs vs to_crs geopandas
- How to Measure Distance Accurately in Python: Geodesic vs Projected measure distance accurately python
- How to Work with a Custom or Local CRS in Python custom crs proj string python
- How to Reproject Between Datums Correctly (and Why the Grid File Matters) datum transformation python pyproj
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
- Spatial Join Returns Empty Results in GeoPandas: How to Fix It spatial join empty geopandas
- CRS Not Found Error in GeoPandas: Causes and Fixes crs not found geopandas
- Why Does My GeoPandas Map Look Upside Down? geopandas map upside down
- How to Fix CRS Mismatch in GeoPandas crs mismatch geopandas
- GeoPandas "Geometry Is in a Geographic CRS" Warning: How to Fix It geopandas geographic crs warning
- Cannot Transform Naive Geometries to CRS: How to Fix It in GeoPandas cannot transform naive geometries
- My Points Plot in the Ocean: Fixing Swapped Latitude and Longitude points plotting in the ocean geopandas
- PostGIS Write Fails on SRID or Geometry Type: How to Fix It postgis srid does not match column
- Raster and Vector Do Not Line Up in Python: How to Fix It raster vector not aligned python
- My Folium Map Is Blank or Will Not Display: How to Fix It folium map not showing
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
-
Raster Analysis
Read, reproject, clip and summarise raster data in Python.
Open path → -
Spatial SQL & PostGIS
Move the heavy lifting from Python into the database.
Open path → -
Making Maps
Turn a GeoDataFrame into a map someone else can read.
Open path → -
GIS Data Cleaning
Turn messy spatial data into analysis-ready datasets.
Open path →
Related topics
Subjects that keep coming up alongside this one, most overlap first.