Fundamentals
What the objects, files and libraries actually are.
Everything in this section is about what you are actually holding. A spatial file is a container with rules about what it can store; a GeoDataFrame is a pandas table with a geometry column and a coordinate reference system; and underneath both sits a stack of C libraries — GDAL, GEOS, PROJ — that the Python packages are thin wrappers over.
That last fact explains most of the difficulty. The libraries have to agree with each other, which is why installation is a real topic rather than a footnote, and why a container behaves differently from a laptop. Above that layer, the recurring theme is that the important properties of a dataset are not in the file: the CRS may be absent, the encoding is usually guessed, and the choice of projection for a map is always yours.
Four topics: getting a working environment and a first analysis, reading and writing the formats, getting the data in the first place, and turning addresses into coordinates.
Topics in Fundamentals
Each topic page brings that subject's concepts, how-to guides and fixes onto one page.
- Getting started A working install, your first GeoDataFrame, and what Python GIS is for.
- Files & formats Reading and writing shapefiles, GeoPackages, GeoJSON and CSV — and what breaks in each.
- Data sources & downloads Getting the data in the first place: OpenStreetMap, web services, satellite catalogues and geocoders.
- OpenStreetMap data Working with OpenStreetMap itself: reading PBF extracts, points of interest, roads, rivers, land use, railways, parks, cycle lanes, charging stations and buildings, the edit history, the licence, and the tagging traps that make counts wrong.
- Geocoding & addresses Turning address text into coordinates, and coordinates back into places — with the match quality attached.