Skip to content

For developers

Four courses. They are not one long book, and reading them in order is not the point: each covers a different part of the same system, and which one you want depends on what you are about to do.

Course For Length
GIS in CC A developer who has never worked with maps, reading the spatial parts of this repository 10 chapters, about four hours
Beyond GIS in CC The same reader, on the GIS this project deliberately does not do, and why 6 chapters, about 75 minutes
Data operations Whoever runs the harvest, onboards a country, or builds tiles 6 runbooks
Public API Somebody outside this project, putting Commons data on their own map 3 pages

Where each course lives

Where each of the four courses lives in the systemA component map of the whole system, read left to right in two rows, with four tinted bands marking which course covers which part. Top row: OpenStreetMap, from which Geofabrik publishes per-country extracts, feeding the Python pipeline, which writes rows into PostGIS and builds PMTiles archives. Bottom row: the Symfony application reads PostGIS and serves both the map front end and the public API, while the browser reads the PMTiles archives directly from the tile host without passing through the application. The bands are labelled: the GIS course covers PostGIS, the pipeline and the map front end; the Beyond GIS course covers the edges, the routing and elevation services this system calls and the geocoder it calls from the browser; data operations covers the pipeline and the archives it publishes; and the public API course covers the two things an outside application touches, the REST endpoints and the tile archives. A note records that this is a component map, not a journey, so it does not go stale one stop at a time.data operationsGIS in CCpublic APIOpenStreetMapGeofabrikper-countryextractsthe pipelinePythonPMTilesarchivesPostGISrowsSymfony appthe Commons itself/v1 REST endpointsread directly,no app in the pathValhalla,PhotonBeyond GISA component map, not a journey. It says where things live,so it does not go stale one stop at a time.
The same system, with each course's territory marked. Two things are worth reading off it: the pipeline writes both rows and tiles, and a browser reads the tile archives directly, with no application server in that path. Almost everything else in these courses is a consequence of one of those two facts.

Two pages that belong to all four

What these courses promise

Every fenced block says whether it is quoted from this repository or written for teaching, and the quoted ones are checked against the source on every build. Every chapter ends with something you can run. Every printed output says where it was captured, because "736 rows on a fresh clone" and "two million on a machine with a real harvest" are different claims and only one of them is a promise to you.

Where something is missing, the pages say so in those words rather than describing a plan as though it were built.