13. Regions and border areas
| State | Data from | Particulars |
|---|---|---|
| Brandenburg | LGB (also the full ALKIS), Landeshauptstadt Potsdam (trees) | orthophoto, terrain and nDSM in 1 km tiles; the nDSM is a laser nDSM at 20 cm; canopies as map objects; fences, wall edges, hedges, monuments, fountains and ditches as candidates, on sprint maps also embankment tops and bridges; in Potsdam the trees of the city map (see below) |
| Berlin | LGB (rasters), Geoportal Berlin (ALKIS, tree cadastre, K5, street survey, lighting, fountains, building heights) | the nDSM is computed from the image-based surface model: a bit softer, without thin objects such as lamp posts, but with parked cars; also canopies as map objects, stairs, walls, fences, hedges and trees as candidates, and the K5 as a template; the surveyed green strips are cut out of the street areas, curbs, railings, furniture, lamps and fountains come as candidates, and buildings carry their footprint date (see below) |
| Saxony | GeoSN | orthophoto from the map service; the nDSM has only 1 m resolution, so hedges and narrow walls often show faintly; underground structures cannot be filtered out |
| Saxony-Anhalt | LVermGeo | the map is in UTM zone 32 (EPSG:25832), like all of the state's data; orthophoto from the map service, terrain and surface model at 1 m; the nDSM is as coarse as in Saxony |
| Hamburg | LGV | zone 32 like Saxony-Anhalt; orthophoto from 2026, but terrain and surface model from 2022: buildings of the last years are missing from the nDSM |
| Hesse | HVBG | zone 32; orthophoto flown in summer (2023 south-west, 2024 north, 2025 south); nDSM = DOM1 − DGM1 at 1 m from the laser scan (2019 to 2025 by region). In many areas the scan was flown in winter, without leaves, so the crowns of deciduous trees can come out lower than in summer. The scan can be from another year than the orthophoto (Frankfurt: scan 28.02.2023, orthophoto 19.08.2025). The height models come from the Downloadcenter, one zip per municipality; freemapper reads only the needed 1 km tiles. Squares without bez only as candidates; street areas include verges (no split); school grounds are called "Öffentliche Zwecke" |
| Schleswig-Holstein | LVermGeo SH | zone 32; the state was flown in two halves: 2024 (May/September, leaf-on) and 2025 (March to June: March/April leaf-off, May/June leaf-on); Norderstedt, for example, was flown leaf-off on 17.03.2025. The map service has no time choice. Terrain: DGM1 at 1 m from the laser scan (vintage 2005 to 2025 by tile; Norderstedt 10.03.2022). Surface model: image-based bDOM at 0.2 m (only the 2023 and 2024 vintages); the nDSM is bDOM − DGM1. freemapper downloads whole tiles of 105 MB for it (about 90 s each, no partial downloads), reduces them to 1 m and keeps only that copy. In the 2025 half the bDOM is two years older than the orthophoto: new buildings may be missing in the nDSM (freemapper warns). The Downloadportal sends an incomplete certificate chain; freemapper ships the missing D-TRUST certificate and uses it for that one server only. Squares without bez only as candidates; street areas partly without a verge split; school grounds are called "Öffentliche Zwecke"; the LGB's ALKIS spellings apply. At the Hamburg border freemapper reads the ALKIS and OSM extract of both sides; the rasters come from the state where the centre of the map area lies, and the Schleswig-Holstein tiles reach into Hamburg |
| Mecklenburg-Vorpommern | LAiV M-V | zone 33 (EPSG:25833) like Brandenburg. The orthophoto comes from the WCS service "DOP" (the map service carries a watermark) as JPEG and is a 256-colour palette image: slightly grainy, but good enough for tracing. Flown 2021 to 2025, March to October, mostly leaf-on (about 23 % in March/April, then leaf-off); Rostock, for example, on 14.08.2024. Terrain and surface: DGM1 and DOM1 at 1 m from the WCS; the nDSM is DOM1 − DGM1. The two models can come from different years (Rostock: DGM1 March 2024, DOM1 August 2024). The height models carry no NoData: freemapper keeps only the cells of the state's 2 km tiles. Areas beyond them (Brandenburg south of the tile edge, open sea outside the tiles) stay empty; sea and Bodden inside the tiles are 0 m. ALKIS comes from the LGB's OGC API (as in Brandenburg), with the WFS as fallback; the LGB's ALKIS spellings apply, school parcels are called "Bildung und Wissenschaft". At the Brandenburg border freemapper reads the ALKIS and OSM extract of both sides; the rasters come from the state where the centre of the map area lies |
| North Rhine-Westphalia | Geobasis NRW (Bezirksregierung Köln) | Zone 32 (EPSG:25832) for the whole state; the state reaches far west, but the map never uses zone 33. The orthophoto comes from the WMS service, because the tiles exist only as JPEG 2000. Flown in 2022 and 2024 to 2026, partly leaf-off, partly leaf-on; the flight date is per tile. Terrain and surface: DGM1 and DOM1 at 1 m from 1 km laser tiles, both from the same flight; names and dates come from the tile list, not from the directory. The laser survey is paused until winter 2026/27, the newest data is from February 2025; the nDSM is DOM1 − DGM1. ALKIS from the WFS with the LGB spellings and a more detailed land-use value, school buildings are called "Allgemein bildende Schule". OSM from the extracts of the five Regierungsbezirke (Arnsberg, Detmold, Düsseldorf, Köln, Münster) instead of the 917 MB statewide one; an area on a district border reads both. At the Hesse border freemapper reads the ALKIS of both states; the rasters come from the state holding the centre of the map area |
| Lower Saxony | LGLN | Zone 32 (EPSG:25832) for the whole state. The orthophoto comes from the map service (WMS), terrain and surface (DGM1 and DOM1 at 1 m) come from the WCS service. The WCS service delivers the height models in pieces of 2 km. A 4 km area therefore takes four requests per model and, with the orthophoto, a few minutes to fetch. The LGLN STAC search gives the data currency: the flight date of the newest orthophoto and the date of the newest height model at the centre of the map area. Flown 2024 to 2026, three quarters in spring (February to April, leaf-off), the rest from May to October (leaf-on). freemapper reports with the flight date whether the trees were in leaf; Hannover-Südstadt, for example, was flown leaf-off on 06.03.2025. The nDSM is DOM1 − DGM1 from the laser scan, both models from the same flight. The scan is mostly from 2016 or 2017 (2025 at the coast and along the Elbe and Weser), so it is often 5 to 9 years older than the orthophoto (Hannover-Südstadt: scan 18.04.2016). If the DOM1 is more than two years older, freemapper warns with both dates, because new buildings and young trees can be missing from the nDSM. ALKIS from the WFS with the LGB spellings; freemapper recognises underground garages by their position below ground; squares without bez only as candidates; school buildings are called "Allgemein bildende Schule", school parcels "Bildung und Wissenschaft". Bremen and Bremerhaven are a state of their own (below). If an area in Lower Saxony reaches into Bremen, the orthophoto is white there; buildings and land use come from Bremen's cadastre there. At the borders to Bremen and Hamburg freemapper reads the ALKIS and OSM extract of both sides; the rasters come from the state holding the centre of the map area |
| Rhineland-Palatinate | LVermGeo RP | Zone 32 (EPSG:25832) for the whole state. The orthophoto comes from the map service (WMS), because the tiles exist only as JPEG 2000 of 105 to 155 MB per 2 km block. The service ends at the state border, and beyond it the orthophoto is white. The service gives no flight date, only a date of creation per block. freemapper takes it as the flight date, because all these dates fall between May and September, mostly on consecutive days, and the images show trees in leaf. So the project entry labels the date "Aktualität (Erstellung)", and the messages say date of creation. Flown 2022 to 2025, every two years, always in summer and so leaf-on; the Görres-Gymnasium in Koblenz, for example, on 25.08.2025. Terrain and surface: DGM1 and DOM1 at 1 m from 1 km laser tiles, both from the same flight. The scans are from 2022 to 2025, each flown from February to April, leaf-off. The file name of each tile contains the year of the scan. freemapper reads it from the LVermGeo RP laser-scan flight index Laserbefliegung, which gives the flight days per tile; the last flight day is the date in the project entry (Koblenz: 06.04.2024). 14 tiles north of Trier have no flight year there (as of November 2026). For them freemapper reads the state's Metalink file (about 11 MB per model), but only if the area contains such a tile. freemapper keeps the file and reuses it online for 30 days, then downloads it again. Offline it uses the kept file at any age. A tile that stays without a name stays empty, and freemapper says why. If the server answers 404 for a tile of the index, freemapper reports it as missing and asks again only after 30 days. The size estimate counts 1.5 MB per DGM1 tile and 3 MB per DOM1 tile, plus the Metalink file when it is needed. The nDSM is DOM1 − DGM1. Scan and orthophoto are at most three years apart, and in a quarter of the tiles the scan is the newer one. Because the scan was flown without leaves, the crowns of deciduous trees can come out lower in the nDSM than in the orthophoto. ALKIS from the WFS with the LGB spellings; the land use has finer subtypes, for example Wohnbaufläche "Offen" and "Geschlossen". freemapper recognises underground garages by their position below ground; squares without bez only as candidates; a building with several names has them joined by ; in one field. School buildings are called "Allgemein bildende Schule", school parcels "Bildung und Wissenschaft". At the Hesse border (Mainz and Wiesbaden) freemapper reads the ALKIS and OSM extract of both states; Wiesbaden and Mainz-Kastel belong to Hesse and are not in the Rhineland-Palatinate OSM extract. The rasters come from the state holding the centre of the map area. If it lies in Mainz, the orthophoto is white across the Rhine, but the height models reach over |
| Saarland | LVGL | Zone 32 (EPSG:25832) for the whole state. The orthophoto (flown in 2025) comes from the map service (WMS); the date the service gives per 2 km block as its update ("Aktualisierung") counts as the flight date. Terrain and surface: DGM1 and DOM1 at 1 m from the laser scan of 2025. The LVGL publishes them as six archives, one per district (0.6 to 1.3 GB); freemapper reads only the 1 km tiles of the area out of them, about 2 MB each, and keeps them in the cache. Beyond the state border the templates stay empty. The cadastre comes from the service "ALKIS Vereinfacht" of the Geoportal Saarland. freemapper does not use the products the LVGL charges for (bDOM20, DOM025, older orthophotos). |
| Baden-Württemberg | LGL | Zone 32 (EPSG:25832) for the whole state. The orthophoto comes from the map service (WMS); a second service gives the flight date per 1 km tile, and the date of the tile at the centre of the area counts. The map service ends at the state border, and the orthophoto is white beyond it. Terrain: DGM1 at 1 m from the laser scan. Surface: the nDOM1 of the LGL, the height above the terrain, computed from the aerial images of a summer flight. It shows the trees in leaf and usually comes from the flight of the orthophoto or the one before it. The LGL publishes both models as one archive per 2 km block; freemapper reads only the 1 km tiles of the area out of them, about 3.5 MB each, and keeps them in the cache. Where the nDOM1 lacks a tile, the nDSM template stays empty, and freemapper names the tile. The cadastre comes from the ALKIS service of the LGL. It holds whole buildings only, so no canopies and passages come from the cadastre, and it has no class of its own for the green beside a street: street areas include it. OSM comes from the extracts of the four Regierungsbezirke. |
| Bremen | Landesamt GeoInformation Bremen (also the full ALKIS) | Zone 32 (EPSG:25832) for the whole state, that is Bremen and Bremerhaven. The orthophoto comes from the map service (WMS), which has one layer per flight and city; freemapper takes the newest colour flight of each city (2025 in both, 10 cm). The service names the year of a flight only, so the project entry says "Bildflugjahr" next to the date. Terrain and surface: DGM1 and DOM1 at 1 m from the laser scans of 2017 (Bremen) and 2015 (Bremerhaven), flown without leaves. They are eight to ten years older than the orthophoto, and freemapper warns at every fetch: new buildings and young trees are missing from the nDSM, and demolished buildings are still in it. The agency offers the models as one archive per city (0.3 to 1.2 GB); freemapper reads only the 1 km tiles of the area out of them, about 3.5 MB each, and keeps them in the cache. Three of the four archives write the heights at whole metres, not at the cell centres, so those models lie half a metre off to the north-east. The archives hold no tiles of Lower Saxony: where the map reaches beyond the state border, for example from Huchting into Stuhr, the orthophoto is white and the templates stay empty. freemapper warns when it fetches. Bremen has no simplified ALKIS. freemapper reads the full ALKIS, which the LGLN in Lower Saxony runs for Bremen, and derives buildings, building parts, canopies and land use with the same names as in the other states. That is one request per land use class, about 30 requests per map. Squares without a function only as candidates. The same service gives the surveyed lines of the full ALKIS as in Brandenburg (below), in Bremen mostly stairs, ramps, retaining walls, monuments, embankment tops and bridges. The area page shows the aerial photo of the city of Bremen only, not of Bremerhaven; the map gets it in both cities. |
| Bavaria | Bayerische Vermessungsverwaltung (LDBV) | Zone 32 (EPSG:25832) for the whole state, also east of 12° E (Regensburg, Passau). The orthophoto comes from the map service (WMS, DOP20) with the date of the flight. Terrain: DGM1 at 1 m as 1 km tiles of about 2.8 MB; the tiles carry no date. Surface: there is no surface model at 1 m. freemapper takes the DOM20 (20 cm, computed from the aerial pictures of the flight, 32 to 56 MB per km²). It reads only the blocks of 51 m that the map area needs, reduces them to 1 m and keeps only the reduced tile; a later map in the same tile reads only the blocks it lacks (ADR 0141). Its date is that of the flight. Bavaria has no service for its cadastre, only files. freemapper reads the buildings from the LoD2 tiles, one file per 2 km square: about 3 MB in the country, 60 to 110 MB in the old town of Regensburg, 160 MB in the centre of Munich. Buildings and canopies come from them; freemapper leaves out the bridges and walls LoD2 holds. The data names no position to the surface. What LoD2 holds of an underground garage stands above the ground, and freemapper draws it as a building. The land use comes from the file of the Landkreis or kreisfreie Stadt (2 to 13 MB); when the area lies within 500 m of a Kreis border, freemapper downloads both files. All files stay in the cache. At every fetch freemapper asks the server whether a file is newer and downloads it again only then. Bavaria has no stairs, retaining walls or embankments from the cadastre. Springs, caves, towers, fountains, monuments, fences and, on forest maps, missing paths come as candidates from the landscape model (ATKIS Basis-DLM, further down in this chapter). Vegetation from laser point clouds is there on request (chapter 8). OSM comes from the extracts of the seven Regierungsbezirke. |
Canopies and passages in every state. ALKIS records canopies and carports as structures next to the buildings, and building passages and arcades as building parts. freemapper reads them from the buildings it already fetches, with no extra download. Canopies and carports become map objects (522) on both map kinds, cut at the buildings as in Berlin. Building passages and arcades become 522 candidates, and the building stays whole. Underground ones are left out. The data currency is the date of the ALKIS object. Saxony and Saxony-Anhalt record no canopies or passages in this data, so maps there get none. Berlin takes them from its own layers (below). An existing map gets the canopies only with run --force.
Brandenburg and Bremen: full ALKIS; Potsdam trees. In Brandenburg freemapper also reads the full ALKIS from the LGB's NAS service (dl-de/by-2-0), in Bremen from the service that also gives its buildings and land use (CC BY 4.0). It holds what the simplified ALKIS lacks: surveyed walls and wall edges, fences, hedges, monuments, fountains, ditches and brooks, and on sprint maps also embankment tops and bridges. They become walls 515, fences 518, hedges 410.1, monuments 526, fountains 311, ditches 306, brooks 305, embankment tops 104 and bridges 501.5; the content profile decides whether they go onto the map or stay candidates (chapter 8). The code in the cadastre picks the symbol, never the height. The layers are stored in data/alkis-nas/, about 1 MB per km². At Park Sanssouci (0.74 km² with the buffer) the six layers hold 780, 146, 315, 4, 1 and 0 objects in 0.6 MB. Each of these objects carries freemapper:source=alkis-nas/<layer> and freemapper:alkis with the cadastre's name, e.g. Mauerkante, rechts. Its data currency is the date the object version entered the cadastre (beginnt). Two edges of one wall closer than 0.55 mm on paper become a single 515 line in the middle (chapter 9). freemapper takes canopies and building parts from the simplified ALKIS only, so they are not drawn twice. Brandenburg records no stairs, retaining walls or single trees in the full ALKIS. Bremen records stairs with their bottom edges and retaining walls, but neither hedges nor single trees in the city centre; in the old town of Bremen (0.7 km² with the buffer) 64 stairs, 13 retaining walls, 13 monuments, 16 embankment tops and 4 bridges come from it. If the service sends more objects than it allows in one answer, freemapper splits the area into quarters, at most four levels deep.
Hesse: full ALKIS and landscape model. Hesse serves both from the HVBG (dl-de/zero-2-0), and freemapper reads both. Its full ALKIS records surveyed stairs: in the old town of Marburg 54 go straight onto the map, with the content profile balanced. The landscape model adds candidates as in Bavaria: in Marburg 4 named trees, 3 small watercourses, a dam and a wall, on the Feldberg a rock, a spring and a watercourse.
North Rhine-Westphalia and Lower Saxony: full ALKIS. Both serve their full ALKIS as well (Geobasis NRW, dl-de/zero-2-0; LGLN, CC BY 4.0), Lower Saxony with at most 10 000 objects per request. In North Rhine-Westphalia it holds much: in the old town of Monschau 25 walls and retaining walls, 33 embankment tops, 14 stairs, 15 bridges, 17 walls along the Rur and 13 single trees go straight onto the map, in the Siebengebirge 90 embankment tops and about 30 walls and stairs; OpenStreetMap lines and trees they double go. Lower Saxony records less: in Herrenhausen 4 bridges and a fountain, in Bad Harzburg 12 bridges, a wall and an embankment top.
Schleswig-Holstein: landscape model. The LVermGeo SH serves its landscape model as well (CC BY 4.0), with at most 10 000 objects per request. In the Hüttener Berge it adds 48 earth walls (105), a watercourse and 4 tracks; the banks the terrain model finds along those walls go. In Lübeck it adds a watercourse.
Mecklenburg-Vorpommern: full ALKIS and landscape model. The LAiV M-V serves both (CC BY 4.0), each with at most 10 000 objects per request. The full ALKIS records many stairs: in the old town of Wismar 630 go onto the map, most of them short steps in front of house doors, along with 138 walls and 2 bridges; OpenStreetMap walls they double go. The landscape model adds 6 trees, 2 watercourses and a structure there as candidates, in the Granitz 5 paths.
Rhineland-Palatinate: landscape model. The LVermGeo RP serves no full ALKIS, but its landscape model (dl-de/by-2-0), in the Shape schema of the AdV instead of NAS. freemapper reads it and treats it as in the other states: its objects stay candidates. In Cochem it adds 19 monuments and wayside crosses, 2 watercourses and a well, near Dahn a rock, 3 watercourses and, on the forest map, 6 tracks and paths.
Hamburg: street tree cadastre. Hamburg serves its street trees with genus, species and crown diameter (dl-de/by-2-0). freemapper fetches them like the Potsdam trees; on sprint and schoolyard maps they become single trees, a crown of 10 m or more as a 417, the others as a 418. In Blankenese 13 street trees go onto the map and 4 to the candidates; the OpenStreetMap trees at the same places go. The cadastre has no survey date, so the fetch date is its currency. Trees in parks and in the port are not in it.
Lübeck: tree cadastre. The Hansestadt Lübeck publishes its tree cadastre as one CSV file of the whole city (CC0, 8 MB). freemapper downloads it whole on every fetch and keeps the trees of the map area; empty planting spots (Fehlplatz) go. It has neither a crown diameter nor a survey date, so every tree is a 418 and the fetch date is its currency. In the old town 384 trees go onto the map and 43 to the candidates, mostly lindens and maples in rows along the streets; the OpenStreetMap trees at the same places go (78 to 25).
Leipzig, Frankfurt (Oder), Kiel and Norderstedt: tree cadastres. These four cities serve their trees through a WFS, with genus or species and crown diameter (Leipzig, Frankfurt (Oder) and Norderstedt dl-de/by-2-0, Kiel CC BY 4.0). freemapper fetches them for a map area in the city like the other tree cadastres; a crown of 10 m or more makes a 417. Leipzig keeps felled trees with their felling date; those go. None of the four has a survey date, so the fetch date is the currency. Dresden's tree cadastre is missing: its WFS gives no GeoJSON.
Köln, Dortmund and Frankfurt am Main: tree cadastres. These three cities publish their trees with the crown diameter as well: Köln through a WFS, Dortmund as an OpenDataSoft export and Frankfurt am Main as a CSV file (17.5 MB, downloaded whole on every fetch). Köln and Dortmund under dl-de/zero-2-0, Frankfurt under dl-de/by-2-0.
In Bavaria the cadastre has no service. There freemapper asks the landscape model of the agency instead, the ATKIS Basis-DLM (CC BY 4.0). It is made for the scale 1:25 000 and accurate to about 3 m. freemapper takes cave entrances (203), springs (312), named rocks (205), free-standing towers (524, 525), monuments and wayside crosses (526), fountains (311), fences (518), dams and walls (105), small watercourses (305) and named trees (418) from it, on forest maps also paths and tracks (504 to 507). These objects stay candidates in every profile but full. Where another source has the same object, the one of the landscape model goes: a point when a point with the same symbol lies within 15 m (a tree beside a tree, large or small, and a tower beside a tower), a line when at least 80 % of its length runs within 10 m of a line of the same kind. For paths every path class counts as the same kind. A path stays or goes as a whole. The object that stays names the dropped one in freemapper:also. The layers lie in data/alkis-nas/ too, as dlm-…; their objects carry freemapper:source=atkis-dlm/<layer>. On the Schmausenbuck 14 of 152 objects stay as candidates, 6 of them paths OpenStreetMap lacks; in the old town of Regensburg 8 of 35. freemapper does not take church towers, town gates, canals, power lines or areas.
Saxony-Anhalt has only the simplified ALKIS, and freemapper asks its landscape model in the same way (© GeoBasis-DE / LVermGeo ST, dl-de/by-2-0). There most rocks are lines: freemapper offers them as cliff candidates (201), whose ticks point downhill by the terrain model like those of the other cliff candidates. In the Bode valley that gives 27 cliffs and 20 rocks, 3 dams, a spring, a monument and 11 paths OpenStreetMap lacks; in Quedlinburg 7 small watercourses.
If an OSM line (fence, wall, hedge, brook or ditch) lies with at least 80 % of its length within 1.5 m of a full ALKIS line with the same symbol, freemapper drops the OSM line, as in Berlin. The order is the same in every state: register before ALKIS before the street survey before OSM.
In and around Potsdam freemapper fetches the trees of the Potsdam city map (Bäume der Stadtkarte, dl-de/zero-2-0). They are stored in data/trees/; the size estimate counts 1 MB per km². The data has no crown size, so every tree becomes a 418 point; with safe it stays a candidate, with balanced it goes onto the map. Stumps are left out. Each tree carries its own survey date as data currency, from 1993 to 2026, and its kind in freemapper:baum, e.g. Laubbaum. An OSM tree less than 2 m from a Potsdam tree is dropped. A Berlin area makes no request there, even inside the Potsdam data's extent. At Park Sanssouci freemapper fetches 1964 trees; 1646 of them lie in the map area with its buffer. In the example 773 stay points; the others lie in tree-group areas or are dropped by the thinning. If the disk has too little room, freemapper leaves out the full ALKIS and the trees together. The stored ones then stay. An answer larger than 256 MB is stopped while it is read.
Berlin: structures, trees and the K5. When a map area touches Berlin, freemapper fetches six more layers from Geoportal Berlin (dl-de/zero-2-0): the ALKIS structures as areas and as lines, the embankment edges (for sprint maps only), the hedges, and the street and park trees. They are stored in data/berlin/. From them come:
- Canopies and carports as map objects (522) on both map kinds. A canopy with 90 % or more of its area inside a building is left out. An existing map gets the canopies only with
run --force. - Candidates: stairs (532.6 to 532.9) with the walking direction from the terrain model, walls (515), retaining walls (513.2), fences (518), hedges (410.1), building passages and arcades (522) and monuments (526); on sprint maps also bridges (501.5) and embankment tops (104). The ALKIS name alone picks the symbol.
- Trees from the tree cadastre: 417 for a crown of 10 m or more, otherwise 418. If an OSM tree stands less than 2 m from a cadastre tree, freemapper drops the OSM tree.
- Fences, walls, retaining walls and hedges are often in both ALKIS and OSM. If at least 80 % of an OSM line lies within 1.5 m of an ALKIS line with the same symbol, freemapper drops the OSM line. The ALKIS line names it in the tag
freemapper:also, e.g.osm/way/123. Lines with different symbols for the same object are cut after that (chapter 9, overlapping walls, fences and hedges).
freemapper picks the stair symbol by the stair's width on paper. On sprint maps a stair 3.5 m wide or more becomes 532.9, on schoolyard maps one from about 1.1 m. So nearly every schoolyard stair is 532.9. A stair wider than three times 532.9 (12 m on sprint maps) becomes parallel 532.9 lines.
The Freitreppe lines of the ALKIS structures are step edges. freemapper joins parallel edges up to 2 m apart that overlap along their length into one stair. A doubled edge counts once. The stair runs across the edges, as wide as the edges are long and as long as the whole flight. A single edge gives no stair.
Each candidate names its origin in the object tags: freemapper:source=geoportal-berlin/<layer>, freemapper:alkis with the ALKIS name (e.g. Mauerkante, rechts), and for trees freemapper:baum with species and crown. The layers have no date of their own, so the data currency (freemapper:currency) is the date of the fetch. freemapper does not take curb lines from ALKIS, but it takes those of the street survey.
Berlin: street survey, registers and building dates. freemapper also fetches the street survey (Straßenbefahrung), the lighting cadastre, the registers of ornamental fountains and of drinking fountains, and the building heights of 2022 from the Umweltatlas, all under dl-de/zero-2-0. In the city centre that adds about 6.5 MB per km² (6.4 MB at Viktoriapark). The street survey recorded Berlin's public street space from 2014 to 2016. There is no newer one, so the data is about ten years old. That is why it never replaces ALKIS. Apart from the green cut-out, it gives only candidates. From these layers come:
- On sprint maps: freemapper cuts the surveyed green strips out of the paved areas (501.5) where the overlap is at least 1 mm wide on paper, but at most 2 m in the terrain. Tree pits stay. Each green strip is also a 401 candidate, except where it lies on paving that freemapper did not cut. Surveyed sidewalks, carriageways, cycle paths, parking areas and squares outside the drawn ALKIS areas become 501.5 candidates, such as park paths and forecourts. Here too, narrow pieces from 2 m wide stay. Curbs become 501.1 candidates, advertising columns 531. A curb that runs around a tree pit is straightened: a detour under 1.5 mm² on paper (24 m² at 1:4000) becomes a straight line, and a lone ring of that size goes.
- On both map kinds: stairs (532.6 to 532.9, like the ALKIS stairs; the field
trs, probably the number of steps, comes asberlin:trs), walls (515), railings, traffic barriers and crash barriers (518, like fences), bus shelters (522), fountains (311) and drinking fountains (313) from the street survey and the fountain registers. - On schoolyard maps: benches (543), hydrants (321), bollards, masts and flag poles (544), play equipment (541) and the lamps of the lighting cadastre (545), only those in operation.
- On sprint maps, as control sites (531, candidates only): bollards, masts, flag poles, benches (the middle of the surveyed line), the lamps of the lighting cadastre (only those in operation) and advertising columns. A site of one kind within 25 m of another is left out, so of the 1 077 bollards at Viktoriapark 3 remain. Hydrants and play equipment are not taken: ISSprOM names hydrants as not to be mapped.
- Buildings: each ALKIS building that the building heights of 2022 know gets its Grundrissaktualität (footprint date) as data currency (
freemapper:currency). It is the state of the outline in that data, not a survey date. A building without a match keeps no date.
When an object comes from several sources, the register wins over ALKIS, ALKIS over the street survey, and the survey over OSM. A lamp of the lighting cadastre replaces OSM lamps up to 5 m away and surveyed masts up to 2 m away. Surveyed masts further off are mostly sign and signal masts. A fountain of a register replaces the OSM and surveyed fountains up to 3 m away. On schoolyard maps a surveyed hydrant, bench, mast, flag pole or play item replaces the OSM one up to 2 m away. freemapper drops a surveyed line with at least 80 % of its length within 1.5 m of an ALKIS line with the same symbol, and a surveyed stair that overlaps an ALKIS stair by at least half. It also drops a surveyed bus shelter that lies at least half under an ALKIS canopy, because the canopy is already on the map. A surveyed wall next to an ALKIS retaining wall stays, because the symbols differ. The object that stays names the dropped ones in freemapper:also, a surveyed one e.g. as geoportal-berlin/sb-gelaender/Li_2015-05-02_1. freemapper also leaves out a fountain of the register or of the street survey inside drawn water, as it does the OSM fountains.
ALKIS and the street survey often split a wall or a railing into short pieces. Where pieces with the same symbol meet end to end, freemapper joins them into one line. Only then does freemapper drop lines under 1 mm on paper (4 m at 1:4000). The joined line names the other pieces in freemapper:also. A surveyed one carries the oldest survey date of its pieces.
Each Berlin candidate carries berlin:layer. For the street survey and the registers it holds the object type (e.g. bd_bordstein, beleuchtung), otherwise the layer name (e.g. bauwerke-linien). The street survey codes (material, hms, pot, bor, gws, sre, hdt, trs) come as berlin:<code>. What they mean is not published. A surveyed candidate has its survey date from the gis_id as data currency. If that is unreadable, it says 2014-01-01 with freemapper:currency_guessed=yes. A paved area that was cut keeps its ALKIS origin and names the green strips at its edge: freemapper:cut=geoportal-berlin/sb-gruenflaeche, freemapper:cut_ids and freemapper:cut_currency. The last one is the oldest real survey date. If there are only guessed ones, freemapper adds freemapper:cut_currency_guessed=yes. An existing map gets the green cut-out and the building dates only with run --force.
Fountains, pumps and drinking fountains come in Berlin from the register, the street survey, ALKIS and OSM. When two points of different sources lie at most 0.75 mm apart on paper, but never under 3 m on the ground (3 m at 1:4000), freemapper keeps the one of the stronger source: register before ALKIS before street survey before OSM. It names the other in freemapper:also. A fountain point in an OSM fountain basin or within 1 m of it is dropped, and the basin names it. Two fountains of the same source both stay, however close they are.
The K5 (Karte von Berlin 1:5000, the Berlin map in colour, dated 02.01.2026) comes as the template templates/k5.png with a world file, at 0.25 m per pixel. If the area with its buffer is longer than 1.5 km, the image gets coarser. It shows park paths, stairs, walls, fences, embankments and monuments, which makes it good for comparing. OOM has it linked but hidden; in OCAD it is a background map. If the disk has too little room, freemapper leaves it out, as it does the surface model. The same goes for the Berlin layers; the stored ones then stay.
The export needs the terrain model for the walking direction of the stairs, the ticks of earth banks and the height of cliffs. In a state whose terrain model comes in tiles, derive therefore keeps the terrain mosaic in the project as data/terrain.tif (about 4 MB per km²), for every map (ADR 0134). This way export works without internet and without the cache.
Allotment gardens are out-of-bounds candidates (520) in every state: the ALKIS land use "Sport-, Freizeit- und Erholungsfläche" with bez "Kleingarten". Parks, sports grounds and playgrounds of the same land use stay open.
Coordinate system: Brandenburg, Berlin, Saxony and Mecklenburg-Vorpommern deliver in UTM zone 33, Saxony-Anhalt, Hamburg, Hesse, Schleswig-Holstein, North Rhine-Westphalia, Lower Saxony, Rhineland-Palatinate, Saarland, Baden-Württemberg, Bremen and Bavaria in zone 32. Bavaria stays in zone 32 east of 12° E too, like the state's data. Each map gets the zone of the state holding its centre; OOM and OCAD show it in the georeferencing. If you move a map area across the zone line or into another state, freemapper fetches everything again.
At a state border freemapper queries the cadastre of both states and reads both OSM extracts. The orthophoto and terrain come from the state holding the centre of the map area. If the area reaches far across the border, the templates on the other side stay empty where that state's orthophoto and height models end. Some services reach further: the LGLN orthophoto and height models also cover the Hamburg corner at Harburg, and the LVermGeo RP height models reach across the Rhine at Mainz. freemapper tells you when an area crosses a border.
Adapters of your own
The states above are built into the program. A further state or country can be added as a folder, if its services are standard ones: a WFS or an OGC API Features service for the cadastre, a WMS and a WCS for the orthophoto and the height models. The folder has the name of the adapter's id and holds a manifest.toml and a boundary file. freemapper reads such folders from your adapter folder:
| System | Adapter folder |
|---|---|
| macOS | ~/Library/Application Support/freemapper/adapters |
| Linux | ~/.config/freemapper/adapters |
| Windows | %APPDATA%\freemapper\adapters |
The variable FREEMAPPER_ADAPTER_DIR names another folder by its absolute path; a relative path is ignored with a warning. freemapper adapters list shows every adapter with where it comes from, the day it was last checked and the servers it asks, and names your adapter folder in its last line. A folder with a mistake is left out with a warning that names the file and the line; the other adapters still load. An adapter from a folder cannot replace a built-in one. If it lies on the ground of another adapter, the list names that one: a map there gets the objects of both.
The area page and the AI assistant read the adapter folder when they start. If one of them is already running when you add or change an adapter, close it and start it again; until then it does not know the adapter.
An adapter makes freemapper ask the servers it names, and no others. Still, read a manifest before you copy it into your adapter folder: [net] hosts lists every server.
A project folder can bring adapters along in its folder adapters. freemapper loads them only when you say so, with --adapters-from-project on init, fetch, derive, export or run, and then names each in a warning with the servers it may ask. The area page and the AI assistant never load them. Use the switch for a project of your own.
freemapper adapters check <folder> checks the folder of an adapter without asking a server: whether it would load, and what its author should know. With --live --bbox minLon,minLat,maxLon,maxLat it also asks the services of the adapter for a small box inside its boundary (150 m by 150 m is enough) and says what arrived for each capability:
freemapper adapters check ~/my-adapters/elbaue
freemapper adapters check ~/my-adapters/elbaue --live --bbox 12.2430,51.8350,12.2452,51.8364
The exit code is 0 when the adapter passes, 1 with findings and 2 when the check could not run.
How to write an adapter is in the guide for contributors, with a tutorial that builds one step by step and a reference of every key of the manifest. The manifests of the built-in states in crates/adapters/de/manifests/ are examples.
When a service moves
For a built-in state freemapper asks only the servers its adapter names. When an agency moves a service to another server, the fetch fails with a message that starts with the refused address, names the state and ends with a command. With that command you allow the state the one host until a new version of freemapper knows it itself:
freemapper adapters allow-host hessen new-server.hessen.de
The area page and the AI assistant read the allowed hosts when they start. If the fetch failed there, close the page (or quit the assistant) and start it again after the command; until then it refuses the host as before.
Take the host from the message and check that it belongs to the agency of the state. Report the move (chapter 16), so that the next version brings the host. Once a new version brings the host, the next find, init, fetch, derive, export or run says in a warning that your entry is no longer needed and removes it. The area page and the AI assistant through MCP never change the file.
The allowed hosts are in allowed-hosts.toml in your configuration folder (freemapper under ~/Library/Application Support, ~/.config or %APPDATA%), and nowhere else: a project folder, an environment variable of freemapper, a switch of a run or the AI assistant through MCP cannot add a host. Where the configuration folder is, the system says, on Linux and macOS through HOME and XDG_CONFIG_HOME; whoever sets those for freemapper, the configuration of an MCP client for example, picks the file with them. A host must be a DNS name; an IP address, localhost, a name of the local network, a wildcard or a port is refused. For an allowed host, too, freemapper connects to servers on the internet only. freemapper adapters list shows the allowed hosts per state, and freemapper adapters disallow-host hessen new-server.hessen.de takes one back.