Germany has 5,201 area codes, two to five digits each, and they are a prefix tree: the longer the code, the smaller the place. Every other map here is drawn on administrative boundaries the numbering plan happens to follow. This one is drawn on the plan itself — the regulator publishes a polygon for every code, and these are those polygons, gathered by their first two digits.
How to read the map. Each patch is everything dialled on the same two digits, and the numeral on it is those digits — 22 is Cologne and its surroundings, 51 Hannover, 89 Munich. The colour is the first digit alone, the coarsest cut the plan makes and a real one: 2 is the Rhineland and the Ruhr, 3 the east, 4 the north coast, 6 the Rhine-Main, 7 the south-west, 8 and 9 Bavaria. Four codes are two digits long and are areas by themselves — 30 Berlin, 40 Hamburg, 69 Frankfurt, 89 Munich.
Where these boundaries come from. The Bundesnetzagentur publishes the Ortsnetzbereiche: one polygon per area code, 5,201 of them, the regulator's own lines rather than anyone's reconstruction. No other country in this atlas has that — the rest are drawn on provinces and states that the codes follow only approximately. So the edges here are not an approximation of the dialling areas. They are the dialling areas.
What the panel lists, and what it does not. The panel carries the 89 codes of two and three digits — the cities. The other 5,112 are four and five digits, and they are villages; naming all of them would put half a megabyte of text into the page to answer what the patch already answers. Every one of them is still on the map, because they are what the patches are made of. Sixty-one areas are named by the source; seventeen more take the name of their only three-digit exchange, which is what a three-digit code means. Area 80, around the Tegernsee and Rosenheim, has no three-digit exchange and no name in the sources, so it keeps its number.
Sources. Geometry and codes: Bundesnetzagentur, Ortsnetzbereiche, Ortsnetzkennzahlen und Ortsnetzbereichsgrenzen — the regulator's own boundary file, one polygon per code. Boundary file as GeoJSON: railslove/german-onb-geojson, which converts the agency's ArcView shapefile to WGS84 lon/lat. Area names: Wikipedia, List of dialling codes in Germany, for what each area and each city code is called.