Concepts
Understand the core concepts behind spatial data in Python before diving into tasks and workflows.
Every concept, A–Z
Page 2 — use the page links below, or browse by topic above.
- Cartograms Explained: Trading Geography for Size
- Catchment Areas Explained: Buffers, Isochrones and Voronoi Compared
- Categorical Rasters Explained
- Census Geographies Explained: Blocks, Tracts, Output Areas and Why They Nest
- Census Identifiers Explained: GEOIDs, Codes and the Leading Zero Problem
- CF Conventions Explained: How a NetCDF File Says What Its Numbers Mean
- Choosing a Geocoder: Coverage, Licence and Cost Compared
- Choosing a Map Projection for Display: What Web Mercator Distorts
- Choosing a Python Map Library: Folium, Plotly, pydeck, Lonboard and Cartopy Explained
- Choosing an H3 Resolution: Cell Size, Counts and What Each Level Can Show
- Choosing the Unit of Work in a Batch Job: File, Layer, Feature or Tile
- Choropleth Classification Explained: Quantiles, Equal Interval and Natural Breaks
- Chunked Arrays and Zarr Explained
- CityJSON and CityGML explained
- Climate Normals Explained: What "Normal" Weather Means
- Cloud Masking Explained: QA Bands, Scene Classification and What They Miss
- Cloud-Native Geospatial Explained: Why the Format Became the API
- Cloud-Optimised GeoTIFF Explained: Tiles, Overviews and Range Requests
- Colour on Maps Explained: Sequential, Diverging and Qualitative
- Columnar or Row Storage: Why DuckDB Is Fast on Wide Tables
- Configuration vs Code: What Belongs in a Config File
- Coordinate Precision and Floating Point in GIS Explained
- Coordinate Reference Systems (CRS) Explained for Python GIS
- Coordinate Uncertainty Explained
- Counts, Rates and Densities: What a Demographic Map Should Show
- Crash Data Coverage Explained
- Crash Exposure and Rates Explained
- Crime Concentration Explained
- Crime Hotspot Methods Explained
- Cron, systemd, Airflow or CI? Choosing a Scheduler for GIS Jobs