Python has become the lingua franca of geospatial development. Almost every desktop GIS exposes a Python interface, and the open-source Python GIS ecosystem — GDAL, GeoPandas, Shapely, Rasterio, Rioxarray, xarray, PyVista — covers everything from quick data wrangling to large-scale raster processing. This hub gathers every Python GIS tutorial on Spatial Dev Guru, organised by what you actually want to do: process vector data, work with rasters, hit databases, build services, and visualise results.
📦 Getting Started With the Python GIS Stack
If you are new to Python GIS, start by understanding the data structures the rest of the ecosystem builds on: GeoDataFrames for vectors and xarray DataArrays for rasters.
- Create a GeoDataFrame from a DataFrame with Coordinates or WKT
- Geospatial Analysis with GeoPandas in Python
🧱 Vector Data Processing with GeoPandas & Shapely
GeoPandas extends Pandas with geometry; Shapely supplies the geometric operations underneath. Together they handle most day-to-day vector tasks.
- Merge Multiple Shapefiles into One
- Merge / Union Polygons in GeoPandas
- Create a Fishnet Grid with GeoPandas & Shapely
- Automated Polygon Splitting Using Voronoi Diagrams & Clustering
🏞️ Raster Processing with Rioxarray & xarray
Rioxarray combines the labelled-array power of xarray with the GIS-aware I/O of Rasterio. It is the modern way to handle GeoTIFFs, NetCDFs, and HDF5 rasters in Python.
- Clip a Raster by Polygon Geometry
- Merge Rasters with Rioxarray
- Upsample & Downsample Rasters
- Polygonize Raster Using Rioxarray & GeoPandas
- Rasterize Vector Data with GeoPandas & GeoCube
- Extract Geographical Coordinates from a NetCDF File
- Build Georeferenced Datasets from HDF5 with h5py, xarray & Rasterio
- Parallel Raster Processing with xarray & Dask
🛰️ Satellite Imagery & Time Series
📏 Spatial Analysis & Interpolation
- Spatial Interpolation in Python
- Kernel Interpolation: Gaussian RBF Kernels & RKHS
- Interpolate a Bathymetry Point Dataset
- Create Bathymetric Contour Lines
- Line-of-Sight Analysis on DEMs
- Calculate Azimuth, Elevation & Slant Range Between Two Points
- Cluster London Accidents Data with Fuzzy C-Means
- Probability Distribution Function of a Geometry
🌍 3D Visualisation in Python
🗄️ Python ↔ PostGIS Database Integration
- Import a Shapefile to PostgreSQL/PostGIS with GeoPandas
- Import Shapefiles Using GeoPandas & Psycopg2
- Read Raster Data from PostGIS Using Python
🌐 Geocoding & Reverse Geocoding
🧮 Algorithms in Python (Computational Geometry)
- Graham Scan Convex Hull
- Convex Hull Using Jarvis March (Gift Wrapping)
- Convex Hull Using Brute Force
- Best Vertical Path in a Grid (Jumps & Weights)
🧠 Suggested Learning Path
- Start with GeoDataFrames and basic GeoPandas analysis.
- Add raster fluency through Rioxarray (clip, merge, resample).
- Connect to a PostGIS database for read/write workflows.
- Tackle a real-world dataset: Sentinel/Landsat time series, DSM comparison, or accident clustering.
- Scale up with xarray + Dask parallel processing.
- Layer in 3D visualisation with PyVista when you need to communicate results.
Looking to put these maps in front of users? Pair this hub with our OpenLayers and VueJS Mapping hubs to take Python data all the way to a polished web map.
