freemapperEnglish

Änderungen › freemapper

Änderungen: freemapper

Stand: v0.22.0 · Quelle auf GitHub

Hier stehen alle wichtigen Änderungen an freemapper, die neueste zuerst. Das Format folgt Keep a Changelog.

[Unveröffentlicht]

[0.22.0] - 2026-11-15

Hinzugefügt

  • Baumkataster von Köln, Dortmund und Frankfurt am Main (ADR 0065). Ein WFS ohne CRS-Angabe, der in Metern antwortet, wird im angefragten CRS gelesen, und Feldnamen dürfen Leerzeichen enthalten.
  • Die Trainingskarte (ADR 0140): --training bei run und export (bei select die Voreinstellung der Seite), training: true bei den MCP-Werkzeugen start_pipeline und open_area_selector und ein Kästchen auf der Gebietsseite schreiben <name>-training.omap und <name>-training.pdf, mit --ocad auch ocad/<name>-training.ocd. Sie ist zum Drucken und Laufen, so wie sie ist, und enthält Karte und sichtbare Kandidaten zusammen. Damit kein Symbol auf einem anderen liegt, verbindet freemapper Linien, die Ende an Ende stoßen, nimmt Stadtmobiliar von Straßen und Plätzen, zeichnet einen Park nur dort gelb, wo das nDOM keine Bäume zeigt, lässt in olivgrünen Flächen (520) nur Gebäude, Gewässer, Höhenlinien und Wege stehen, die man durchqueren kann (von einer Sackgasse bleibt ein Anfang von 1 mm, wenn kein Zaun und keine Mauer davor steht), rückt Bäume, Denkmäler und andere Punktsymbole bis 1,5 mm von Wegen, Gebäuden, Wasser und anderen Punkten ab (nie in olivgrüne Flächen), schneidet aus, was den Abstand der Norm nicht hält (das Objekt mit dem niedrigeren Rang weicht; Mauern und unüberwindbare Zäune werden dort nur geschnitten, nie ganz weggelassen), und lässt weg, was unter der Mindestgröße der Norm liegt. Hat ein Projekt ein nDOM, aber noch keine Baumbedeckung, lässt die Trainingskarte seine Parks ganz, und eine Warnung sagt, dass freemapper derive noch einmal laufen soll. Fahrbahnen, Gleise und Wege, die nebeneinander laufen, stehen dort noch nebeneinander; das Zusammenlegen folgt. Ein run behält eine vorhandene Trainingskarte und sagt das, export --training bricht dann ab; --force ersetzt sie und die Grundkarte (die alten bleiben als .bak). freemapper baut die Trainingskarte aus den gespeicherten Daten und den Inhaltseinstellungen, Korrekturen in OOM kommen also nicht in sie hinein; um nur die Trainingskarte neu zu schreiben, <name>-training.omap (mit --ocad auch ocad/<name>-training.ocd) löschen und ohne --force erneut laufen lassen. Grundkarte und Kandidaten bleiben das Arbeitsmaterial zum Kartieren.
  • Baumkataster von Leipzig, Frankfurt (Oder), Kiel und Norderstedt (ADR 0065). Baumkataster können jetzt auch ein WFS sein, der GeoJSON liefert ([[extra.trees]] format = "wfs-geojson" mit type_name und output_format), und fields.gone nennt ein Feld, mit dem gefällte Bäume entfallen.
  • Schleswig-Holstein: das Baumkataster der Hansestadt Lübeck (ADR 0065). Baumkataster können jetzt auch eine CSV-Datei für die ganze Stadt sein ([[extra.trees]] format = "csv" mit x_field, y_field und separator); freemapper lädt sie ganz und schneidet sie auf das Gebiet zu. In der Lübecker Altstadt kommen 384 Bäume auf die Karte und 43 zu den Kandidaten, an Stelle der OpenStreetMap-Bäume an denselben Stellen. Das Beispiel ist neu gebaut.
  • Hamburg: das Straßenbaumkataster mit Gattung, Art und Kronendurchmesser (ADR 0065). Baumkataster können jetzt auch eine OGC-API-Sammlung sein ([[extra.trees]] format = "ogc-api", mit Seiten über next-Links), und das Erfassungsdatum ist optional. In Blankenese kommen 13 Straßenbäume auf die Karte und 4 zu den Kandidaten, an Stelle der OpenStreetMap-Bäume an denselben Stellen. Das Beispiel ist neu gebaut.
  • Genehmigungshinweise: Naturdenkmale und geschützte Landschaftsbestandteile aus Schleswig-Holstein, aus dem INSPIRE-Dienst der Schutzgebiete (CC BY 4.0, ADR 0146, Nachtrag). Der Dienst ist lückenhaft: die Naturdenkmale stammen fast nur aus dem Kreis Schleswig-Flensburg, die Landschaftsbestandteile aus Kiel, Lübeck und den Kreisen Plön, Schleswig-Flensburg und Stormarn. Die Hinweise sagen das und verweisen für die übrigen auf die untere Naturschutzbehörde. Die zwei Beispiele haben neue Hinweise.
  • Genehmigungshinweise: Naturdenkmale und geschützte Landschaftsbestandteile aus Rheinland-Pfalz, aus dem Naturschutz-Dienst des Landesamts für Umwelt (Open Database License, ADR 0146, Nachtrag).
  • Rheinland-Pfalz: das Landschaftsmodell des LVermGeo RP (ATKIS Basis-DLM, ADR 0147). Es liegt dort nur im Shape-Schema der AdV vor; freemapper liest es jetzt auch so ([[extra.nas]] schema = "shape"). Seine Objekte bleiben Kandidaten: in Cochem 19 Denkmäler und Wegkreuze, 2 Wasserläufe und ein Brunnen, bei Dahn ein Felsen, 3 Wasserläufe und 6 Wege. Die zwei Beispiele sind neu gebaut.
  • Genehmigungshinweise: Naturdenkmale und geschützte Landschaftsbestandteile aus Niedersachsen, aus dem Kartendienst des NLWKN (ADR 0148). Er hat keinen WFS, nur ArcGIS REST; freemapper liest solche Dienste jetzt auch als Tabelle. Die geschützten Biotope führen in Niedersachsen die Landkreise; die Hinweise sagen das.
  • Mecklenburg-Vorpommern: das vollständige ALKIS und das Landschaftsmodell (ADR 0062, ADR 0135). Das vollständige ALKIS bringt Treppen, Mauern und Brücken direkt auf die Karte: in der Wismarer Altstadt 630 Treppen, meist kurze Stufen vor den Haustüren, und 138 Mauern; OpenStreetMap-Mauern, die sie doppeln, entfallen. Das Landschaftsmodell ergänzt Kandidaten (Bäume, Wasserläufe, Wege). Die zwei Beispiele sind neu gebaut.
  • Genehmigungshinweise: Naturdenkmale, geschützte Landschaftsbestandteile und gesetzlich geschützte Biotope aus zehn Bundesländern (ADR 0146): Naturdenkmale aus Brandenburg, Hamburg, dem Saarland, Sachsen, Sachsen-Anhalt, Bayern und Baden-Württemberg, Landschaftsbestandteile aus Brandenburg, Sachsen-Anhalt und Bayern, geschützte Biotope aus Brandenburg, Berlin, Hamburg, dem Saarland, Sachsen, Hessen und Nordrhein-Westfalen. Liegen geschützte Biotope im Gebiet, sagt ein Hinweis, dass verboten ist, was sie zerstören oder erheblich beeinträchtigen kann, und nennt ihre Typen; ein weiterer nennt die untere Naturschutzbehörde mit dem Kreis. Biotope desselben Typs stehen in einer Zeile mit ihrem Anteil. Die Beispiele dieser Bundesländer haben neue Hinweise.
  • Nordrhein-Westfalen und Niedersachsen: das vollständige ALKIS (ADR 0062). In Nordrhein-Westfalen bringt es Mauern, Stützmauern, Treppen, Böschungsoberkanten, Brücken und Einzelbäume direkt auf die Karte: 112 Kartenobjekte mehr in der Monschauer Altstadt, 113 im Siebengebirge; OpenStreetMap-Objekte, die sie doppeln, entfallen. Niedersachsen verzeichnet weniger (Brücken, ein Brunnen, Mauern). Die vier Beispiele sind neu gebaut.
  • Schleswig-Holstein: Objekte aus dem Landschaftsmodell des LVermGeo SH (ATKIS Basis-DLM, ADR 0135) als Kandidaten. In den Hüttener Bergen sind das 48 Wälle, ein Wasserlauf und 4 Fahrwege; in Lübeck ein Wasserlauf. Beide Beispiele sind neu gebaut.
  • Hessen: das vollständige ALKIS und das Landschaftsmodell der HVBG (ADR 0135). Das vollständige ALKIS bringt vermessene Treppen auf die Karte, 54 in der Marburger Oberstadt; das Landschaftsmodell ergänzt Kandidaten wie in Bayern (benannte Bäume, kleine Wasserläufe, ein Damm und eine Mauer in Marburg, ein Felsen, eine Quelle und ein Wasserlauf am Feldberg). Beide Beispiele sind neu gebaut. Für Adapter: Ein Manifest darf jetzt einen NAS-Dienst je Modell nennen, sodass ein Bundesland sein Kataster und sein Landschaftsmodell anbieten kann.

Geändert

  • Die 30 Beispiele sind mit dem Stand nach ADR 0140 neu gebaut: Höhenlinien laufen über Wege und befestigte Flächen (in Viktoriapark 82 statt 272 Höhenlinienstücke), an Treppen sind sie ausgeschnitten (in Blankenese 460 statt 332 Stücke), die Zaunstriche zeigen von Wegen weg, und doppelte OSM-Gewässer und -Treppen fehlen (Bürgerpark 7 statt 12 Gewässer, Altstadt Bremen 41 statt 67 OSM-Treppen). Das PDF jedes Beispiels heißt jetzt Prüfausdruck; die Genehmigungshinweise sind unverändert.
  • Höhenlinien laufen auf allen Karten durch Wege und befestigte Flächen, wie die ISSprOM 2019-2 (101) es verlangt; das nimmt den Schnitt an Wegen aus ADR 0097 zurück. Sie enden an Treppen und an den kleinen Geländeformen 105, 109 bis 112 und 115, auf Waldkarten nicht an Erdwällen (105, die ISOM lässt Höhenlinien sie kreuzen), und weiter unter Felswänden. Nordlinien enden weiter an Wegen (ADR 0140).
  • Die Zacken eines Zauns zeigen bei einem geschlossenen Zaun nach innen, sonst zur olivgrünen Fläche daneben, weg von einem Weg, der am Zaun entlangführt, und zum Park. Liegt auf beiden Seiten dieselbe Fläche, nehmen sie die Seite, auf der sie nichts überdecken (ADR 0140, ergänzt ADR 0097).
  • --pdf-candidates heißt jetzt Prüfausdruck: die Grundkarte mit allen sichtbaren Kandidaten, lagetreu, zum Prüfen im Gelände. Der Dateiname <name>-candidates.pdf bleibt. Die stärkere Generalisierung der Felswände aus ADR 0126 und ADR 0134 läuft nicht mehr dort, sondern in der Trainingskarte (ADR 0140).
  • derive schreibt, wo es ein nDOM gibt, die Baumbedeckung nach data/tree-cover.tif: je 1-m-Zelle den Anteil des Bodens, über dem das nDOM mindestens 3 m hoch ist. Die Trainingskarte liest sie (ADR 0140).
  • Ein OSM-Gewässer mit Inseln, das zur Hälfte auf einem Gewässer aus dem Kataster liegt, entfällt jetzt als Doppel wie eines ohne Inseln; bisher las freemapper nur seinen äußeren Ring und behielt es. Im Bremer Bürgerpark lagen vier solche Seen zu 91 bis 99 % auf ALKIS-Gewässer. Auch eine OSM-Treppe, die zur Hälfte auf einer Treppe des Katasters liegt, entfällt jetzt, und die Katastertreppe nennt sie in freemapper:also; im Bürgerpark waren es 6 von 23 (ADR 0140).
  • Die Beispielübersicht, die README, die Gegenüberstellung und das Handbuch zeigen kleine WebP-Vorschaubilder; erst ein Klick lädt das Bild in voller Auflösung. Die Beispielübersicht lädt damit 1,6 MB statt 6,6 MB. Das PDF jedes Beispiels steht als eigener Link unter dem Bild. scripts/thumbnails.sh erzeugt die Vorschaubilder neu, wenn ein Beispiel oder ein Bild des Handbuchs neu gebaut ist.
  • Die README verlinkt die Beispielübersicht gleich oben neben den Änderungen. In der Beispielübersicht steht die Vorschau jetzt in der ersten Spalte.

[0.21.0] - 2026-11-15

Hinzugefügt

  • Genehmigungshinweise: Denkmale aus Schleswig-Holstein (ADR 0145). Das Landesamt für Denkmalpflege veröffentlicht seine Denkmalliste nur als eine Datei für das ganze Bundesland (etwa 52 MB, jede Woche neu, CC BY 4.0). freemapper lädt sie beim ersten Mal, hebt sie im Zwischenspeicher auf und lädt sie danach nur, wenn der Server eine neuere hat. Bodendenkmale und die Denkmale Lübecks fehlen darin; die Hinweise sagen das. Die beiden Beispiele aus Schleswig-Holstein haben neue Hinweise.
  • Sachsen-Anhalt: Objekte aus dem Landschaftsmodell des LVermGeo (ATKIS Basis-DLM, ADR 0135), wie in Bayern: Felswände und Felsen, Quellen, Dämme, Denkmäler, Brunnen, Zäune, kleine Wasserläufe und benannte Bäume als Kandidaten, auf Waldkarten auch Wege, die OpenStreetMap fehlen. Felsen, die das Modell als Linien führt, sind Felswand-Kandidaten (201), deren Striche bergab zeigen. Im Bodetal sind das 27 Felswände, 20 Felsen und 11 Wege, in Quedlinburg 7 kleine Wasserläufe; beide Beispiele sind neu gebaut.
  • Genehmigungshinweise: Denkmale auch aus Hessen, Baden-Württemberg, Bremen, Sachsen, Brandenburg, Rheinland-Pfalz und Nordrhein-Westfalen, aus den offenen Diensten der Denkmalämter (ADR 0144). Liegen außerhalb von Berlin und Hamburg Denkmale im Kartengebiet, nennt ein neuer Hinweis die untere Denkmalschutzbehörde mit Kreis und Gemeinde; bisher sagte dort kein Hinweis, wen man fragt, auch im Saarland nicht. Der Bestand in Nordrhein-Westfalen ist noch im Aufbau, in Brandenburg fehlen die Baudenkmale Potsdams; eine Quelle mit solchen Lücken sagt das jetzt in den Hinweisen, und der Behörden-Hinweis kommt dort auch ohne Treffer. Ein Stadtkreis in Baden-Württemberg gilt jetzt wie eine kreisfreie Stadt als eigene untere Behörde, auch beim Hinweis auf die Naturschutzbehörde. Für Dienste, die nur in ihrem eigenen Koordinatensystem antworten, fragt freemapper jetzt in Metern und rechnet um; GML-Antworten mit Punkten liest es jetzt auch. Ein Download, dessen gzip vorzeitig endet (so beim Denkmaldienst Sachsens), wird einmal ohne Kompression wiederholt. Die Beispiele dieser Bundesländer und des Saarlands haben neue Hinweise.
  • Genehmigungshinweise für Baden-Württemberg (ADR 0143): die Wasserschutzgebietszonen der LUBW mit Schutzzone und der zuständigen unteren Wasserbehörde. Ein Wasserschutzgebiet nennt jetzt auch die zuständige Behörde, wo die Daten sie angeben; der Hinweis sagt dann „fragen Sie die untere Wasserbehörde (Landratsamt Ludwigsburg)“. Die Namen, die das Register in Großbuchstaben, in Anführungszeichen und mit Nummer schreibt (\"MAHDENTAL\" 111032), schreiben die Hinweise als Namen („Mahdental“). Damit nennen die Hinweise Wasserschutzgebiete in allen Bundesländern. Die LUBW veröffentlicht die Zone I nicht; sie kommt mit der Zone II zusammengefasst.
  • Genehmigungshinweise: Trinkwasser- und Heilquellenschutzgebiete der Bundesanstalt für Gewässerkunde (BfG, WasserBLIcK, CC BY 4.0) für Bayern, Niedersachsen, Bremen, Mecklenburg-Vorpommern, Rheinland-Pfalz, Sachsen-Anhalt und Sachsen (ADR 0142). Das sind die Gebiete, die die Bundesländer an die BfG melden, mit Namen, aber ohne Schutzzone. Teile eines Gebiets, oft eins je Zone, fasst freemapper zu einer Fläche zusammen. Namen aus Niedersachsen, die der Dienst verstümmelt liefert („Börßum“), schreiben die Hinweise richtig („Börßum“). Die Beispiele dieser sieben Bundesländer haben neue Hinweise. Für Baden-Württemberg hat auch die BfG keine Daten.
  • Genehmigungshinweise für Sachsen (ADR 0139): Forstbezirk und Revier des Staatsbetriebs Sachsenforst, Erholungswald, Naturwaldzellen, Bodenschutzwald und die Trinkwasserschutzzonen im Wald, aus zwei Kartendiensten von Sachsenforst (dl-de/by-2-0, „Geodaten Sachsenforst“). Ein Revier ist im Staatswald zuständig, für anderen Wald die untere Forstbehörde des Landkreises; das steht so in den Hinweisen. Die Dienste geben nur für einzelne Punkte Auskunft. freemapper fragt deshalb an bis zu 25 Punkten über der Karte, das sind bis zu 50 Anfragen. Die Hinweise sagen dann, dass die Anteile geschätzt sind und dass etwas zwischen den Punkten fehlen kann, und schreiben bei einem leeren Abschnitt nicht „kein Wasserschutzgebiet“, sondern dass an den abgefragten Punkten nichts genannt ist. Die Beispiele Bastei und Bautzen haben neue Hinweise.
  • Genehmigungshinweise für Schleswig-Holstein (ADR 0137): der Landeswald mit seinem Revier der Schleswig-Holsteinischen Landesforsten, der Naturwald und die Wasserschutzgebiete mit Schutzzone, aus dem Umweltportal des Landesamts für Umwelt (CC BY 4.0). Der Dienst liefert nur GML; die Tabellenquelle liest jetzt auch solche Dienste. Namen, die ein Dienst in Großbuchstaben schreibt („HÜTTEN“), schreiben die Hinweise als Namen („Hütten“).

Geändert

  • Bayern: Das Oberflächenmodell (DOM20) wird stückweise gelesen, Block für Block (ADR 0141). freemapper liest nur die 51-m-Blöcke, die das Kartengebiet braucht, statt ganzer Kacheln von 32 bis 56 MB, und eine spätere Karte in derselben Kachel liest nur die Blöcke, die noch fehlen. Am Schmausenbuck sind das 92 MB statt etwa 212 MB, bei Zelle für Zelle gleichem Oberflächenmodell. Früher zwischengespeicherte Kacheln bleiben gültig.
  • Vegetation aus Laserpunktwolken (ADR 0138): Die Grünabstufungen 406, 408 und 410 folgen jetzt dem, was in der Schicht steht, durch die man läuft: dem Anteil der Laserpunkte zwischen 0,8 und 3 m an allen Punkten unter 3 m (ab 20 %, 35 % und 50 %). Vorher zählte ein Index auch die Kronen mit, und Hochwald ohne Unterwuchs erreichte fast den Wert eines Dickichts, denn alle Befliegungen der Bundesländer finden ohne Laub statt. Am Schmausenbuck, gemessen an der Kronenhöhe aus den Sommer-Luftbildern, erscheinen 71 % der Dickichte grün (vorher 29 %) und 7 % des Hochwalds (vorher 11 %). Parks und Städte bekommen mehr grüne Flächen (Sanssouci 205 statt 54); Waldkarten ändern sich weniger, weil ihre Mindestfläche größer ist. Stangenholz mit freiem Stammraum bleibt gut belaufbarer Wald. Bestehende Karten bekommen das mit run --force. Die neun Beispiele mit Vegetation sind neu gebaut.

Behoben

  • Bayern, Objekte des Landschaftsmodells (ADR 0135): Ein Brunnen des Modells in einem OpenStreetMap-Brunnenbecken oder in gezeichnetem Wasser ist dessen Fontäne und entfällt, wie ein ALKIS-Brunnen; in der Regensburger Altstadt sind das 2 von 5. Ein Turm des Modells entfällt neben einem OpenStreetMap-Turm des anderen Turmsymbols (524 und 525 zählen als eins). Verlässt ein Kartengebiet Bayern, nennt der Hinweis zum Entfernen der gespeicherten Ebenen das Landschaftsmodell statt des vollständigen ALKIS.
  • Genehmigungshinweise: In der Tabelle der Quellen stand bei den Diensten des Saarlands der Platzhalter {year} statt des Jahrs des Abrufs. Jetzt steht dort das Jahr, auch bei der BfG. Die beiden Saarland-Beispiele sind neu erzeugt.
  • Ein Adapter aus einem Ordner, der ein eingebautes Raster-Backend nennt (backend = "lgb" und Ähnliches), bekam in der Download-Schätzung kein Luftbild, kein Gelände- und kein Oberflächenmodell. Die eingebauten Backends schätzen jetzt ihre Raster selbst, mit denselben Werten wie die Bundesländer. Die Schätzungen der eingebauten Bundesländer bleiben gleich (Issue #71).

[0.20.0] - 2026-11-14

Hinzugefügt

  • Bayern: Objekte aus dem Landschaftsmodell der Vermessungsverwaltung (ATKIS Basis-DLM, ADR 0135). Bayern hat für sein Kataster keinen Dienst; Quellen, Höhleneingänge, benannte Felsen, frei stehende Türme, Denkmäler und Wegkreuze, Brunnen, Zäune, Dämme, kleine Wasserläufe und benannte Bäume kommen jetzt von dort, auf Waldkarten auch Wege und Fahrwege. Das Modell ist für 1:25 000 gemacht und etwa 3 m genau. Seine Objekte bleiben deshalb Kandidaten und entfallen, wo OpenStreetMap oder eine andere Quelle dasselbe Objekt hat: ein Punkt im Umkreis von 15 m, eine Linie, die zu 80 % höchstens 10 m neben einer Linie derselben Art läuft. Am Schmausenbuck bleiben 14 Kandidaten, darunter 6 Wege, die OpenStreetMap fehlen; in der Regensburger Altstadt 10. Beide bayerischen Beispiele sind neu gebaut. Für Adapter: Ein NAS-Dienst nennt sein Modell ([[extra.nas]] model, Standard alkis, neu basis-dlm).
  • Beispiele: Jedes der 30 Beispiele in examples/ hat jetzt seine Hinweise zu Genehmigungen (permits.md und permits.json, auf Deutsch). Sie zeigen, was die Hinweise im jeweiligen Bundesland liefern, von den Bezirken und Denkmalen in Berlin und Hamburg bis zu Forstverwaltung, Wasserschutzgebieten und klassifizierten Straßen.
  • Genehmigungshinweise: Ein neuer Abschnitt nennt die klassifizierten Straßen, die durch das Kartengebiet führen (Autobahn, Bundes-, Landes- oder Staats-, Kreisstraße, mit ihrer Nummer aus OpenStreetMap), und je Klasse ein Hinweis, dass die Straßenverkehrsbehörde eine Sperrung oder eine Querung mit Streckenposten anordnet und wer die Straße meist unterhält (ADR 0133). Das gilt in allen Bundesländern und kommt aus dem OSM-Auszug, den freemapper schon liest.
  • Genehmigungshinweise: Die Dateien, die freemapper für ein ganzes Bundesland lädt (in Nordrhein-Westfalen etwa 32 MB, in Brandenburg etwa 4 MB), bleiben im Zwischenspeicher (Ordner permits). Ein neuer Abruf fragt nur nach dem Datum und lädt eine Datei nur, wenn der Server eine neuere hat; ist er nicht erreichbar, nimmt freemapper die aufgehobene (ADR 0132).
  • Genehmigungshinweise: Wasserschutzgebiete auch aus Brandenburg (LfU, eine Datei mit etwa 4 MB) und Nordrhein-Westfalen (eine Datei mit etwa 15 MB, auch die geplanten Gebiete, deren Zone den Zusatz „(geplant)“ trägt), beide als Shapefile für das ganze Bundesland (ADR 0131). Ein Abruf in Nordrhein-Westfalen lädt damit etwa 32 MB. Felder einer Shapefile-Tabelle ohne .cpg liest freemapper als Latin-1, wenn sie kein UTF-8 sind; Umlaute kamen dort bisher als Ersatzzeichen an.
  • Genehmigungshinweise aus weiteren Bundesländern (ADR 0130): Wasserschutzgebiete mit Schutzzone aus Berlin, Hessen und dem Saarland; Waldfunktionen aus Brandenburg (Naturwald, Totalreservat, nicht betretbare Flächen, Erholungswald), Nordrhein-Westfalen (Naturwaldzellen, Wildnisentwicklungsgebiete) und dem Saarland (Naturwaldzellen, Urwald); im Saarland dazu das Revier des SaarForst Landesbetriebs im Staatswald und die Baudenkmale. Diese Dienste beschreibt freemapper nur noch als Tabelle ihrer Layer; jeder behält nur die Felder, die er liest. Eine Schutzzone, die die Daten nur als „I“ oder „III“ schreiben, heißt in den Hinweisen „Schutzzone I“. Bremen und Baden-Württemberg geben für ihre Wasserschutzgebiete keine Lizenz im Dienst an und bleiben deshalb noch draußen.
  • Genehmigungshinweise für Hamburg (ADR 0129): Für ein Kartengebiet in Hamburg nennen die Hinweise den Bezirk mit seinem Bezirksamt, die öffentlichen Grünanlagen aus dem Grünplan, die Denkmale (Gartendenkmale, Ensembles, Baudenkmale) mit dem Denkmalschutzamt, die Revierförsterei des Stadtwalds, Bannwald und Erholungswald sowie die Wasserschutzgebiete mit ihrer Schutzzone, alles aus sechs Diensten des Geoportals Hamburg. Neu für alle Bundesländer mit solchen Daten: ein Hinweis zu jedem Wasserschutzgebiet im Gebiet, der sagt, ob es eine innere Zone (I oder II) ist, und Hinweise zu Erholungswald, Bannwald, Naturwald und gesperrten Waldflächen. Die Architekten, die die Hamburger Denkmalliste nennt, übernimmt freemapper nicht.
  • Genehmigungshinweise, Schritt 3 (ADR 0124): In Brandenburg, Berlin und Nordrhein-Westfalen nennen die Hinweise die Forstverwaltung des Kartengebiets, jede Dienststelle mit Revier oder Bezirk und ihrem Anteil: die Oberförstereien des Landesbetriebs Forst Brandenburg, die Forstämter der Berliner Forsten und die Regionalforstämter von Wald und Holz NRW. In Nordrhein-Westfalen kommt der Anteil des Staatswalds dazu. Eine Waldkarte bekommt den Hinweis auf die zuständige Dienststelle und darauf, dass die Waldbesitzer zustimmen müssen; in den anderen Bundesländern nur den zweiten, mit dem Satz, dass die Hinweise die Dienststelle dort nicht nennen. In Nordrhein-Westfalen lädt ein Abruf dafür zwei Dateien mit zusammen etwa 17 MB. Die Namen und Kontaktdaten der Förster in diesen Dateien übernimmt freemapper nicht, auch nicht in data/permits/.
  • Waldkarten in steilem Gelände bekommen automatisch Höhenlinien alle 10 m statt 5 m (ADR 0125). Steil heißt: Auf mehr als einem Zehntel der Fläche lägen die 5-m-Linien enger als 0,35 mm und liefen zu einer braunen Fläche zusammen. derive sagt das in einer Zeile; --contour-interval 5 behält 5 m. Unter den Beispielen trifft es das Bodetal und die Bastei.
  • Bayern: Vegetation aus Laserpunktwolken (ADR 0128). Mit --content-set vegetation=candidates oder dem Häkchen auf der Gebietsseite lädt freemapper die Laserpunkte der Bayerischen Vermessungsverwaltung und legt offenes Gelände, Wald und die Grünabstufungen in die Kandidatenkarte, wie in Brandenburg, Berlin, Nordrhein-Westfalen, Rheinland-Pfalz und im Saarland. Eine Kachel von 1 km² hat meist 100 bis 600 MB; die Schätzung rechnet mit 250 MB. Das Datum an den Kandidaten ist der Flugtag, den freemapper aus den Laserpunkten liest; ältere Befliegungen nennen ihn nicht, dort steht der Tag, an dem die Datei erzeugt wurde. Die Kacheln liegen auf einem dritten Server, geodaten.bayern.de, den der Adapter für Bayern jetzt nennt (Revision 2). Die bayerischen Flüge, deren Tag bekannt ist, lagen zwischen November und Februar. Ohne Laub erscheinen Gebüsch und Jungwuchs oft als gut belaufbarer Wald. Das Beispiel Schmausenbuck ist mit der Vegetation neu gebaut (vier Kacheln, 1,2 GB, Flug vom 20.12.2021).
  • Felswände auf Waldkarten werden generalisiert (ADR 0126). OpenStreetMap erfasst Felsgebiete Wand für Wand; an der Bastei waren es 2144 Linien, die zu einer schwarzen Fläche zusammenliefen. freemapper liest jede Wand am Geländemodell: wie hoch der Fels über seinem Hang steht und welche Seite tiefer liegt. Niedrige Abschnitte kommen in die Kandidatenkarte, Felstürme werden zur Fläche 206, die höchsten Wände bleiben zuerst und halten die Abstände der ISOM 2017-2; wo die Zacken keinen Platz haben, steht die Oberkante 201.3, zwei Wände Rücken an Rücken werden eine Felsrippe. Die Wände werden geglättet, die Höhenlinien enden nur unter gezeichnetem Fels, Kuppen auf dem Fels werden ausgeblendet. Die Bastei behält 256 Wände, 23 Oberkanten und 26 Felstürme und -rippen; kein Quadratzentimeter ist mehr als 33 % schwarz (vorher 230 %).

Geändert

  • Vegetation aus Laserpunktwolken (ADR 0136): Die Umrisse folgen jetzt dem Rand der Vegetation statt den 3-m-Stufen der Zellen. freemapper zeichnet sie auf einem dreimal feineren, leicht weichgezeichneten Raster; Ecken werden etwas abgerundet. Die neun Beispiele mit Punktwolken-Vegetation sind neu gebaut.
  • Felswände auf Sprintkarten (ADR 0134): Auch Sprintkarten generalisieren ihre Felswände, nach den Werten der ISSprOM 2019-2 (Mindesthöhe 1,5 m, Mindestlänge 0,9 mm), und ihre Trainings-PDF stärker (Wände ab 3 m, keine Oberkanten ohne Zacken). derive behält das Geländemosaik eines Kachel-Bundeslands jetzt für jede Karte; damit zeigen die Zacken von Böschungen und Stützmauern auch dort bergab.
  • Felswände auf Waldkarten (ADR 0126): Die Trainings-PDF generalisiert den Fels stärker als die Karte (Wände ab 5 m über dem Hang, keine Oberkanten ohne Zacken, längere Stücke), auch wenn die Felsen nur Kandidaten sind; die Kandidatenkarte behält alle OSM-Wände. Eine Wand, an der das Orthofoto Fels zeigt, bleibt in der Rangfolge zuerst; dafür schreibt derive bei Waldkarten data/rock-seen.tif.
  • Genehmigungshinweise richten sich nach dem Kartengebiet, nicht nach der Kartenart (ADR 0127). Die Hinweise zum Wald und der Abschnitt „Forstverwaltung“ kommen, sobald im Gebiet laut OpenStreetMap Wald liegt, auch bei einer Sprint- oder Schulhofkarte, und ebenso, wenn sich das ohne OSM-Auszug nicht sagen lässt. Eine Karte mitten in der Stadt bekommt sie nicht mehr, auch wenn sie in einem Brandenburger Revier liegt. Den Träger einer Schule im Gebiet nennen die Hinweise jetzt bei jeder Kartenart, nicht nur bei Schulhofkarten.
  • Beispiele: Das Bodetal und die Bastei haben Höhenlinien alle 10 m statt 5 m; an den steilen Hängen liefen sie zu einer braunen Fläche zusammen. Die Felsen der Bastei stammen aus OSM, nicht aus dem Geländemodell, wie die Beispielübersicht bisher sagte.

Behoben

  • Vegetation aus Laserpunktwolken: Liegen Kacheln mit verschiedenem Datum unter einer Karte, tragen die Kandidaten jetzt das älteste Datum statt des jüngsten. Eine Fläche kann auf jeder der Kacheln liegen, also lässt sich nichts Neueres behaupten.
  • Vegetation aus Laserpunktwolken: Laden zwei Läufe zur selben Zeit dieselbe Kachel, hat jeder seine eigene Teildatei. Bisher löschten sie sich die Teildatei gegenseitig und ließen die Kachel mit einer Warnung aus. Das betraf Nordrhein-Westfalen, Rheinland-Pfalz, Berlin, das Saarland und Bayern.

[0.19.0] - 2026-11-14

Hinzugefügt

  • Bayern (ADR 0123): Karten in ganz Bayern, in UTM-Zone 32, auch östlich von 12° O. Das Luftbild kommt aus dem Kartendienst der Bayerischen Vermessungsverwaltung, mit dem Datum des Bildflugs. Das Geländemodell (DGM1) liest freemapper kachelweise, je Kachel etwa 2,8 MB. Ein Oberflächenmodell mit 1 m gibt es in Bayern nicht; freemapper nimmt das DOM20 mit 20 cm (etwa 45 MB je km²), verkleinert es auf 1 m und hebt nur die verkleinerten Kacheln auf. Bayern hat für sein Kataster keinen Dienst. Die Gebäude und Überdachungen kommen deshalb aus den LoD2-Kacheln, einer Datei je 2-km-Quadrat (auf dem Land etwa 3 MB, in einer Innenstadt 60 bis 160 MB), die Nutzung aus der Datei jedes Kreises am Gebiet (2 bis 13 MB). Brücken und Mauern aus LoD2 kommen nicht auf die Karte. Die Schätzung vor dem Lauf nennt alle fünf Downloads. Dateien im Zwischenspeicher lädt freemapper nur erneut, wenn der Server eine neuere hat; ohne Netz (--offline) entsteht dieselbe Karte. Treppen, Mauern und Böschungen aus dem Kataster und Bewuchs aus Punktwolken gibt es für Bayern noch nicht. Beispiele: die Regensburger Altstadt (Sprintkarte) und der Schmausenbuck im Nürnberger Reichswald (Waldkarte). Thüringen ist jetzt das einzige Bundesland ohne Datenquellen; die Warnung für Gebiete außerhalb der Abdeckung nennt nur noch Thüringen.
  • Beispiele: eine Waldkarte (1:10 000) für jedes Bundesland, neben der Dammheide in Berlin 13 neue in examples/, vom Elbsandstein an der Bastei bis zum Bürgerpark in Bremen. Ausgewählt wurden sie nach Relief und Wegenetz aus gut 30 Probeläufen. In Brandenburg, Nordrhein-Westfalen und im Saarland enthalten sie die Vegetation aus Laserpunktwolken als Kandidaten; in Rheinland-Pfalz passt die Metalink-Datei des Landesamts für die Kacheln bei Dahn nicht zu den Dateien, freemapper lässt sie deshalb aus. Die Tabelle steht in der Beispielübersicht.

Geändert

  • Beispiele: Die 14 Sprintkarten in examples/ sind neu gebaut, alle außer Regensburg, das schon vom aktuellen Stand stammt. Sie zeigen jetzt, was Version 0.18.0 zeichnet. Kleine kompakte Flächen fallen nicht mehr weg (ADR 0122), deshalb haben die Altstädte mehr Sperrflächen (520) unter den Kandidaten und mehr befestigte Flächen (501.5) in der Karte: Lübeck hat 1834 statt 1365 Kandidaten, Wismar 1660 statt 1416. Mit dem kompakten Pfadschreiber sind die 14 Trainingskarten zusammen 5,6 statt 10,1 MB groß. Die Tabellen und Zahlen in examples/README.md und die Gegenüberstellung der drei Inhaltsprofile für Cochem sind neu gezählt.

Behoben

  • Saarland: In Waldgebieten fehlten die ALKIS-Nutzungsflächen mit der Warnung „LVGL ALKIS returned 22 of 26 features in the area“, auch nach einem neuen fetch. Der Dienst führt eine Waldfläche einmal je Vegetationsmerkmal (etwa Laubholz und Kurzumtriebsplantage), mit derselben Objektkennung und derselben Geometrie. freemapper behält davon eine Zeile, zählt die übrigen jetzt aber zu den Treffern des Dienstes. Eine Wiederholung auf einer späteren Seite bleibt ein Fehler. An der Saarschleife bei Mettlach kommen so 684 Nutzungsflächen an und 132 Kandidaten für Sperrgebiet dazu.

[0.18.0] - 2026-11-13

Hinzugefügt

  • Baden-Württemberg (ADR 0119): Karten in Baden-Württemberg, in UTM-Zone 32. Das Luftbild kommt aus dem Kartendienst des LGL, mit dem Flugdatum der Kachel in der Gebietsmitte. Das Geländemodell (DGM1) und das Oberflächenmodell liest freemapper kachelweise aus den 2-km-Archiven des LGL, je Kachel etwa 3,5 MB. Als Oberfläche dient das nDOM1 aus den Luftbildern eines Sommerflugs: Es zeigt die Bäume belaubt und stammt meist vom selben Flug wie das Luftbild oder vom Flug davor. Gebäude und Nutzungsflächen kommen aus dem ALKIS-Dienst des LGL. Er kennt nur ganze Gebäude, also keine Überdachungen, und Straßenflächen schließen das Grün daneben ein. OSM kommt aus den Auszügen der vier Regierungsbezirke (130 bis 215 MB). Quellenvermerk: Datenquelle: LGL, www.lgl-bw.de, dl-de/by-2-0 (Daten geändert, <Jahr>). Beispiel: Altstadt und Schloss Heidelberg.
  • Bremen (ADR 0121): Karten in Bremen und Bremerhaven, in UTM-Zone 32. Das Luftbild kommt aus dem Kartendienst des Landesamts GeoInformation Bremen, der je Bildflug und Stadt eine Ebene hat; freemapper nimmt für jede Stadt den neuesten Farbflug (2025) und nennt als Datum das Flugjahr. Geländemodell (DGM1) und Oberflächenmodell (DOM1) liest es kachelweise aus dem Archiv der Stadt, je Kachel etwa 3,5 MB. Beide stammen aus den Laserscans von 2017 (Bremen) und 2015 (Bremerhaven); freemapper warnt beim Laden, dass im nDOM neuere Gebäude und Bäume fehlen können. Bremen hat kein vereinfachtes ALKIS. Gebäude, Bauteile, Überdachungen und Nutzungsflächen kommen deshalb aus dem vollständigen ALKIS, das das LGLN für Bremen betreibt, mit denselben Bezeichnungen wie in den anderen Bundesländern. Aus demselben Dienst kommen wie in Brandenburg die vermessenen Linien: Treppen, Rampen, Stützmauern, Denkmäler, Böschungsoberkanten und Brücken. Ein Gebiet in Niedersachsen, das nach Bremen hineinreicht, bekommt dort jetzt Gebäude und Nutzung aus dem Bremer Kataster statt der Warnung, es liege außerhalb der unterstützten Bundesländer; diese Warnung nennt als Beispiele nun Bayern und Thüringen. Die Gebietsseite zeigt das Luftbild nur für die Stadt Bremen, nicht für Bremerhaven. Quellenvermerk: © GeoBasis-DE / Landesamt GeoInformation Bremen (<Jahr>), CC BY 4.0, Daten geändert. Beispiel: Bremer Altstadt und Wallanlagen.
  • Hinweise zu Genehmigungen in Berlin (ADR 0120): Liegt das Kartengebiet in Berlin, nennen permits.md und permits.json zusätzlich die Bezirke mit ihrem Anteil, die Grünanlagen mit Bezirk und Widmung, die Zahl der öffentlichen Spielplätze, den Anteil des Bundeslandes Berlin und des Bundes am Gebiet (eine Zeile je Eigentümer; andere Eigentümer nennt freemapper nicht, sie teilen sich die Zeile „Andere öffentliche Eigentümer“), die Denkmale je Art mit bis zu 20 Links in die Denkmaldatenbank sowie Naturdenkmale, geschützte Landschaftsbestandteile und Flächen mit besonderer Regelung. Die Hinweise nennen dann für jeden Bezirk, der mehr als den Rand des Gebiets berührt, das Ordnungsamt, das Straßen- und Grünflächenamt, die untere Denkmalschutzbehörde und die untere Naturschutzbehörde des Bezirksamts. Die Daten kommen aus fünf Diensten des Geoportals Berlin (dl-de/zero-2-0, Lizenztext wörtlich in der Quellentabelle). freemapper fragt sie nur, wenn Hinweise gewünscht sind und das Gebiet in Berlin liegt, und nur über die Hosts von Berlins Adapter. Ein Dienst, der ausfällt, nimmt nur seinen Abschnitt mit. Ein Regionsadapter kann solche Quellen jetzt mitbringen (RegionAdapter::permit_sources). permits.json bleibt bei Schema 1, ältere Dateien und data/permits/sources.json lesen sich weiter. Beschrieben im Handbuch, Kapitel 12.

Geändert

  • Kleinere PDFs: --pdf und --pdf-candidates schreiben ihre Pfade mit dem kompakten Pfadschreiber aus freemapper-core 0.26.0 (Entscheidung 0033 in freemapper-core). Die Koordinaten der Pfade werden auf 1/1000 Punkt gerundet. Kleine Formen mit mindestens vier Punkten innerhalb von 7 mm, etwa die Punkte der Punktsymbole, stehen relativ zu ihrem ersten Punkt, sodass sich wiederholte Symbole gut komprimieren lassen. Die 26 PDFs der 12 Beispielkarten mit Daten (ohne die Dammheide) schrumpfen um 22 bis 79 %, zusammen von 16,9 MB auf 8,3 MB; die Karte von Sanssouci von 1,45 MB auf 304 KB. Die Karten sehen gleich aus: mit poppler bei 150 dpi gerastert, weichen 6 von 113 Millionen Pixeln um mehr als 12 % ab. Texte, Schriften, Farben, Seitengröße und der Zuschnitt auf das Kartengebiet bleiben, wie sie waren. Eine Form mit einer Koordinate, die keine endliche Zahl ist, wird ausgelassen, statt die Seite zu beschädigen. Alle Bibliotheken aus freemapper-core sind auf v0.26.0 angehoben; sonst ändert 0.26.0 für freemapper nichts.
  • Schul- und Waldkarten: Die Mindestgrößen der Norm wachsen jetzt mit den Symbolen (ADR 0118). Auf der Schulkarte (Symbole 125 %) ist das kleinste Gebäude oder Dach 0,625 mm statt 0,5 mm groß, auf der Waldkarte 1:10 000 (150 %) 0,75 mm; ebenso die kürzeste Linie nach ISSprOM 4.5, die kleinsten Flächen von Sperrgebiet, Pflaster, Grün, offenem Land und Gewässern, die kürzeste Höhenlinie und der kleinste Höhenlinienring, Geländeformen und die kleinste Vegetationsfläche. Solche Karten zeigen damit etwas weniger Kleinteiliges. Sprintkarten (100 %) bleiben gleich. Höhenlinien, Geländeformen und Vegetation eines bestehenden Projekts ändern sich erst, wenn derive neu läuft. Das Beispiel Dammheide ist damit neu gebaut. Weggefallen sind vor allem kleine Gebäude und Überdachungen in den Siedlungen und kurze Zählkurven: 560 statt 757 Gebäude, 7 statt 24 Überdachungen.
  • Intern: Maße auf dem Papier haben jetzt einen Typ (ADR 0118). Ein Papiermaß (PaperMm) gilt auf dem gedruckten Blatt, ein Symbolmaß (SymbolMm) wächst mit der Symbolvergrößerung der Kartenart und lässt sich ohne sie nicht umrechnen. Die rund 45 von Hand geschriebenen Umrechnungen in Geländemeter und Kartenkoordinaten sind ersetzt; Linienabstand, Linienbreiten und Punktgrößen der Norm stehen einmal in build/symbol_measures.rs. Kein Maß ändert sich, die Karten bleiben gleich.
  • Intern: Die Regel für überlappende Mauern, Zäune und Hecken rechnet ihre Abstände jetzt wie alle anderen Regeln um (Nachtrag zu ADR 0118). Auf einer Waldkarte 1:10 000 verschieben sich dadurch zwei Grenzwerte um die letzte Stelle der Gleitkommazahl; alle anderen Karten rechnen wie bisher. Die kürzesten Reststücke einer geschnittenen Linie bleiben 1 mm auf dem Blatt und wachsen nicht mit den Symbolen; das ist jetzt entschieden. Vier Tests zur Reihenfolge des Kartenaufbaus laufen ohne Projektordner (build/assembly.rs).

Behoben

  • Baden-Württemberg: Antwortet der Server für das 2-km-Archiv eines Blocks mit einer Kachel im Bundesland mit 404, bricht das Laden des Geländes jetzt mit einem Fehler ab, der die Adresse des Archivs nennt (beim Oberflächenmodell nennt sie eine Warnung), statt ein 1-km-Loch in den Vorlagen zu lassen und nur vor einer fehlenden Kachel zu warnen.
  • Kleine kompakte Flächen fallen nicht mehr als „zu schmal“ weg (ADR 0122). Sperrgebiete, Pflaster, Grün, offenes Land und Gewässer lassen Splitter aus: Stücke unter (1 mm)² oder schmaler als 1 mm. Die Breite war bisher 2 · Fläche / Umfang, bei einem Quadrat also nur die halbe Seite: Ein quadratisches Stück musste 2 mm Seite haben, um als 1 mm breit zu gelten. Jetzt zählt die Schmalseite des Rechtecks mit gleicher Fläche und gleichem Umfang. Auf Waldkarten ist 1 mm der Norm 15 m im Gelände; dort fielen Grundstücke bis 30 × 30 m aus den Sperrflächen und ließen weiße Löcher in den Siedlungen. Im Beispiel Dammheide bleiben jetzt 144 von 146 Sperrflächen (ohne die Korrektur 113) und 9 von 10 Flächen offenes Land (ohne sie 2). Sprintkarten bekommen einige kleine Stücke dazu, vor allem Sperrflächen von 40 bis 100 m² in den Kandidaten; keine Fläche, die bisher gezeichnet wurde, fällt weg. Streifen sind so breit wie zuvor, und die Regel für schmale ALKIS-Gewässer (unter 2 m mittlerer Breite Kandidat) bleibt.
  • Waldkarten: Die Nordlinien liegen jetzt 20 mm (1:15 000) bzw. 30 mm (1:10 000) auseinander, 300 m im Gelände, wie ISOM 2017-2 es verlangt; bisher waren es 450 m nach ISOM 2000. Das Beispiel Dammheide ist damit neu gebaut.
  • OCAD-Hinweis nach --ocad: Bei einer Waldkarte empfahl freemapper, in OCAD den Symbolsatz ISSprOM 2019 oder den Schulsymbolsatz zu laden. Jetzt nennt der Hinweis den Satz der Kartenart: ISOM 2017-2 für Waldkarten, ISSprOM 2019 für Sprintkarten, den IOF-Schulsatz 2019 für Schulhofkarten. Das gilt auch für die Zusammenfassung über MCP und auf der Gebietsseite. Auch die README nennt jetzt ISOM 2017-2.

[0.17.0] - 2026-11-13

Hinzugefügt

  • Beispiel Waldkarte: Dammheide in Berlin, 1:10 000, mit OOM-Karte, OCAD-Ausgangsstand und Kandidaten-PDF (ADR 0116).
  • Waldkarten (ADR 0116): Die Äquidistanz lässt sich beim Erzeugen einstellen: --contour-interval <meter>|auto bei init, derive und run, der MCP-Parameter contour_interval bei create_project und start_pipeline (0 heißt automatisch) und das Feld „Äquidistanz“ auf der Gebietsseite, auch für ein bestehendes Projekt. Die Wahl steht in der freemapper.toml, und das nächste derive rechnet die Höhenlinien damit. Ein Wert, der keine positive Zahl ist, wird abgelehnt, bevor ein Projektordner entsteht.
  • Hinweise zu Genehmigungen (ADR 0117): freemapper permits <ordner> und run --permits schreiben permits.md und permits.json neben die Karte. Die Datei nennt für das Kartengebiet Bundesland, Kreis, Amt und Gemeinde aus VG250 des BKG, die Schutzgebiete des BfN, weitere Schutzgebiete sowie Betreiber und Eigentümer aus OpenStreetMap, jeweils mit Anteil am Gebiet, und sagt, wen man meist fragt. Sie ist ein Hinweis und keine Rechtsauskunft. Die Hinweise entstehen nur auf Wunsch; nur dann fragt freemapper geodienste.bfn.de und sgx.geodatenzentrum.de. Den OSM-Auszug liest es aus dem Zwischenspeicher, und --offline nimmt die in data/permits/ gespeicherten Daten. Auf der Gebietsseite gibt es dafür die Option „Hinweise zu Genehmigungen“, im MCP-Server das Werkzeug permits_for_area (ein Job; project_status liefert den Text als permits_md) und permits für start_pipeline und open_area_selector. project_status nennt jetzt bei jedem Job die geschriebenen Dateien (files). Karte, freemapper.toml und ATTRIBUTION.txt bleiben unverändert. Beschrieben im Handbuch, Kapitel 12; die folgenden Kapitel rücken um eins weiter.
  • Waldkarten (ADR 0116, Nachtrag): Weicht die Äquidistanz vom Standard der Kartenart ab, etwa 2,5 m im flachen Wald, schreibt derive sie als [contours] interval_m in die freemapper.toml. freemapper-print liest sie dort über den Vertrag der Suite (freemapper-core 0.25.0) und schlägt nicht mehr 5 m vor. Projekte mit der Standard-Äquidistanz behalten ihre Datei unverändert.
  • Waldkarten (ADR 0116): --kind forest legt eine Karte nach ISOM 2017-2 an, im Maßstab 1:15 000 (Standard), 1:10 000 oder 1:7500 mit Symbolen auf 100, 150 oder 200 %. Gedacht ist sie für ein schnelles Training in kleinen Waldstücken. Die Wege kommen aus OSM und stehen gleich in der Karte, sortiert nach den Wegklassen 502 bis 507; Treppen werden 532. Gehwege an Straßen, Überwege, Zufahrten und Gassen auf Parkplätzen fehlen. Wald bleibt weißes Papier: Wo OSM oder ALKIS Wald angeben, zeichnet freemapper kein offenes Gelände, auch nicht über ALKIS-Parks. Grün gibt es nur aus OSM-Gebüsch, als Kandidat. Die Höhenlinien liegen alle 5 m, in flachem Gelände alle 2,5 m; contour_interval_m in der freemapper.toml legt den Abstand fest. Der Symbolsatz ist ISOM 2017-2 aus OpenOrienteering Mapper mit den Farben der IOF Rev. 4. Erprobt an der Dammheide und der Mittelheide in Berlin. Kartenart, Maßstäbe und Fehlermeldungen stehen auch in der Hilfe, im MCP-Server und auf der Gebietsseite.

Geändert

  • freemapper-core 0.25.0: Der Vertrag der Suite kennt die Maßstäbe der Waldkarte (0.23.0) und die Äquidistanz in [contours] interval_m (0.25.0), und freemapper schreibt beide.
  • Intern: Das Platzieren der Objekte nach den Inhaltseinstellungen liegt jetzt im neuen Modul „Kartenaufbau“ (build/assembly.rs, ADR 0115) statt zwischen den Dateizugriffen des Projekts. Es liest keine Datei und lässt sich mit wenigen Objekten im Speicher testen. Erster von drei Schritten; die Karten bleiben Byte für Byte gleich.
  • Intern: Auch die Auflösung der Doppel zwischen den Quellen (Register vor ALKIS vor Befahrung vor OSM) und die Punktgeneralisierung liegen jetzt im Kartenaufbau (assembly::resolve, ADR 0115, Schritt 2). Das Projekt zeichnet die Quellen und übergibt sie; die Reihenfolge der Schritte steht an einer Stelle.
  • Intern: Der Kartenaufbau baut jetzt die ganze Karte aus den gelesenen Daten (assembly::build, ADR 0115, Schritt 3). Das Projekt liest den Ordner an einer Stelle und macht aus dem Ergebnis die Dokumente; Höhenlinien, Geländeformen und Vegetation werden in eigenen Modulen unter build/ gezeichnet. Eine Karte lässt sich damit im Test ohne Projektordner bauen.
  • Intern: Welche Berliner Ebenen Register sind, steht nur noch an einer Stelle, im Berliner Adapter. Die Rangfolge bei doppelten Objekten, die Zeichenregeln für Bäume und die Quellenangabe lesen von dort statt aus eigenen Listen. An Karten und Quellenangaben ändert sich nichts (Nachtrag in ADR 0114).
  • Intern: Ein Baumkataster wird mit den Host-Regeln des Adapters abgefragt, der es mitbringt, und gilt für dessen Gebiet. Bisher suchte der Kern den Adapter über die Kennung, die in der Zeile des Katasters steht. Hätte die Zeile einen anderen Adapter der Registry genannt, wäre das Kataster für dessen Gebiet und unter dessen Host-Regeln abgefragt worden; mit einer unbekannten Kennung fiel es weg. Kein heutiger Adapter war betroffen: Ein Manifest trägt immer die eigene Kennung ein (Nachtrag in ADR 0114).

Behoben

  • Waldkarten (ADR 0116): Undurchdringliche Vegetation ist ISOM 2017-2 410 statt des Symbols 411 aus der ersten Ausgabe. Die Wegklassen 502 bis 505 gehören zur Inhaltsgruppe paths, also verschiebt --content-set paths=candidates alle Wege. Treppen mit incline=down laufen bergauf wie auf Sprintkarten. Eine Waldkarte lädt die Flächen und Bordsteine der Berliner Straßenbefahrung und die städtischen Baumkataster nicht mehr, weil sie sie nicht zeichnet. Die Prüfung, ob ein Gebiet flach ist, liest das Geländemodell nur alle 5 m. Am Kartenrand steht die Äquidistanz, mit der die Höhenlinien gerechnet wurden, auch wenn contour_interval_m seitdem geändert wurde.
  • Hamburg, Saarland, Sachsen-Anhalt und Adapter aus Ordnern: Scheitert der Abruf des Oberflächenmodells, bleibt ein früher gespeichertes Modell nur, wenn es das Kartengebiet deckt, und die Warnung nennt den Tag, von dem es stammt. Bisher blieb auch das Modell eines anderen Gebiets mit seinem Eintrag im Projekt liegen, und die Warnung sprach in jedem Fall von einer fehlenden nDOM-Vorlage, auch wenn derive sie aus dem alten Modell noch erzeugte. Die übrigen Bundesländer verhielten sich schon so.

[0.16.0] - 2026-11-13

Hinzugefügt

  • Vegetation aus Laserpunktwolken auch im Saarland (ADR 0105): Das LVGL bietet die Punktwolke von 2025 in sechs großen ZIP64-Archiven nach Landkreisen an, auf derselben Freigabe wie die Höhenmodelle. freemapper liest daraus per Byte-Bereich nur die Kacheln des Kartengebiets, etwa 40 MB je Quadratkilometer, und prüft sie gegen die CRC des Archivs. Die Befliegung war im Februar ohne Laub, und die Punktwolke ist auf einen Punkt je 0,5 m ausgedünnt; die Kronen erkennt freemapper trotzdem. Geprüft an der Altstadt von Saarlouis. Sachsen bekommt vorerst keine Punktwolken: Das GeoSN hat sie im November 2026 aus dem Downloadbereich genommen.
  • Vegetation aus Laserpunktwolken auch in Rheinland-Pfalz (ADR 0105): fetch lädt die LAZ-Kacheln des LVermGeo RP, meist 110 bis 500 MB je Quadratkilometer, und behält eine Kachel nur, wenn Größe und SHA-256 zur Metalink-Datei des Landes passen. Das Aufnahmedatum kommt aus den Metadaten der Kachel; ist sie schon im Zwischenspeicher, fragt freemapper nur diese ab. Geprüft am Mainzer Stadtpark.
  • Vegetation aus Laserpunktwolken auch in Berlin (ADR 0105): Das Geoportal Berlin bietet die Punktwolke nur in neun großen ZIP64-Archiven an. freemapper liest daraus per Byte-Bereich nur die Kacheln des Kartengebiets, etwa 240 MB je Quadratkilometer, prüft sie gegen die CRC des Archivs und legt sie als LAZ (etwa 100 MB) in den Zwischenspeicher. Die Befliegung von 2021 war ohne Laub, deshalb erkennt freemapper dort dichtes Gebüsch schlechter. Geprüft am Viktoriapark.

Geändert

  • Die Bilder der Gebietsseite im Handbuch sind neu aufgenommen (Gebietsauswahl, Optionen, Fortschritt), dazu ein Bild des Abschnitts „Was auf die Karte kommt“ mit allen Gruppen. Der Hinweis zum Profil „Ausgewogen“ auf der Seite nennt jetzt, was das Profil tut: Höhenlinien und die Sperrgebiete an Bahngleisen kommen auf die Karte, Treppen, Böschungen, Denkmäler und Durchgänge auch aus OpenStreetMap.
  • Die Beispiele Sanssouci, Viktoriapark, Monschau, Cochem und Saarlouis sind mit --content-set vegetation=candidates neu gebaut: Ihre Trainingskarten zeigen jetzt die Vegetation aus den Punktwolken. Die Kartenobjekte der ersten vier sind unverändert; Saarlouis hat durch die Korrektur der Nutzungsarten 109 statt 32 Straßenflächen und die Saar aus ALKIS. Bautzen bleibt ohne Vegetation, weil Sachsen zurzeit keine Punktwolken anbietet.
  • Die Grenzen von Niedersachsen und Schleswig-Holstein überlappen sich in der Elbmündung nicht mehr. Die Kataster beider Bundesländer führen dieselben 89 km² Wasser vor Cuxhaven; freemapper teilt die Fläche jetzt an der Linie gleichen Abstands zu den beiden Anspruchslinien (ADR 0113). Für Karten ändert sich nichts, dort ist offenes Wasser.
  • Die Adapter-Anleitung sagt, was ein Code-Adapter über Kataster und Raster hinaus mitbringen kann: Sätze von Zusatzebenen und Rastervorlagen. ADR 0114 hält fest, wie die Berliner Register und die K5 aus dem Kern in den Adapter gekommen sind und was dabei offen bleibt.
  • Intern: Der Kern fragt nirgends mehr „ist das Berlin?“. Die Warnung zu fehlenden Gebäuden, die Liste der Vorlagen und alle Abrufe für einen Adapter gehen über die Registry; der K5-Dienst liegt beim Berliner Adapter, der Leser für gespeicherte Ebenen in freemapper-sources. Ein Test hält fest, dass der Kern außerhalb der Zeichenregeln kein Bundesland beim Namen nennt und nur an den dort aufgelisteten Stellen in die Adapter-Crate greift. An Karten, Meldungen und Dateien ändert sich nichts.
  • Intern: Ein Adapter kann Rastervorlagen melden, die er mit eigenem Code abruft (RegionAdapter::templates). Die Berliner Karte 1:5000 (K5) ist die erste: Der Kern fragt den Adapter aus der Registry und nimmt Datum, Meldungen und den Posten der Schätzung von dort. An der Vorlage, den Meldungen und der Schätzung ändert sich nichts.
  • Intern: Ein Adapter kann Sätze von Zusatzebenen melden, die er mit eigenem Code abruft (RegionAdapter::extras). Die Berliner Register und Befahrungsdaten sind der erste solche Satz: Der Kern fragt den Adapter aus der Registry, statt das Berlin-Modul direkt aufzurufen, und nimmt auch den Posten der Schätzung von dort. An Karten, Meldungen, Dateien und Schätzungen ändert sich nichts; die eine Ausnahme steht unter „Behoben“.
  • Intern: Die Zusatzebenen eines Projekts (Berliner Register, volles ALKIS, Baumkataster) werden an einer Stelle abgerufen, gespeichert, entfernt und gelesen statt in drei gleichen Kopien. Erster Schritt dazu, dass der Kern kein Bundesland mehr beim Namen nennt; an Karten, Meldungen und Dateien ändert sich nichts.
  • Intern: Die Module in freemapper::sources, die nur noch weiterreichten, was seit dem Adapter-Umbau in freemapper-adapters-de und freemapper-sources liegt, sind entfernt, ebenso der nicht mehr genutzte Rasterabruf für Sachsen-Anhalt im Programmcode. Das Bundesland ruft weiter über die Dienste ab, die sein Manifest nennt; an Karten und Abrufen ändert sich nichts.

Behoben

  • Vegetation aus Punktwolken endet an Sperrflächen (520). Vorher stanzten die Wald-Kandidaten weiße Löcher in die olivgrünen Privatgärten und Höfe der Kandidatenkarte und des Trainings-PDFs, weil das Weiß des Waldes in der Farbreihenfolge über dem Olivgrün liegt. In der Karte gilt das für die Sperrflächen der Karte, in den Kandidaten für die aus Karte und Kandidaten (ADR 0105).
  • freemapper adapters check --live für ein Gebiet nahe Berlin ruft die Berliner Register und die K5-Vorlage nicht mehr ab, wenn ein anderer Adapter geprüft wird. Bisher gingen diese Anfragen dabei ohne die Host-Regeln des Berliner Adapters hinaus, und der nächste Befehl verwarf die Einträge wieder.
  • Saarland: Der WFS des LVGL schreibt die Nutzungsarten Strassenverkehr und Fliessgewässer. freemapper kannte nur Straßenverkehr und Fließgewässer, deshalb fehlten auf Saarländer Karten die Straßenflächen aus ALKIS, die Flüsse aus ALKIS und alles, was an ihnen hängt; die Vegetation aus der Punktwolke legte offenes Gelände auf die Straßen. Jede Nutzungsart aus einem WFS wird jetzt in die LGB-Schreibweise gebracht, wie schon bei Hamburg; in Rheinland-Pfalz heißt Unland, Vegetationslose Fläche dadurch wie überall Unland/Vegetationslose Fläche.

[0.15.0] - 2026-11-12

Hinzugefügt

  • Neue Vorlage lokales Relief (templates/relief.png, Ebene relief): das Geländemodell minus sein geglättetes Mittel. Böschungen, Hügel, Mulden und Gräben treten hell oder dunkel hervor, das allgemeine Gefälle verschwindet. In der Karte ist sie ausgeblendet und lässt sich in OOM einschalten.
  • Neue Kandidaten aus dem Geländemodell (ADR 0104): kleine Kuppen (109), längliche Kuppen (110), kleine Senken (111), Erdböschungen (104) und, ab 3 m Höhe, nicht begehbare Felswände (201). Sie zeigen, was die Höhenlinien von Sprint- und Schulhofkarten nicht zeigen: Spielhügel, Rodelberge, Mulden, Terrassenkanten. Eine Kuppe muss auf Sprintkarten mindestens 1 m hoch sein, auf Schulhofkarten 0,5 m, und schmal genug, dass die Höhenlinien sie nicht schon zeigen. Böschungen zeigen mit ihren Strichen bergab. An Gebäuden, im Wasser und neben schon gezeichneten Mauern, Zäunen und Böschungen entstehen keine. Alle sind Kandidaten und müssen vor Ort geprüft werden (alle gehören zur neuen Gruppe landforms, auch Böschungen und Felswände; mit full oder --content-set landforms=map kommen sie auf die Karte, slopes=map holt weiter nur die Böschungen aus ALKIS und OSM); schmale Mauern unter einem Meter erkennt das DGM1 oft nicht. Kuppen und Senken entstehen nicht auf Wohn-, Misch-, Gewerbe- und Verkehrsflächen und in Kleingärten, Senken nicht näher als 8 m an Gebäuden; Felswände entlang von Straßen und Gebäuden werden als nicht passierbare Mauer (515) angeboten, gebogene Geländestufen in Stücke geteilt, die ihnen folgen. derive schreibt sie nach data/landforms.geojson. Die Ideen stammen aus karttapullautin und omapmaker; der Code ist neu geschrieben.
  • Vegetation aus Laserpunktwolken (ADR 0105), in Brandenburg und Nordrhein-Westfalen: offenes Gelände (401), gut belaufbarer Wald (405), die Grünabstufungen 406, 408 und 410 und Unterwuchs (407, 409) als Kandidaten. Die neue Inhaltsgruppe vegetation ist in jedem Profil aus; --content-set vegetation=candidates (oder =map, oder die Gebietsseite) lässt fetch die klassifizierten Punktwolken der LGB oder von Geobasis NRW für das Kartengebiet in den gemeinsamen Zwischenspeicher laden, etwa 160 MB je Quadratkilometer-Kachel in Brandenburg und meist 50 bis 165 MB in Nordrhein-Westfalen (jede NRW-Datei wird gegen die Größe aus dem Index geprüft), die Download-Schätzung und Plattenprüfung mitzählen. Bei knappem Platz entfallen sie als Erstes, und ein fehlgeschlagener Download behält die Kacheln aus dem Zwischenspeicher. derive schreibt data/vegetation.geojson und lässt dabei synthetische Füllpunkte, Kellerpunkte und Brücken weg, ebenso die Laserpunkte an Gebäuden und die Zellen, deren hohe Echos überwiegend Einzelechos sind (Dächer, auch solche, die das Kataster nicht mehr kennt); der Export schneidet die Flächen an Gebäuden, Wasser und gepflasterten Flächen aus und zeigt dort, wo die Karte schon einen Park oder Wald mit demselben Symbol hat, nur den abweichenden Teil. Geprüft an Sanssouci und am Kölner Volksgarten.

Geändert

  • Intern: Die Tests laufen schneller. Die Abhängigkeiten werden auch im Entwicklungs-Build voll optimiert (einmal gebaut, danach aus dem Cache), die eigenen Crates bleiben unoptimiert. In der CI sinkt der Job check von 8 bis 10 auf 5,5 bis 7 Minuten, das Golden-Netz von 2 bis 3 auf 1 bis 2 Minuten je System; die Ausgaben des Golden-Netzes sind byte-gleich geblieben. Die CI schreibt nur noch Zeilennummern als Debug-Information, und ein neuer Push auf einen Pull Request bricht dessen älteren Lauf ab. Ein Pull Request läuft nur noch auf Linux; mit dem Label all-systems und bei jedem Push auf main laufen alle drei Systeme. Der erste Debug-Build nach dem Update übersetzt die Abhängigkeiten einmal neu; der Release-Build ändert sich nicht.
  • Alle zwölf Beispiele sind mit dem Standardprofil balanced neu gebaut. Zehn davon stammten noch aus der Zeit vor den Inhaltsprofilen; jetzt stehen Höhenlinien, Wege, Treppen, Mauern und Bäume in ihren Karten, und Kandidaten bleiben vor allem Sperrflächen, Kontrollstandorte und Böschungen. Die Gegenüberstellung zeigt dasselbe Gebiet, Cochem, in den drei Profilen safe, balanced und full, mit je einem PDF. Die Zahlen in der Beispielübersicht und im Handbuch sind nachgezählt.
  • MCP: Was der Server beim Start an den Adapterordnern der Person auszusetzen hat (ein Ordner wird weggelassen oder lädt nur mit Einschränkung), steht jetzt einmal als Hinweis im ersten Tool-Ergebnis. Bisher stand es nur auf stderr, das weder der Agent noch die Person zu sehen bekommt.
  • MCP: preview_layer zeigt mit der Ebene map das Bild der Kartenobjekte, das der letzte Lauf neben die Karte geschrieben hat (ohne die Kandidaten). Vor dem ersten Lauf nennt die Meldung freemapper export oder run.
  • Zwei Adapter teilen sich Gebiet, wenn ihre gemeinsame Fläche mehr als ein Hundertstel der kleineren Region ausmacht. Bisher wurde je ein Innenpunkt geprüft; ein Adapter, der ein Drittel weit in ein Bundesland hineinreichte, blieb so unbemerkt. adapters list, adapters check und die Warnung zu den Adaptern eines Projekts nutzen das neue Maß. Alle drei nennen die Regionen jetzt mit ihrem Namen statt mit der Kennung; die JSON-Ausgabe von adapters list behält die Kennungen.
  • Die Meldung zu einem Adapter, den das Programm nicht hat, sagt, dass ein neueres freemapper ihn vielleicht mitbringt.
  • Die Meldung zu einer Weiterleitung, der freemapper nicht folgt, beginnt mit der abgelehnten Adresse und nennt danach in Klammern die Adresse, die dorthin weiterleitet. Bisher stand die angefragte Adresse vorn und hieß „diese Adresse“.
  • Das Beispiel Treppenviertel Blankenese ist neu gebaut, mit dem Standardprofil balanced: Höhenlinien, Wege und 110 Treppen aus OpenStreetMap stehen jetzt in der Karte (1780 Kartenobjekte, 755 Kandidaten). Die Gegenüberstellung sagt, welche Beispiele vor den Inhaltsprofilen entstanden sind, und nennt die Messwerte für Blankenese und Saarlouis.
  • Intern: Das Golden-Netz zeichnet nach dem Adapter-Umbau noch vier Bundesländer auf (Brandenburg, Berlin, Sachsen-Anhalt, Hessen), je eines pro Art des Abrufs; die Schichten ohne Aufzeichnung prüfen weiter alle elf Bundesländer, die vor dem Umbau im Programmcode standen (das Saarland hat eigene Tests). Der Fixture-Store der Tests schrumpft von 206 auf 79 MB.

Behoben

  • Kartenvorschau: Ist die Gebietsseite in zwei Tabs offen und ändern beide kurz nacheinander eine Einstellung, zeigt der überholte Tab nicht mehr „Inzwischen wurde eine neuere Vorschau angefordert“. Er fragt erneut an und bekommt das Bild zu seinen Einstellungen.
  • MCP: list_layers führt die K5-Vorlage nur noch bei Projekten auf, deren Gebiet Berlin berührt, oder wenn ihre Datei im Ordner liegt. Bisher stand sie bei jedem Projekt in der Liste und wurde außerhalb Berlins nie fertig.
  • Saarland: Ein Landkreis-Archiv, das sich nicht lesen lässt (umbenannt, oder der Server ist kurz nicht erreichbar), stoppt den Abruf nicht mehr, wenn die Kacheln des Gebiets in anderen Archiven liegen. Fällt ein Archiv aus, gilt sein Verzeichnis vom letzten Lauf; Karten, deren Kacheln schon im Zwischenspeicher liegen, entstehen weiter. Beides meldet eine Warnung mit der Adresse des Archivs. Ein Abbruch, eine nicht erlaubte Adresse oder ein Schreibfehler auf diesem Rechner beenden den Abruf weiterhin sofort.
  • Ein Ordner im Adapterordner, dessen Name mit einem Punkt beginnt (.git), löst nicht mehr bei jedem Befehl eine Warnung aus.
  • Eine Vorabversion des Programms (x.y.z-rc.1) bricht beim Laden der Adapter nicht mehr ab; sie zählt als ihre Release-Version.
  • Eine Schätzung, bei der nichts mehr herunterzuladen ist, nennt 0 MB statt -0.0 (estimate_download des MCP-Servers).
  • Im Release-Archiv führten die Links der READMEs zu den Beispielen, den ADRs und dem Entwurf ins Leere. Sie zeigen jetzt auf das Repository.

[0.14.0] - 2026-11-12

Hinzugefügt

  • Das Saarland ist das zwölfte Bundesland (ADR 0111). Das Luftbild von 2025 kommt aus dem freien Kartendienst des LVGL, Gelände- und Oberflächenmodell des Laserscans von 2025 aus den Landkreis-Archiven seiner Open-Data-Ablage (freemapper liest aus Archiven von bis zu 1,3 GB nur die 1-km-Kacheln des Gebiets), Gebäude und Nutzung aus dem Dienst „ALKIS Vereinfacht“ des Geoportals Saarland. Alles steht unter dl-de/by-2-0; Karten tragen © GeoBasis DE/LVGL-SL (<Jahr>), dl-de/by-2-0, Daten geändert. Das Beispiel ist Altstadt und Festung Saarlouis. Das Saarland ist das erste Bundesland, das als Adapter dazukam: ein Manifest-Ordner und ein Raster-Backend.
  • Regionsadapter aus einem Ordner (ADR 0082, Stufe D; ADR 0107). Ein Bundesland oder Land mit Standarddiensten (WFS oder OGC API Features für ALKIS, WMS und WCS für die Raster) lässt sich ohne Rust ergänzen: ein Ordner mit einer manifest.toml und einer Grenzdatei. freemapper liest solche Ordner aus Ihrem Adapterordner (freemapper/adapters im Konfigurationsordner des Systems oder der Ordner, den FREEMAPPER_ADAPTER_DIR nennt). Ein Ordner mit einem Fehler wird ausgelassen, mit einer Warnung, die Datei, Zeile und Schlüssel nennt. Ein Adapter aus einem Ordner kann keinen eingebauten ersetzen. Das Format beschreibt die Referenz in docs/adapters/; die Manifeste in crates/adapters/de/manifests/ sind Beispiele.
  • freemapper adapters list zeigt jeden Adapter mit Herkunft, Revision, dem Tag der letzten Prüfung und den Hosts, die er anfragt; --json gibt dasselbe als JSON aus. Ein Adapter, der auf dem Gebiet eines anderen liegt, nennt ihn, weil eine Karte dort die Objekte beider bekommt.
  • --adapters-from-project bei init, fetch, derive, export und run lädt auch die Adapter im Ordner adapters des Projektordners. Eine Zeile mit Warnung: nennt jeden mit den Hosts, die er anfragen darf. Die Gebietsseite und der MCP-Server laden sie nie, damit ein weitergegebenes Projekt keine Datenquelle mitbringen kann.
  • freemapper adapters check <Ordner> prüft den Ordner eines Adapters, bevor er benutzt oder weitergegeben wird (ADR 0112): ob er laden würde und was sein Autor wissen sollte (kein Tag der letzten Prüfung, eine eingebaute Kennung, eine Grenze von ungewöhnlicher Größe). Mit --live --bbox minLon,minLat,maxLon,maxLat fragt der Befehl zusätzlich die Dienste für dieses Rechteck an und gibt je Fähigkeit eine Zeile aus, zum Beispiel rasters in Ordnung: Luftbild, Geländemodell, Oberflächenmodell. Exit-Code 0 heißt bestanden, 1 Befunde, 2 die Prüfung konnte nicht laufen; --json gibt das Ergebnis als JSON aus.
  • freemapper adapters allow-host <Adapter> <Host> gibt einem eingebauten Bundesland einen weiteren Host frei, für den Tag, an dem ein Amt einen Dienst auf einen Server umzieht, den der Adapter des Bundeslands noch nicht nennt (ADR 0110). Die Meldung zur abgelehnten Adresse nennt den Host und das genaue Kommando. Der Host steht in allowed-hosts.toml in Ihrem Konfigurationsordner und nirgends sonst: Ein Projektordner, eine Variable oder der MCP-Server können keinen hinzufügen. Er wird geprüft wie ein Host eines Manifests (ein DNS-Name, keine Adresse, kein Port), und freemapper verbindet sich weiterhin nur mit Servern im Internet. adapters list zeigt die freigegebenen Hosts, adapters disallow-host nimmt einen zurück, und sobald ein Release den Host selbst nennt, sagt freemapper das und entfernt den Eintrag.
  • Anleitung für Beitragende in docs/adapters/ (deutsch und englisch): wie man ein Bundesland oder eine Region ergänzt, ein Tutorial, das einen Adapter in sechs Schritten baut und mit einer bestandenen Prüfung gegen echte Dienste endet, und eine Referenz aller Schlüssel und Befundcodes des Manifests. Die Anleitung sagt auch, wann ein Manifest nicht genügt: Höhenmodelle als Archive oder Kacheln brauchen ein Backend in Rust, und das kann ein Ordner nicht mitbringen.
  • FREEMAPPER_ADAPTER_DIR erwartet einen absoluten Pfad. Ein relativer wird mit einer Warnung ignoriert: Er würde den Ordner adapters des Projekts benennen, in dem der Befehl gerade läuft.
  • OSM-Treppen (highway=steps) erscheinen als Treppen-Kandidaten 532.6 bis 532.9 nach Breite, mit incline=down umgedreht, ohne gesperrte, überdachte, unterirdische und Innen-Treppen (ADR 0109). Bei balanced kommen sie auf die Karte (Gruppe stairs). Eine amtliche Treppe gleichen Symbols gewinnt. Vorher kamen Treppen nur aus den Berliner Registern und dem vollen ALKIS, in Hamburg fehlten sie ganz.
  • Eine Vorschau der Karte (ADR 0108). Jeder Export, der eine Karte schreibt, schreibt neben die .omap auch <name>-preview.webp: die Kartenobjekte so, wie das Karten-PDF sie zeichnet, ohne Kandidaten und ohne Blattrand. Die Gebietsseite zeigt sie in einem neuen Abschnitt „Kartenvorschau“ unter dem Laufstatus. Ändern Sie dort das Inhaltsprofil oder eine Gruppe, zeigt sie die Wirkung ohne Lauf und ohne Speichern: nach etwa einer Sekunde, nach einer ersten Berechnung, die einige Sekunden dauert. Eine Zeile sagt, ob das Bild die zuletzt erzeugte Karte oder die Einstellungen auf der Seite zeigt; nach einer Änderung von Gebiet, Kartenart oder Maßstab und solange ein gezeichnetes Gebiet nicht gespeichert ist, sagt sie, dass ein Lauf mit „Vorhandene Karte ersetzen“ nötig ist. Ein späteres Laden macht das Bild nicht veraltet. Lässt sich die Vorschau nicht schreiben, sagt der Lauf das in einer Warnung und schreibt Karte, OCAD-Dateien und PDFs trotzdem; die Dateiliste eines Laufs nennt die Vorschau. Die .omap, die Kandidaten-Karte, die OCAD-Dateien und die PDFs ändern sich nicht.

Geändert

  • Anfragen gehen nur noch an Server im Internet (ADR 0106). freemapper verbindet sich nicht mehr mit einer Adresse dieses Rechners oder des lokalen Netzes, gleich ob eine URL sie nennt, ein Hostname dorthin auflöst oder ein Server dorthin weiterleitet. Das gilt für die Downloads, die Kartenkacheln der Gebietsseite und das Selbst-Update. Ein Proxy aus der Umgebung (HTTPS_PROXY) funktioniert weiter, auch ein lokaler. Eine Anfrage, die nicht gesendet wird, nennt den Grund in der Sprache des Laufs.
  • Die Anfragen für ein Bundesland bleiben auf den Hosts, die sein Manifest erklärt, Weiterleitungen eingeschlossen (höchstens drei): ALKIS, die Raster, das volle ALKIS, die Baumkataster sowie die Register und die K5 Berlins. Leitet ein Server freemapper zu einem Host weiter, den niemand erklärt hat, geht dorthin keine Anfrage; dasselbe gilt für eine vierte Weiterleitung in Folge, eine Weiterleitung auf http und eine Adresse in einer Antwort auf einem solchen Host. Die Meldung beginnt mit der abgelehnten Adresse, nennt das Bundesland und sagt, was zu tun ist. Ein Adapter aus einem Ordner ist genauso an seine eigenen Hosts gebunden und fügt einem eingebauten Bundesland keinen hinzu. Vor der Umstellung wurde jedes Bundesland an zwei Orten unter dieser Regel live abgerufen.
  • Intern: Die elf Bundesländer sind Manifeste plus Code (ADR 0107). Jedes hat einen Ordner in crates/adapters/de/manifests/ mit seinem Manifest und seiner Grenzdatei; Sachsen-Anhalt braucht keinen Raster-Code mehr. Das Golden-Netz bestätigt dieselben Anfragen und byte-gleiche Dateien.
  • Nennt eine Projektdatei einen Adapter, den dieses freemapper nicht hat, sagt die Meldung, woher Adapter kommen.
  • Intern: Die Bundesländer sind jetzt Regionsadapter (ADR 0082, Stufen B und C; ADR 0102). Ein Bundesland liefert über ein gemeinsames Trait seine Grenze, seine OSM-Auszüge, seinen ALKIS-Dienst, seine Rasterquellen, seine Quellenzeilen und seine Download-Schätzung; die Engine fragt die Registry und nennt selbst kein Bundesland mehr. Die Aufzählungen Region und Provider gibt es nicht mehr. Der Code der elf Bundesländer liegt in der neuen Crate freemapper-adapters-de, die allgemeinen Dienst-Leser in freemapper-sources, die gemeinsamen Typen in freemapper-adapter-api. Für Nutzerinnen und Nutzer ändert sich nichts: Das Golden-Netz bestätigt für alle elf Bundesländer dieselben Anfragen und byte-gleiche Dateien, und freemapper.toml wird gelesen und geschrieben wie zuvor.
  • Die Gebietsseite, ihre Content-Security-Policy, die Meldung für ein Gebiet außerhalb der unterstützten Bundesländer und die MCP-Anweisungen nehmen die Liste der Bundesländer aus der Registry (ADR 0103). Die Luftbild-Ebenen der Seite kommen über den neuen Endpunkt api/adapters; sie heißen wie bisher. Fällt der Endpunkt aus, startet die Seite trotzdem, zeigt nur OpenStreetMap und nennt den Grund.

Behoben

  • Nennt eine Projektdatei einen Anbieter oder ein Bundesland, das dieses freemapper nicht kennt, sagt die Fehlermeldung das und nennt die Kennung. Vorher stand dort eine Parser-Meldung über einen unbekannten Wert.
  • Tests: save_creates_the_project scheiterte gelegentlich unter Windows und Linux. Der Server antwortet auf einen POST an eine GET-Route mit 405, bevor er den Body liest, und schließt die Verbindung, wenn der Body erst danach ankommt. Der Test-Client benutzte diese Verbindung weiter. Die Prüfung schickt den Request jetzt roh in einem Stück. Das Programm selbst ändert sich nicht.
  • Tests: Unter Linux scheiterten die Update-Tests gelegentlich mit „Text file busy“. Die Kopie des Programms, die sie starten, schrieb der Testprozess selbst, und ein gleichzeitig gestarteter Kindprozess eines anderen Tests erbte die offene Datei. Jetzt schreibt cp die Kopie in einem eigenen Prozess. Das Programm selbst ändert sich nicht.
  • Die Gebietsseite zeigt die Hinweise zum Speicherplatz in ihrer eigenen Sprache: was aus Platzmangel wegfällt, warum ein Lauf nicht startet und dass sich der freie Platz nicht lesen lässt. Vorher kamen sie in der Sprache des Programms, auf einer deutschen Seite also oft auf Englisch. Dasselbe gilt für die Ablehnung eines ungültigen pdf_sources.

[0.13.0] - 2026-11-12

Hinzugefügt

  • Die Gebietsseite bietet das Inhaltsprofil an (ADR 0101): ein eingeklappter Abschnitt „Was auf die Karte kommt“ im Block „Karte erzeugen“ mit den drei Profilen und einer Wahl je Gruppe („Wie im Profil“, Karte, Kandidat, Aus). Die Wahl wird mit dem Gebiet gespeichert, in einem Schreibvorgang unter der Revision von freemapper.toml; ein Wechsel des Profils behält die Ausnahmen.
  • freemapper find "<Name>" listet die OpenStreetMap-Orte zu einem Namen auf, höchstens fünf, die mit Fläche zuerst, jeden mit seiner Kennung, und nennt am Ende den Befehl init --osm für die erste Fläche. Bei einem Treffer ohne Fläche steht, dass er kein Kartengebiet sein kann. --json gibt dieselben Felder aus wie das MCP-Werkzeug find_place. Findet die Suche nichts, endet der Befehl mit Exit-Code 1; mit --json gibt er [] aus und endet mit 0, wie find_place antwortet. Steuerzeichen und Bidi-Steuerzeichen aus OSM-Namen erreichen das Terminal nicht. Es ist dieselbe Suche wie bei find_place und init --place, und init --place bleibt, wie es ist. Wie init prüft auch find einmal am Tag auf eine neue Version. AGENTS.md sagt Agenten an der Kommandozeile jetzt, der Person zuerst die Treffer zu zeigen und dann init --osm zu nehmen.

Geändert

  • Inhaltsprofile (ADR 0100): Was direkt auf die Karte kommt und was Kandidat bleibt, ist einstellbar, safe (bisheriger Stand), balanced (neue Voreinstellung: Straßen mit Bordsteinen und Grünstreifen und Treppen aus ALKIS, den Registern und der Straßenbefahrung sowie Mauern, Zäune, Hecken, Wasser, Bäume, Baumgruppen, Wege, Gleise, Böschungen, Durchgänge, Denkmäler, Türme und oberirdische Rohrleitungen auch aus OSM sowie die Höhenlinien und die Sperrgebiete entlang von Bahngleisen kommen auf die Karte) und full (alles). Einzelne Gruppen lassen sich abweichend einstellen. init, export und run nehmen --content und --content-set <gruppe>=map|candidates|off, MCP content und content_set; gespeichert wird die Wahl in freemapper.toml ([content]). Höhenlinien enden jetzt auch auf der Karte an Wegen.
  • Befestigte Flächen (501.5) bekommen ihren schwarzen Rand 501.1, wie es die Norm (ISSprOM §4.5) vorsieht (ADR 0099). Kein Rand entsteht dort, wo schon eine Kante gezeichnet ist: an Gebäudeumrissen, Gewässern, vorhandenen 501.1-Linien (Bordsteine der Straßenbefahrung) und am Kartenrand. Befestigte OSM-Wege der Klasse service (Zufahrten, Hofwege) kommen als 501.6 bis 501.9 dazu, ohne Breite als 501.8.
  • OSM-Wege mit befestigter Oberfläche (Asphalt, Pflaster, Beton, Kleinpflaster …) kommen als Linien 501.6 bis 501.9 mit schwarzem Rand in die Karte, wie Kieswege (ADR 0098). Vorher fehlten sie, wo die ALKIS- und Berliner Flächen sie nicht enthalten, etwa Parkwege im Biesdorfer Park; wo eine Pflasterfläche liegt, schneidet build/firm_paths.rs sie weg. Straßen und Gehwege bleiben ohne Regel.
  • Alle Kernbibliotheken sind auf freemapper-core v0.21.1 festgelegt. Die Schaltflächen der Gebietsseite nehmen ihre Textfarbe aus dem Suite-Token --on-accent, die Hauptschaltflächen ihre Farben aus der Suite-Klasse button.primary. Sie sehen aus wie bisher.
  • Punktsymbole (Bäume, Laternen und andere) halten den Abstand der Norm zu Mauern und Zäunen: Was näher als 0,15 mm zwischen den Außenkanten liegt, wird von der Linie weg auf diesen Abstand verschoben und hält dabei auch den Abstand zu anderen Punktsymbolen (die nächste freie Stelle am Zaun entlang oder weiter weg). Stößt ein verschobener Punkt auf ein gleiches Symbol, entfällt er stattdessen, und das andere nennt ihn in freemapper:generalized. Auf der Strichseite eines Zauns zählen die Striche mit. Verschobene Punkte tragen freemapper:moved.
  • Höhenlinien und Nordlinien enden an Wegen (befestigten Flächen und Pfaden), statt sie zu überdecken; Reststücke unter 1 mm auf dem Papier entfallen. Die Norm erlaubt es: Nordlinien dürfen unterbrochen werden, wo sie kleine Objekte wie Wegenden verdecken (ISSprOM 2019-2 §4.6). ADR 0097.
  • Die Striche von Zäunen und Böschungen zeigen jetzt in die richtige Richtung (build/ticks.rs). Ein Zaun wendet sie dem olivgrünen Gebiet (520) neben ihm zu; ein geschlossener Zaun, etwa ein Rechteck, hat sie innen, ein Zaun an einer Parkfläche (401) auf der Parkseite. Die Fallstriche von Böschungen (104, 104.1), unpassierbaren Felswänden (201) und Stützmauern (513.2) zeigen bergab, nach dem Geländemodell; fehlt es oder ist das Gelände flach, übernimmt eine Böschung die Richtung der bereits entschiedenen Böschung neben ihr, sodass benachbarte Böschungen nicht mehr gegeneinander gerichtet sind. Vorher behielten die Linien die Richtung ihrer Quelle.
  • Die Dokumente eines Projekts sowie Startprojekt, OCAD- und PDF-Export liegen jetzt in einem eigenen Modul project/export.rs statt in project.rs. Die öffentlichen Pfade und die Ausgabe bleiben gleich; das Golden-Netz (G3, G4 für alle Bundesländer, G5) bestätigt das byte-genau.
  • Die Gebietsseite nutzt den gemeinsamen Seitenrahmen der Suite aus freemapper-core v0.21.0 (ADR 0096, core ADR 0030), den freemapper-courseplan und freemapper-print ebenfalls übernehmen. Sie hat jetzt einen dunklen Modus, der der Systemeinstellung folgt; die Karte selbst bleibt hell. Zwei offene Fenster desselben Projekts, oder die Seite und ein Lauf im Terminal, können freemapper.toml nicht mehr unbemerkt gegenseitig überschreiben: Hat sich die Datei seit dem Laden geändert, speichert die Seite nichts, sagt es in einem Hinweisband und liest den gespeicherten Stand neu; erst ein zweites „Speichern“ ersetzt ihn, auch „Karte erzeugen“ speichert bis dahin nicht von selbst. Die Texte der Seite stehen jetzt im Katalog des Programms (page-*), Wort für Wort wie bisher; die Sprache wählt der Server wie zuvor (--lang, dann die Umgebung, dann der Browser, dann Englisch), beim Browser jetzt den deutschen oder englischen Eintrag von Accept-Language mit dem höchsten Gewicht statt nur der ersten Browsersprache. Zahlen in den Texten schreibt die Seite nach der Sprache, deutsch also „1.234“. Alle Kernbibliotheken sind auf v0.21.0 festgelegt. Wer api/save per Skript für ein bestehendes Projekt aufruft, schickt die revision aus api/project im Kopf X-Freemapper-Revision mit.
  • Die Auswahlseite meldet jetzt auch, wenn mit dem neuen Gebiet nur der Datenanbieter wechselt (gleiche UTM-Zone, anderes Bundesland): Sie zeigte die schlichte Meldung „Gespeichert“, obwohl freemapper die geholten Daten verworfen hatte. set_map_area nennt den Grund (zone_changed, provider_changed), und die Antwort von api/save enthält provider_changed.
  • Die Download-Schätzung als JSON (estimate_json) liegt jetzt in einem eigenen Modul der Kommandozeilen-Crate statt im Modul der Auswahlseite. Der MCP-Server und der Lauf aus dem Browser hängen dafür nicht mehr vom Web-Modul ab. Die Ausgabe bleibt gleich.
  • Die Projektdatei und die Karte hängen nicht mehr von der Mathematikbibliothek des Systems ab: freemapper.toml speichert die Rahmen von Orthofoto, Gelände- und Oberflächenmodell auf den Millimeter gerundet und das OSM-Lesegebiet auf 0,00000001°, und der Referenzpunkt der Karte steht auf den Millimeter gerundet in der .omap. Vorher unterschieden sich diese Zahlen zwischen Linux, macOS und Windows in der letzten Stelle. Vorhandene Projekte bleiben gültig; ein gespeicherter Rahmen deckt das Gebiet auch dann, wenn er einen halben Millimeter kürzer ist.
  • Die Bibliothek fragt Datum und Dateialter an einer Stelle ab (freemapper::clock). Für Nutzer ändert sich ein Randfall in Rheinland-Pfalz: Eine behaltene Kachelliste oder 404-Notiz, deren Dateidatum in der Zukunft liegt, gilt jetzt als frisch statt als veraltet.
  • Intern: Ein Golden-Netz sichert den Umbau der Bundesland-Anbindung auf Regionsadapter ab (ADR 0082, Stufe A). Fünf Schichten halten fest, was v0.12.0 ausgibt: die Fakten je Bundesland, die Zuordnung von 211 Gebieten an Grenzen, die Anfragen eines Abrufs je Bundesland, die Prüfsummen aller Dateien eines Laufs je Bundesland und das Format der Projektdatei. Die aufgezeichneten Dienstantworten liegen als Prerelease golden-adapters-1 außerhalb des Repositorys (206 MB); scripts/golden.sh test holt sie und lässt alle Schichten laufen. Ein CI-Wächter verlangt bei jeder Änderung an den Golden-Dateien den Trailer Golden-Bless: und lehnt sie in refactor(-Commits ab. Einzelheiten in tests/golden/adapters/README.md.

Behoben

  • Fehlt der neuesten Version das Aktualisierungsmanifest freemapper-update.json, sagen freemapper update und die MCP-Werkzeuge check_update und install_update jetzt, dass sich diese Version nicht selbst installieren kann, und verlinken ihre Release-Seite. Vorher stand dort ein rohes „download failed: … HTTP 404“. Mit --version sagt die Meldung, dass es die Version vielleicht gar nicht gibt. Die tägliche Prüfung schweigt in diesem Fall wie bisher.
  • Die tägliche Prüfung nach init, select, fetch und run meldet jetzt eine Version, deren Signatur nicht passt. Sie schreibt eine Warnzeile auf stderr nach der Ausgabe des Befehls, höchstens einmal am Tag, und der Exit-Code bleibt gleich. Vorher meldete sie nichts. Der MCP-Server gibt dieselbe Nachricht einmal als Hinweis für die Nutzerin oder den Nutzer.
  • Der Server der Gebietsseite lehnt jetzt in der Sprache der Seite ab, wie ihre Texte. Das gilt für das Speichern während eines Laufs, einen von einem anderen Lauf belegten Ordner, ein Gebiet oder eine Kartenart, die er nicht annimmt, und die Antworten auf Lauf, Status, Abbrechen und Ordner öffnen. Vorher kamen sie in der Sprache des Programms, und die Absage während eines Laufs war immer englisch.

[0.12.0] - 2026-11-11

Hinzugefügt

  • Selbstaktualisierung (ADR 0094): freemapper update installiert nach einer Rückfrage die neueste Version über das laufende Programm, am selben Pfad, sodass die Anmeldung beim KI-Assistenten gültig bleibt. --check prüft nur und endet mit Exit-Code 10, wenn es eine neuere Version gibt, sonst mit 0. --yes installiert ohne Rückfrage, --version <x.y.z> nimmt eine bestimmte Version, auch eine ältere, und --rollback kehrt zur ersetzten Version zurück, die als freemapper.previous liegen bleibt. freemapper installiert nur, was mit dem minisign-Schlüssel des Projekts signiert ist und dessen Prüfsummen stimmen, und startet das neue Programm vor dem Austausch einmal zur Probe. Nach init, select, fetch und run prüft es höchstens einmal am Tag und meldet eine neuere Version in einer Zeile auf stderr nach der Ausgabe des Befehls; ein sehr schneller Befehl kann dadurch bis zu 3 s länger dauern. Der Aktualisierungsmodus (notify, install oder off) steht in settings.toml im Einstellungsordner des Systems, wird mit freemapper update --mode gesetzt und lässt sich mit FREEMAPPER_UPDATE überschreiben. Mit --offline oder gesetztem CI gibt es keine Prüfung. Die Anfrage geht nur an github.com, mit dem festen User-Agent und ohne persönliche Daten. Der MCP-Server hat die Werkzeuge check_update und install_update (nur mit confirm: true) und hängt an das nächste Werkzeugergebnis einen Hinweis für die Nutzerin oder den Nutzer, wenn er eine neuere Version kennt; er installiert nie von sich aus. Die Gebietsseite zeigt dann eine Zeile mit dem Befehl. Ein aus dem Quellcode gebautes freemapper nennt stattdessen git pull und cargo build --release --locked. 0.12.0 ist die erste Version, die sich selbst aktualisieren kann; 0.11.0 und älter werden einmal von Hand ersetzt. Handbuch Kapitel 3 („Aktualisieren“), README und AGENTS.md beschreiben es.
  • Jedes Release enthält zusätzlich die nackten Programmdateien als freemapper-<tag>-<plattform>.gz und das Aktualisierungsmanifest freemapper-update.json mit seiner minisign-Signatur freemapper-update.json.minisig, die freemapper update lädt. Die Archive bleiben, wie sie waren.

Geändert

  • AGENTS.md: Agenten, die Befehle ausführen können, nutzen zuerst die Kommandozeile. Ein freemapper run wartet, bis die Karte fertig ist, während über MCP jeder Statusabruf eine eigene Runde kostet. MCP bleibt der Weg für Assistenten ohne Shell. Neu sind ein eigener Ablauf für die Kommandozeile, der Verweis auf --help, der Hinweis auf zu kurze Zeitlimits und dass init --place den besten Treffer nimmt, ohne die anderen zu nennen.
  • Kartenart und reservierte Wörter kommen aus der gemeinsamen Bibliothek freemapper-contract (ADR 0095, Stufe 4 des Vertragstests). Die Namen schoolyard und sprint, die Maßstäbe einer Kartenart, der Tag freemapper:source mit seinen reservierten Werten, die Namen der Kartenteile und der Dateiname freemapper.toml stehen jetzt einmal in freemapper-core v0.18.0, und freemapper-print und freemapper-courseplan können dieselben Definitionen benutzen. Karten und Projektdateien bleiben Byte für Byte gleich. Alle Kernbibliotheken sind auf v0.18.0 festgelegt. Bibliothek: MapKind hat neu ALL, name, from_name und contract.

Behoben

  • Gebietsseite: Wenn die Programmsprache von der Sprache des Browsers abweicht (etwa --lang en in einem deutschen Browser), blieben drei Texte in der Browsersprache: der Hinweis unter „Selbst zeichnen“, die Namen in der Ebenenauswahl der Karte und der Titel des Browser-Tabs. Alle drei folgen jetzt der Programmsprache.

[0.11.0] - 2026-11-11

Hinzugefügt

  • Programmsprache, dritte Stufe (ADR 0092): Fortschrittszeilen und Warnungen kommen in der Sprache des Programms, auf der Kommandozeile, im MCP-Server und im Protokoll der Gebietsseite. Eine Warnung beginnt deutsch mit Warnung:. Steckt in einer Warnung ein Fehler, etwa ein fehlgeschlagener Download, ist auch er übersetzt. Das gilt auch für die Warnungen zu den Höhenmodellen der einzelnen Bundesländer (Kachellisten, Datumsangaben).
  • Programmsprache, Hilfe (ADR 0092, Stufe 4): --help, freemapper help <Befehl> und die Meldungen zu falschen Aufrufen (unbekannte Option, fehlendes Argument, ungültiger Wert) kommen in der Sprache des Programms, mit deutschen Überschriften („Aufruf:“, „Optionen:“). Die englische Hilfe ist unverändert.
  • Programmsprache, MCP-Server (ADR 0092, Stufe 4): Die Hinweise des Servers, die Beschreibungen der Werkzeuge und ihrer Parameter, die Ergebnisse in Worten und die Zusammenfassung am Ende eines Laufs kommen in der Sprache des Programms; die Gebietsseite zeigt dieselbe Zusammenfassung. Namen von Werkzeugen, Parametern und JSON-Feldern bleiben Englisch. Auch der Hinweis nach init zu 1:5000 auf Sprintkarten ist übersetzt. Mit freemapper mcp --lang en bleibt der Server englisch.
  • Programmsprache, Reste (ADR 0092): Die Meldungen der Ortssuche (etwa „… ist eine Fläche aus 3 getrennten Teilen“), die Meldungen zu Ebenen und Vorschauen und die Warnungen des OCAD-Exports haben jetzt deutsche Texte. Die Meldungstabelle im Handbuch (Kapitel „Sprache“) nennt den deutschen Wortlaut und in Klammern den englischen.
  • AGENTS.md: eine Anleitung für KI-Agenten, wie sie freemapper installieren (Archiv wählen, Prüfsumme, macOS-Quarantäne) und benutzen, über MCP oder die Kommandozeile, mit den Tools, dem Ablauf, den Ergebnisdateien und dem, was der Agent dem Menschen sagen soll. Sie liegt jetzt auch in jedem Release-Archiv. Das Handbuch (Kapitel 3 und 4) und die README sagen, wie man einen Assistenten, der Befehle ausführen kann, freemapper damit selbst einrichten lässt.

Geändert

  • Bibliothek: Die Rückruffunktion für den Fortschritt bekommt statt einer fertigen Zeile (&str) einen Wert Note mit Kennung und Angaben; to_string() gibt die englische Zeile wie bisher, Note::text die Zeile in einer Sprache, Note::is_warning sagt, ob es eine Warnung ist. HeightModel::warnings und OcadOutcome::warnings enthalten solche Werte statt Zeichenketten, ebenso AreaError::Place und ProjectError::Layer; MapKind::scale_note gibt einen zurück. Die Texte liegen in crates/freemapper/i18n/.

[0.10.0] - 2026-11-11

Hinzugefügt

  • Gebietsauswahl: Die Seite erzeugt jetzt die ganze Karte (ADR 0090, Stufe 5; ADR 0009, Nachtrag). Unter den Einstellungen steht der Block „Karte erzeugen“ mit den Optionen OCAD-Startprojekt, Druckfertige PDF, Trainings-PDF, Maßstabsleiste, Quellenangabe (automatisch, vollständig, nur freemapper, mit Hinweis auf die Lizenzen ODbL und dl-de/by-2-0), „Nur Zwischenspeicher“ und, nur bei vorhandener Karte, „Vorhandene Karte ersetzen“ (nie vorgewählt, mit Bestätigungsdialog). Die Seite speichert bei Bedarf zuerst, zeigt „Schritt i von n“, den Protokollauszug und die Warnungen, lässt sich abbrechen, listet am Ende die Dateien mit Größe und öffnet den Projektordner im Dateimanager. Ein Neuladen während des Laufs setzt die Anzeige fort. Während des Laufs sind Gebiet, Einstellungen und „Speichern“ gesperrt. Die Voreinstellungen kommen von freemapper select --ocad --pdf --pdf-candidates --pdf-scale-bar --pdf-sources --offline. Alle Texte gibt es auf Deutsch und Englisch nach der Sprache des Browsers; ein Feld lang der Seite hätte Vorrang, ist aber noch leer. Der Maßstab einer Kartenart kommt jetzt vom Server (allowed_scales), nicht mehr aus einer Kopie in der Seite. Neues Kapitel im Handbuch: „Karte im Browser erzeugen“.
  • Gebietsauswahl: Der lokale Server hat Routen für den Lauf (ADR 0090, Stufe 4), die erst Skripte nutzen können, die Seite folgt in Stufe 5. POST api/run startet den Lauf mit den sieben Optionen (force, offline, ocad, pdf, pdf_candidates, pdf_scale_bar, pdf_sources) und antwortet 202 oder 409, wenn schon ein Lauf oder ein anderer Prozess den Ordner belegt; GET api/status?since=N meldet Schritt, neue Zeilen, Warnungen und Dateien, POST api/cancel bricht ab, POST api/open-folder öffnet den Projektordner im Dateimanager. Art, Maßstab und Titel bleiben wie gespeichert. freemapper select und das MCP-Werkzeug open_area_selector nehmen --offline --ocad --pdf --pdf-candidates --pdf-scale-bar --pdf-sources als Voreinstellung der Seite.
  • Ein Projektordner, ein Lauf (ADR 0090, Stufe 3; schließt die Lücke aus ADR 0009). run, fetch, derive, export, die MCP-Pipeline und das Speichern des Gebiets auf der Seite legen im Ordner die Datei .freemapper-run.lock an. Ein zweiter Prozess im selben Ordner hört mit einer klaren Meldung auf, etwa „Ein anderer freemapper-Lauf verwendet diesen Ordner (seit 14:02, gestartet vom Terminal)“. Der Halter meldet sich alle zehn Sekunden. Nach 60 Sekunden ohne Meldung gilt die Sperre als verwaist, etwa nach einem Absturz, und wird ersetzt; Strg+C räumt sie sofort auf. Die Datei enthält nur Prozessnummer, Startzeit und den Starter. Dazu kann die Engine zwischen Schritten, Kacheln und Anfragen anhalten (ProjectError::Cancelled, run_project_cancellable). Ein abgebrochener Lauf lässt nur ganze Dateien zurück, und der nächste Lauf setzt dort fort. Die Abbruchtaste auf der Seite folgt in Stufe 4.
  • Bahngleise aus OSM (ADR 0093). Auf Sprintkarten stehen railway=rail, light_rail und narrow_gauge jetzt als Kartenobjekte 509.1 (Bahn, mindestens 4 mm lang), Brücken und Nebengleise eingeschlossen. Vorher las freemapper kein Gleis: Auf der Karte vom Biesdorfer Park fehlte die S-Bahn. Tunnel, Durchgänge unter Gebäuden, stillgelegte, abgebaute und geplante Gleise und Überleitungen entfallen. U-Bahn-Gleise ohne Tunnel sind Kandidaten 509.1, auf einer Hochbahnbrücke Kartenobjekte. Straßenbahngleise sind Kandidaten 509.2, denn die Norm zeichnet sie nur, wenn sie der Orientierung dienen. Ein Wald wird an einem Gleis geschnitten. Das Bahngelände aus ALKIS bleibt ein Kandidat 520. Schulhofkarten haben kein Gleis. Bei den Beispielen ändern sich drei: Viktoriapark (3 Gleise), Herrenhausen (2) und Cochem (4); Herrenhausen und Cochem bekommen dabei auch die festen Kieswege der vorigen Korrektur. Die übrigen acht haben kein Gleis im Gebiet; Quedlinburg ließ sich nicht neu bauen (der Luftbild-Dienst von Sachsen-Anhalt antwortete mit einem Fehler). Bestehende Karten bekommen die Gleise mit run --force.
  • Programmsprache, erste Stufe (ADR 0092): --lang de oder --lang en wählt die Sprache der Programmtexte, sonst gilt FREEMAPPER_LANG, dann die Sprache des Systems (LC_ALL, LC_MESSAGES, LANG), sonst Englisch. Deutsch sind bisher die Zeilen, die das Programm selbst am Ende eines Schritts ausgibt („… geschrieben“, „… behalten“, die Hinweise nach run, export und select). Fortschrittszeilen, Warnungen, Fehlermeldungen und --help bleiben vorerst Englisch.
  • Programmsprache, zweite Stufe (ADR 0092): Fehlermeldungen kommen in der Sprache des Programms, im Terminal, vom MCP-Server und auf der Gebietsseite. Mit --lang de heißt es zum Beispiel „Fehler: Es sind noch keine Kacheln geladen; rufen Sie zuerst freemapper fetch auf“. Englisch bleibt, was ein Server, das Betriebssystem oder ein Parser zu einem Fehler sagt, und einige Einzelheiten, die freemapper noch als freien Text führt (etwa bei der Ortssuche). Fortschrittszeilen, Warnungen und --help folgen in den nächsten Stufen.
  • Gebietsauswahl: Die Seite nimmt die Sprache des Programms (ADR 0092), wenn --lang, FREEMAPPER_LANG oder das System (LC_ALL, LC_MESSAGES, LANG) eine nennt. freemapper select --lang en zeigt die Seite also auch in einem deutschen Browser auf Englisch. Nennt nichts eine Sprache, richtet sich die Seite wie bisher nach dem Browser.

Geändert

  • Ein Fehler im Terminal steht jetzt in einer Zeile, error: … oder Fehler: …, die Ursache folgt nach einem Doppelpunkt. Vorher stand dort Error: … und die Ursache darunter unter „Caused by:“. Der Exit-Code bleibt 1.
  • export und run bauen Karte und Kandidatenvorlage nur noch einmal je Befehl statt einmal je Ausgabe (ADR 0091). Mit --ocad --pdf --pdf-candidates waren es bisher vier Durchläufe über alle gespeicherten Ebenen, jetzt ist es bei export einer und bei run zwei. Die geschriebenen Dateien sind Byte für Byte dieselben.
  • Gebietsauswahl: Der lokale Server läuft jetzt auf der gemeinsamen Bibliothek freemapper-web aus freemapper-core v0.11.0 (ADR 0090, Stufe 1; ADR 0009 und 0067, Nachtrag). Die Seite sieht gleich aus. Die Prüfungen sind strenger: Ein POST braucht den Origin der Seite und Content-Type: application/json, sonst antwortet der Server mit 403. Wer die Routen mit einem eigenen Skript aufruft, muss beides senden. Anfragen mit Sec-Fetch-Site: cross-site werden abgelehnt, jede Antwort trägt X-Content-Type-Options: nosniff, und ein Anfragekörper darf höchstens 1 MiB groß sein (ein Umriss mit 5000 Punkten braucht etwa 150 KB). Alle Kernbibliotheken sind jetzt auf dasselbe Tag v0.11.0 festgelegt.
  • Die Vorschaubilder der Beispiele sind jetzt WebP statt JPEG (preview.webp, preview-map.webp). Sie entstehen direkt aus den PDFs und sind kleiner als die JPEGs. Das Titelbild der README (Viktoriapark) ist mit 1600 Pixeln Breite schärfer.
  • Tests: Jeder Testlauf prüft jetzt, ob Karte und freemapper.toml den Vertrag der Suite einhalten (ADR 0089, freemapper-contract aus freemapper-core v0.8.0). Geprüft werden eine Schulhofkarte 1:1000 und eine Sprintkarte 1:4000 gegen zwölf Regeln und gegen das Vokabular, auf das sich freemapper-print und freemapper-courseplan verlassen: Namen der Kartenteile, Tags der Randangaben und der belaufbaren Fläche, Vertragsschlüssel der Projektdatei. Das Programm selbst ändert sich nicht.

Behoben

  • Feste Kieswege (501.6 bis 501.9) bleiben ganz, wo nur ein ALKIS-Flurstück Weg liegt (ADR 0079, Nachtrag). Dieses Flurstück ist nur ein Kandidat 501.5, kein Kartenobjekt, und schnitt trotzdem die OSM-Linie weg. Jetzt schneiden nur 501.5-Kartenobjekte (Straßenverkehr, Platz, Befahrung). Toleranz 0,25 mm und Mindeststück 1 mm bleiben. Bestehende Karten bekommen das mit run --force.

[0.9.2] - 2026-11-10

Behoben

  • Gebietsauswahl: Die Hintergrundkarte zeigte bei manchen Browsern „access blocked“ (403) von OpenStreetMap (Issue 11). Die Seite schickt kein Referer, und die Kachelrichtlinie von OpenStreetMap verlangt ein gültiges Referer oder einen erkennbaren User-Agent. Jetzt holt der lokale Server die Kacheln selbst (/tiles/osm/{z}/{x}/{y}.png) mit User-Agent: freemapper/<Version> (+https://github.com/HenryJobst/freemapper), ohne weitere Daten. Er prüft Zoom (0 bis 19), Spalte und Zeile, folgt keiner Weiterleitung, fragt höchstens zweimal gleichzeitig an und behält die Kacheln im Speicher so lange, wie OpenStreetMap erlaubt (höchstens 1024 Kacheln, 32 MB). Die Seite lädt nichts mehr direkt von tile.openstreetmap.org. Die Luftbilder der Bundesländer bleiben unverändert (ADR 0088).
  • Breite Treppen wie die Tribünen am Stadion (ADR 0048, Nachtrag): Die parallelen Linien 532.9 stehen jetzt eine Symbolbreite plus 0,15 mm auseinander, dem Mindestabstand der Norm zwischen zwei Linien einer Farbe. Vorher stießen die Querstriche benachbarter Linien aneinander, und die Tribüne sah aus wie eine Leiter. Die Breite bleibt bis zum Rand bedeckt. Im Viktoriapark sinkt die Zahl der Linien 532.9 von 94 auf 86. Bestehende Karten bekommen das mit run --force.
  • Berlin: Brunnen, Brunnenpumpen und Trinkbrunnen kommen nicht mehr doppelt vor (ADR 0087). Gemessen am Viktoriapark: Vermessene Pumpen und OSM-Brunnen derselben Stelle liegen 0,05 bis 0,5 m auseinander, der nächste Punkt einer anderen Quelle 9,8 m. Die Grenze ist 0,75 mm auf dem Papier (3 m bei 1:4000), im Gelände nie unter 3 m. Die Rangfolge ist Register, ALKIS, Straßenbefahrung, OSM. Die Straßenbefahrung schlägt jetzt OSM-Brunnen (man_made=water_well, amenity=fountain) und OSM-Trinkwasser (amenity=drinking_water), das Zierbrunnen-Register auch den OSM-Brunnen. Der Gewinner nennt den weggelassenen Punkt in freemapper:also. Ein Register-, ALKIS- oder Straßenbefahrungs-Brunnen im OSM-Brunnenbecken (amenity=fountain als Fläche) oder bis 1 m daneben fällt weg, und das Becken nennt ihn. Zwei Brunnen unterhalb der Grenze ohne höhere Quelle bleiben beide. Am Viktoriapark bleiben 9 Kandidaten 311 (3 Register, 4 Straßenbefahrung, 2 OSM) und 0 Kandidaten 313, nur der Vermerk wechselt von freemapper:generalized zu freemapper:also. Bestehende Karten bekommen das mit run --force.

[0.9.1] - 2026-11-10

Geändert

  • Koordinatensysteme und Kacheln kommen jetzt aus freemapper-georef (freemapper-core v0.5.1). crs und tiles in freemapper geben die Typen unter den alten Pfaden weiter, das Verhalten ändert sich nicht. Die Projektion rechnet mit der gemeinsamen Transversal-Mercator-Implementierung. freemapper-fs steht jetzt ebenfalls auf v0.5.1.

Hinzugefügt

  • Freileitungen, Rohrleitungen, Türme und Masten aus OSM, Sprintkarten, nur als Kandidaten. Oberirdische power=line|minor_line und power=cable mit location=overhead sind 510, Leitungen ab 110 kV sind 511. Rohrleitungen mit location=overground|surface|overhead sind 528 (niedrig) oder 529 (hoch, nicht überquerbar: überirdisch auf Stützen oder height ab 1,5 m). power=tower, man_made=communications_tower|chimney|water_tower|lighthouse, Türme und Masten sind Punkte 524 oder 525, je nach Höhe. Unterirdische Leitungen und Rohrleitungen, power=pole, Masten unter 10 m und Tanks fehlen. Die Linien halten die Mindestlänge der Norm ein (3,75, 2,2 und 3 mm auf dem Papier). Jeder Turmpunkt trägt freemapper:control= und wird wie das Straßenmobiliar ausgedünnt. ALKIS: Die geladenen Ebenen enthalten keine Türme oder Leitungen, darum gibt es keine ALKIS-Regel (Folgearbeit im ADR). Kein Beispielgebiet hat eine Leitung oder Rohrleitung. Wismar, Monschau und Quedlinburg bekommen je einen Turm (Kandidaten 1756 auf 1757, 850 auf 851, 1110 auf 1111) (ADR 0083).

Behoben

  • Die Maßstabsleiste trägt wieder freemapper:source=sheet wie alle Blattobjekte (seit 0.9.0 stand dort scale-bar). freemapper-print und freemapper-courseplan erkennen das Blatt nur an diesem Wert; sonst druckten sie die Leiste als Karteninhalt und verschoben Seitenmitte und Ausdehnung. Zusätzlich trägt jedes Leistenobjekt freemapper:sheet=scale-bar; daran lässt das PDF die Leiste ohne --pdf-scale-bar weg. OOM- und OCAD-Karte behalten die Leiste. Bereits erzeugte Karten mit dem alten Wert bleiben lesbar (ADR 0080, Nachtrag).
  • Doppelte Flächen nach Rang (ADR 0078): Eine Fläche, die selbst wegen einer höheren weggefallen ist, lässt keine weitere mehr wegfallen. Bei der Kette A > B > C fiel C sonst wegen des schon entfernten B weg, und der Hinweis freemapper:also landete auf B. Jetzt trägt ihn die Fläche, die auf der Karte bleibt, und C bleibt, wenn A allein den Anteil nicht erreicht. Bestehende Karten bekommen das mit run --force.
  • Das Kartengebiet wird auf jedem Weg geprüft, nicht nur auf der Auswahlseite (ADR 0084). init --geojson, MCP create_project mit geojson, init_project und das Gebiet in freemapper.toml lehnen ein Polygon ohne Ecken, mit sich kreuzenden Kanten oder mit mehr als 5000 Ecken jetzt mit „not a usable map area“ ab. Ein leeres Polygon ("coordinates": []) brachte vorher den Server zum Absturz.
  • init, MCP create_project und die Gebietsauswahl nehmen nur noch Maßstäbe an, die freemapper-print druckt (ADR 0085): Schulhofkarte 1:1000, Sprintkarte 1:4000 oder 1:5000. Vorher lief --kind schoolyard --scale 2000 durch, und freemapper-print brach danach mit MapScaleNotAllowed ab. Die Fehlermeldung nennt die erlaubten Maßstäbe; bei Sprint 1:3000 rät sie, bei 1:4000 zu zeichnen, weil freemapper-print beim Drucken auf 1:3000 vergrößert. 1:5000 steht nicht in der Norm; init weist darauf hin, die Symbole bleiben bei 100 %. Ein Projekt mit anderem Maßstab in der freemapper.toml lässt sich weiter laden und gibt eine Warnung aus. Die Gebietsauswahl bietet die erlaubten Maßstäbe als Liste an.
  • init schreibt immer einen title in die freemapper.toml, auch ohne --title: der Ordnername mit großen Anfangsbuchstaben, wie ihn das PDF schon bildete (Clara-Zetkin-Schule). freemapper-print und freemapper-courseplan lesen damit denselben Titel (ADR 0086). Ältere Projekte ohne title bleiben unverändert.

[0.9.0] - 2026-11-10

Geändert

  • Alle elf Beispiele sind mit dem aktuellen Code neu erzeugt. Das PDF jedes Beispiels ist die Trainingskarte (<name>-candidates.pdf), und preview.jpg ist daraus gerendert, weil die Karte allein sehr schlicht ist. Kartenobjekte, Kandidaten und Symbole in der Beispielübersicht sind neu gezählt, und die Kieswege 501.6 bis 501.9 stehen in allen Beispielen als Kartenobjekte. Nur Cochem und Blankenese haben zusätzlich die Karte ohne Kandidaten (<name>.pdf, preview-map.jpg). Die Namensnennung des Viktoriaparks nennt wieder die Öffentliche Beleuchtung.
  • Der Standard von --pdf ändert sich. Es schreibt jetzt <name>.pdf mit genau den Objekten der OOM-Karte, ohne Kandidaten und ohne Maßstabsleiste. Die Trainingskarte mit allen Kandidaten steht in <name>-candidates.pdf und kommt mit --pdf-candidates; beide Schalter zusammen schreiben beide Dateien. Die Maßstabsleiste auf den PDFs gibt es nur mit --pdf-scale-bar (deutsche OL-Karten haben meist keine); die Maßstabszahl bleibt im Titelblock. Das alte Verhalten ist --pdf-candidates --pdf-scale-bar. Gilt auch für run und die MCP-Parameter pdf, pdf_candidates, pdf_scale_bar. OOM- und OCAD-Karte behalten die Leiste. Ändert ADR 0002 (ADR 0080).
  • Die Trainingskarte des Viktoriaparks (berlin-viktoriapark-candidates.pdf, preview.jpg) ist mit der gekürzten Quellenangabe neu erzeugt (vier statt neun Zeilen). Die übrigen Beispiele haben höchstens fünf Zeilen und bleiben unverändert; die Karteninhalte sind identisch.

Hinzugefügt

  • Die Quellenangabe auf der PDF-Karte wird bei Bedarf gekürzt. --pdf-sources auto (Standard, auch MCP pdf_sources) druckt bis zu fünf Zeilen unverändert; ist der Block länger, fasst freemapper die Quellen mit dl-de/zero-2-0 je Anbieter zusammen, kürzt lange Namen, verbindet Zeilen mit „ · “ und verweist zuletzt auf ATTRIBUTION.txt. OpenStreetMap, alle anderen Lizenzen und die freemapper-Zeile bleiben wörtlich. full kürzt nie; credit-only druckt nur die freemapper-Zeile und weist in der Ausgabe darauf hin, dass ODbL und dl-de/by-2-0 die Nennung beim Weitergeben verlangen. Die freemapper-Zeile lässt sich in keinem Modus abschalten. ATTRIBUTION.txt, OOM- und OCAD-Karte führen immer alle Quellen. Der Viktoriapark-Block schrumpft von neun auf vier Zeilen (ADR 0081).
  • Eine Gegenüberstellung von Karte und Trainingskarte: examples/vergleich.md zeigt Cochem und Blankenese nebeneinander, mit den häufigsten Kandidatensymbolen und der Messung an allen elf Beispielen, aus der die Auswahl folgt. Die Beispielübersicht und die README verlinken sie.
  • Berliner Kontrollstandorte auf Sprintkarten. Die Straßenbefahrung (Poller, Masten, Fahnenmasten, Bänke) und das Beleuchtungskataster (Laternen in Betrieb) liefern jetzt 531-Kandidaten mit freemapper:control (bollard, mast, flagpole, bench, street_lamp, dazu advertising_column für die Werbesäulen der Befahrung), wie die aus OSM. Die Ausdünnung gilt für alle Quellen gemeinsam: Ein Standort, der ein gleichartiges innerhalb von 25 m hat, fehlt, gleich aus welcher Quelle, nachdem Doppel und Standorte in Gebäuden entfallen sind. Ein vermessener Poller ersetzt einen OSM-Poller bis 2 m. Hydranten und Spielgeräte bleiben Schulhof-Sache. Ein Berliner Sprintprojekt lädt sieben WFS-Anfragen mehr (33 statt 26); die Platzschätzung für die Berliner Ebenen steigt von 10,5 auf 12 MB je km². Bestehende Karten bekommen das mit run --force (ADR 0077).
  • Trinkbrunnen sind auf Sprintkarten 313, aus dem Berliner Register, der Befahrung und aus OSM amenity=drinking_water.

Behoben

  • Wege aus festem Kies sind wieder Kartenobjekte. surface=compacted|fine_gravel und tracktype=grade2 (befestigt nach ISSprOM 501, „hard gravel“) zeichnet freemapper als Linie 501.6 bis 501.9 nach width in der Karte, nicht mehr nur als Kandidat; die Parkkarten haben ihre Wege zurück. Wo ALKIS oder die Befahrung schon Pflaster zeichnen (501.5), entfällt der Teil der Linie im Pflaster (aufgeweitet um 0,25 mm auf dem Papier), und Reststücke unter 1 mm auf dem Papier entfallen. Wege ohne surface, unbekannte Oberflächen und tracktype=grade3 bis grade5 bleiben Kandidaten, Baumgruppen werden weiter an den Linien geschnitten. Viktoriapark: 26 Kartenobjekte 501.6 statt 49 Kandidaten, Sanssouci: 192 statt 218. Ändert ADR 0073 (ADR 0079).
  • Doppelte Flächen aus mehreren Quellen bleiben nur einmal. Ein OSM-Durchgang (tunnel=building_passage, covered) über einem Berliner Gebäudeteil, einem ALKIS-Durchgang oder einer Überdachung, ein privater OSM-Streifen in einer ALKIS-Fläche, die nicht betreten werden darf, und eine OSM-Brücke über einer Berliner Brückenfläche entfallen, wenn die Hälfte (520: 80 %) ihrer Fläche unter der höherrangigen Fläche liegt, aufgeweitet um 0,25 mm auf dem Papier. Das bleibende Objekt nennt das andere in freemapper:also. Auch ein OSM-Denkmal bis 5 m neben einem Katasterdenkmal sowie OSM-Bordsteine und -Böschungen entlang von Katasterlinien entfallen. Viktoriapark: 520 von 117 auf 94, 522 von 211 auf 192. Lübeck: 520 von 1 125 auf 1 112, 522 von 280 auf 221 (ADR 0078).
  • Kontrollstandorte in Gebäuden dünnen ihre Nachbarn nicht mehr aus. Die 25-m-Regel läuft jetzt, nachdem die Standorte in Gebäuden entfallen sind.

[0.8.0] - 2026-11-09

Hinzugefügt

  • Nur erreichbare Durchgänge werden gezeichnet. Ein 522-Durchgang (aus OSM, ALKIS oder den Berliner Bauteilen), der nur an Gebäude, 520-Flächen oder Wasser grenzt oder zwei umbaute Höfe ohne Ausgang verbindet, bekommt freemapper:hidden=unreachable: Er bleibt unter den Kandidaten und fehlt in der Trainingskarte. Als erreichbar gilt ein Durchgang, wenn er (oder eine Kette von Durchgängen, etwa die Lübecker Höfe und Gänge) auf belaufbaren Grund trifft, der mit dem Straßennetz zusammenhängt, mit 0,5 mm (2 m) Spielraum. Lübeck: 16 von 280 Durchgängen verborgen, Viktoriapark: 52 von 211 (ADR 0076).
  • Denkmäler aus OSM. Denkmäler, Wegkreuze und Grenzsteine (historic=memorial|monument|wayside_cross|boundary_stone) sind auf Sprintkarten 526-Kandidaten. Stolpersteine, Gedenktafeln und Gedenkstücke, die eine Bank, ein Baum oder ein Wandbild sind, bleiben draußen, denn 526 gilt nur für Auffälliges (ADR 0075).
  • Kontrollstandorte für Bahnleger. Poller, Straßenlaternen, Papierkörbe, Fahrradständer und Bänke aus OSM sind auf Sprintkarten 531-Kandidaten mit dem Tag freemapper:control (Art des Objekts), nie Kartenobjekte. Ein Objekt mit einem gleichartigen innerhalb von 25 m (Pollerreihe, Bankpaar, Laternenfolge) wird weggelassen, und ein Kontrollstandort weicht jedem anderen Punktsymbol, damit er keine Bäume oder Brunnen verdrängt. Das Tag ist die Stelle, an der ein Planungswerkzeug die Standorte findet (ADR 0074).
  • Zugangsbeschränkungen aus OSM. Private und gesperrte Wege (access=private|no, foot=private|no) werden auf Sprintkarten 520-Kandidaten, ein Streifen von 2 m (Straßen 3 m) um den Weg, und die Wegelinie entfällt. foot=yes|permissive|designated lässt den Weg, wie er war. Flächen mit access=private|no (Landnutzung, Garten, Platz, Parkplatz, Schulgelände) sind 520 in ihrer Form (ADR 0073).
  • Durchgänge durch Gebäude aus OSM. Wege mit tunnel=building_passage und überdachte Wege (covered=yes, Arkaden) sind auf Sprintkarten jetzt 522-Kandidaten, als Streifen von 3 m (oder width) entlang des Weges, das Gebäude bleibt ganz. Bisher war ein gepflasterter Durchgang gar kein Kandidat und ein ungepflasterter nur eine Linie 505.1. Die Regeln kennen dafür das neue Feld corridor_m (ADR 0072). Bestehende Karten bekommen sie mit run --force.
  • OSM-Multipolygon-Relationen werden gelesen. Parks, Gewässer, Wälder und Gebäude, die nur als Relation vorliegen (Tags an der Relation, Ringe aus Wegen ohne Tags), erreichen jetzt die Regeln. freemapper verkettet die Wege in beliebiger Richtung zu geschlossenen Ringen und behält Löcher, der Innenhof liegt also nicht im Gebäude und der Teich nicht im Park. Ein äußerer Weg mit den Tags der Relation wird einmal gezeichnet. Im Beispiel Viktoriapark steigen die gespeicherten OSM-Objekte von 752 auf 755 und die Kandidaten von 2.093 auf 2.094: Ein Teich (301) ist neu, zwei Wiesen mit Löchern liegen unter dem ALKIS-Park. Im Park Sanssouci kommt eine Wiese mit 13 Löchern hinzu (1.047 auf 1.048 Objekte), sobald sein Beispiel neu gebaut wird. Bestehende Karten bekommen Relationen mit run --force (ADR 0070).
  • Parks sind gelb. Grünanlagen, Parks, Siedlungsgrün und Grünland aus ALKIS werden offenes Gelände (401) in der Karte, Wald und Gehölz Wald (405), Heide 403. Friedhöfe, anderes Landwirtschaftsland, Moor und Sumpf sind Kandidaten, ebenso Parks und Rasen aus OSM, wo kein ALKIS-Park liegt (ADR 0069).
  • Die belaufbare Fläche. Auf der Sprintkarte liegt unter allem eine Fläche im unteren Braun von 501.5 über das ganze Blatt, Symbol 990 im eigenen Kartenteil base, Tag freemapper:source=base. Sie füllt jede Lücke, die nichts anderes zeigt; eine Sprintkarte ohne sie ist unvollständig. Ihre Farbe steht hinter allen anderen, in OOM, OCAD (Farbe 32, Symbol 990.000) und im PDF. Drucken Sie Sprintkarten farbig, denn in Graustufen liegt das Braun nahe am Papierweiß (ADR 0069).

Behoben

  • Punkte in Gebäuden fallen weg. Ein Kandidatenpunkt auf Sprintkarten (Denkmal, Laterne, Papierkorb, Brunnen, Quelle), dessen Mitte in einem Gebäudegrundriss liegt, ist weder sichtbar noch nutzbar und wird entfernt; die dunklen Punkte auf der Kirche im Lübeck-Beispiel waren Denkmäler. Bäume bleiben. Lübeck: 526 von 10 auf 4, 531 von 195 auf 180; Viktoriapark: 531 von 121 auf 119 (ADR 0076).
  • Der Straßenrand macht keinen Haken mehr um jeden Straßenbaum. Die Bordsteinlinien der Befahrung (Kandidaten 501.1) liefen um jeden Baumschlitz im Parkstreifen, deshalb zeigte die Trainingskarte an jedem Baum einen Haken. freemapper ersetzt jetzt einen Bordstein-Umweg durch seine Sehne, wenn er auf dem Papier weniger als 1,5 mm² umschließt (24 m² bei 1:4000), und lässt einen geschlossenen Bordsteinring dieser Größe weg. Die Regel beurteilt einen Umweg danach, wie weit er aus seiner Sehne ragt (mindestens 0,3 davon, höchstens 10 m breit); so verschwinden auch die breiteren Trapezschlitze, und geschlossene Bordsteinringe um einzelne Baumscheiben entfallen. Ein Umweg muss außerdem auf einer geraden Strecke liegen; so entstehen weder eine Spitze an einem Baum noch eine Diagonale über einen Versatz des Bordsteins. Kurven, größere Buchten und die Karte selbst bleiben unverändert. Im Viktoriapark verlieren die Bordsteine der Befahrung 735 von 6.522 Stützpunkten und 5 von 81 Linien. Bestehende Projekte bekommen die saubereren Linien mit run --force (ADR 0071).

Geändert

  • Die Beispiele Viktoriapark und Lübeck sind mit den neuen OSM-Regeln neu gebaut. Viktoriapark: Kartenobjekte 789 auf 740 (505.1: 58 auf 9, weil verdichteter Kies zum Kandidaten wird), Kandidaten 2.089 auf 2.327 (531: 5 auf 121, davon 116 Kontrollstandorte; 520: 73 auf 117; 522: 179 auf 211; 501.6: 45 neu, 501.9: 4 neu; 526: 1 auf 3). Lübeck: Kartenobjekte 2.294 auf 2.281, Kandidaten 1.528 auf 1.859 (522: 185 auf 280; 531: 0 auf 195; 520: 1.090 auf 1.125; 526: 0 auf 10; 501.6: 13 neu; 505.1: 35 auf 16). Die gespeicherten OSM-Objekte steigen von 755 auf 1.371 (Viktoriapark) und von 234 auf 927 (Lübeck).
  • Verdichteter Kies und Feinkies (surface=compacted|fine_gravel) ist nach ISSprOM 501 fest und deshalb kein unbefestigter Weg mehr in der Karte, sondern ein 501.6-bis-501.9-Kandidat nach width. Ab 3 m Breite sind unbefestigte Wege 505.2. Ein Wirtschaftsweg ohne surface folgt tracktype (ADR 0073).
  • Baumgruppenflächen (402, 405) verdecken keine Wege mehr. freemapper schneidet sie auch an befestigten Kandidaten und an Wegen (505, 506, 507) aus. Die punktierte Vegetationsgrenze (416) gibt es nur noch auf der Schulhofkarte, auf der Sprintkarte zeigt sich der weiße Wald auf Gelb oder Braun. Im Viktoriapark bleiben dadurch mehr Bäume Punkte (1 128 statt 835), die 49 Grenzlinien entfallen (ADR 0069).
  • Alle elf Beispielprojekte sind neu erzeugt, mit gelben Parks und der belaufbaren Fläche.
  • Dichte Baumgruppen werden jetzt auch im Park zur Fläche, die man auf der Karte sieht. Drei oder mehr Bäume, die auf dem Papier näher als 2,5 mm (10 m bei 1:4000) beieinander stehen oder deren Kronen sich fast berühren, werden Wald (405), wenn ihre Kronen mindestens die Hälfte der Fläche decken, sonst offenes Gelände mit verstreuten Bäumen (402). Auf weißem Grund bekommt der Wald eine punktierte Vegetationsgrenze (416), damit er sichtbar ist. Auf Pflaster bleibt es bei 501.3, ab 9 Bäumen. Baumreihen an Straßen und Alleen bleiben Punkte. Im Park Sanssouci sinkt die Zahl der Baumpunkte von 1 654 auf 782 (48 Flächen 402), im Viktoriapark von 1 660 auf 942 (43 Wälder, 9 Flächen 402; ADR 0066, Nachtrag).
  • Die Trainingskarte (PDF) zeichnet die Punktmuster von Flächen, etwa die weißen Punkte von 402. Bisher sah 402 dort aus wie 401.
  • Überlappende Mauern, Zäune und Hecken. Laufen zwei solche Linien parallel und näher, als ihre Symbole auf dem Papier dürfen, verliert die schwächere das Stück: die schlechtere Quelle, bei gleicher Quelle das schwächere Symbol (Mauer vor Zaun vor Hecke vor Stützmauer). Mauerstücke bis 0,5 m neben einem Gebäudeumriss fallen weg, ebenso Bäume bis 1 m neben einer dieser Linien. Im Park Sanssouci sinken die parallelen Linienpaare unter 1 m Abstand von 162 auf 4 (ADR 0068).
  • Alle elf Beispielprojekte sind mit diesen Regeln neu erzeugt, ihre Kartenobjekte bleiben gleich.
  • freemapper schreibt, kopiert und löscht im Projektordner jetzt mit der gemeinsamen Bibliothek freemapper-fs aus freemapper-core 0.2.0 und pflegt keine eigene Kopie mehr. Für Nutzer bleibt alles gleich, auch der Wortlaut der Meldungen (ADR 0067).

[0.7.0] - 2026-11-09

Hinzugefügt

  • Überdachungen und Durchfahrten in weiteren Bundesländern. In jedem Bundesland außer Sachsen und Sachsen-Anhalt werden Überdachungen und Carports aus ALKIS Kartenobjekte (522) auf beiden Kartenarten, an den Gebäuden abgeschnitten wie in Berlin. Durchfahrten und Arkaden werden Kandidaten 522, das Gebäude bleibt ganz. freemapper liest sie aus den Gebäuden, die es ohnehin lädt, ein zusätzlicher Download entfällt. Datenstand ist das Datum des ALKIS-Objekts. Eine vorhandene Karte bekommt die Überdachungen erst mit run --force (ADR 0061).
  • Brandenburg: das vollständige ALKIS aus dem NAS-Dienst der LGB. Mauern und Mauerkanten, Zäune, Hecken, Denkmäler, Brunnen, Gräben und Bäche werden Kandidaten, auf Sprintkarten auch Böschungsoberkanten und Brücken. Das Symbol wählt der Code im Kataster, freemapper:alkis nennt seine Bezeichnung, z. B. Mauerkante, rechts. Datenstand ist das Datum, seit dem die Objektversion im Kataster steht. Liegen die zwei Kanten einer Mauer einander zugewandt und auf dem Papier näher als 0,55 mm (2,2 m bei 1:4000), zeichnet freemapper eine Linie 515 in der Mitte mit freemapper:alkis=Mauer (Mauerkanten gepaart), und freemapper:also nennt die andere Kante. Im Park Sanssouci sind es 264 statt 271 Mauerlinien. Die Ebenen liegen in data/alkis-nas/, etwa 1 MB je km² (ADRs 0062, 0063).
  • Potsdam: Die Bäume der Stadtkarte werden Kandidaten 418, jeder mit seinem eigenen Aufnahmedatum. Die Daten kennen keine Krone, Baumstümpfe fallen weg. OSM-Bäume bis 2 m neben einem Potsdamer Baum fallen weg. Eine Antwort über 256 MB bricht freemapper beim Lesen ab. Die neue Namensnennung Landeshauptstadt Potsdam / Bäume der Stadtkarte, dl-de/zero-2-0 erscheint, wenn Potsdamer Bäume unter den Kandidaten sind (ADR 0065).
  • Punktgeneralisierung. Punktsymbole halten den Abstand von 0,15 mm ein, den die ISSprOM für Linien setzt. Drei oder mehr Bäume, die einander zu nahe stehen, werden eine Fläche, wenn mindestens die Hälfte ihrer Kronen auf Pflaster oder auf offenem Gelände (401 bis 404) liegt: auf Pflaster befestigte Fläche mit verstreuten Bäumen (501.3), auf offenem Gelände Wald (405), wenn die Kronen mindestens die Hälfte der Gruppe decken, sonst offenes Gelände mit verstreuten Bäumen (402). Anderswo bleiben die Bäume Punkte und werden ausgedünnt, denn ein weißer Wald auf weißem Grund würde sie verstecken. Baumreihen bleiben einzelne Baumsymbole. Die Fläche trägt freemapper:source=generalization und nennt ihre Bäume in freemapper:source_id (ADR 0066).

Geändert

  • Zu dicht stehende Punkte werden ausgedünnt. Kämen sich zwei Punktsymbole auf dem Papier näher, als die Norm erlaubt, behält freemapper das größere, dann das aus der besseren Quelle, dann das mit der größeren Krone. Der bleibende Punkt nennt die anderen in freemapper:generalized. Das ändert Kandidaten und Trainingskarte in jedem Bundesland, auch in Berlin. Die Kartenobjekte bleiben gleich (ADR 0066).
  • Bäume und andere Punkte in Sperrgebiet-Kandidaten (520) bleiben in den Kandidaten mit freemapper:hidden=520, die Trainingskarte lässt sie aber weg. Auf Schulhofkarten zeigt das PDF deshalb keinen Punkt außerhalb des Schulgeländes (ADR 0066).
  • Doppel: Register vor ALKIS vor Straßenbefahrung vor OSM gilt jetzt in jedem Bundesland und auch für Bäche und Gräben (305, 306). Eine OSM-Linie, die zu mindestens 80 % ihrer Länge höchstens 1,5 m neben einer Linie des vollständigen ALKIS mit demselben Symbol liegt, fällt weg, und freemapper:also nennt sie (ADR 0063).
  • Größenschätzung und Platzprüfung rechnen das vollständige ALKIS und die Stadtbaumkataster als optionalen Teil (2 und 1 MB je km²). Fehlt der Platz, lässt freemapper sie weg und behält die gespeicherten.
  • run meldet eine behaltene Karte ohne die ALKIS-Überdachungen jetzt in jedem Bundesland mit Überdachungen. Die Meldung lautet nun The map lacks the ALKIS canopies and carports (522) ….
  • Teilstücke einer Linie mit Seite (Böschung 104, Felswand 201, Stützmauer 513.2, die rechten und linken Kanten im vollständigen ALKIS) verbindet freemapper nur noch in ihrer eigenen Richtung und nie über zwei Seiten hinweg, damit die Seite der Striche stimmt. Im Viktoriapark bleiben dadurch zwei Böschungslinien mehr getrennt (ADR 0063).

Sicherheit

  • Das Aufräumen alter .part-Dateien im Ordner templates folgt keinem Link mehr aus dem Projekt hinaus und löscht keine Dateien außerhalb. Ein .part-Eintrag, der selbst ein Link ist, wird übersprungen (ADR 0060).

[0.6.2] - 2026-11-09

Sicherheit

  • Ein Projektordner von jemand anderem konnte freemapper über Links außerhalb des Ordners schreiben lassen. War ATTRIBUTION.txt ein Link, überschrieb jeder run mit vorhandener Karte die Datei, auf die er zeigte. Mit --force kopierten die Sicherungen .omap.bak und .ocd.bak die Karte des Projekts in das Ziel des Links, etwa ~/.zshrc. Auch die Bildkopien nach ocad/ folgten Links, ebenso jede Datei in einem Ordner data, templates oder ocad, der selbst ein Link war. freemapper schreibt jede Datei jetzt unter einem neuen Namen und benennt sie dann um. Dabei ersetzt es einen Link, statt hindurchzuschreiben. Führt ein Ordner data, templates oder ocad aus dem Projekt hinaus, bricht der Befehl ab (…: a link leads out of the project folder, so freemapper writes nothing there). Teildateien bekommen jedes Mal einen neuen Namen und übernehmen nie eine vorhandene Datei oder einen Link (ADR 0060).
  • Kopien innerhalb eines Projekts konnten durch Links hindurch lesen. Ein Vorlagenbild, das ein Link auf eine Datei an anderer Stelle war, etwa ~/.ssh/id_rsa, landete als Kopie in ocad/. freemapper kopiert jetzt nur noch Dateien des Projekts selbst. Der OCAD-Export lässt eine solche Vorlage weg und warnt (warning: …: a link or outside the project folder, so freemapper does not copy it; …). freemapper prüft jeden einzelnen Schreibvorgang, nicht mehr nur einmal je Lauf (ADR 0060).
  • Ein Wettlauf bleibt: Wer in einen Projektordner schreiben kann, während freemapper darauf läuft, und im richtigen Moment einen Ordner gegen einen Link tauscht, kann einen Schreibvorgang mit festem Dateinamen noch umlenken. freemapper also nicht auf Projektordnern laufen lassen, in die andere gleichzeitig schreiben können (ADR 0060).

Geändert

  • Bibliotheks-API (Crate freemapper): Die Funktionen, die Vorlagen und gespeicherte Daten schreiben, bekommen den Projektordner als zusätzliches Argument root vor dem Ausgabepfad. Das betrifft write_gray_png, write_ndsm_png, build_orthophoto, build_orthophoto_from_image, wms::fetch_orthophoto, wms::fetch_orthophoto_from, wms::fetch_k5, geosn::fetch_orthophoto und die fetch_model-Funktionen der Höhenmodell-Quellen. OcadOutcome hat das neue Feld warnings. Kommandozeile und MCP bleiben gleich.

Behoben

  • Windows: Die Prüfung des freien Speicherplatzes vor fetch erkennt Laufwerke jetzt an ihrer Seriennummer statt am Laufwerksbuchstaben. Bisher übersprang freemapper die Prüfung mit einer Warnung (warning: cannot read the free disk space of …), wenn Windows den Pfad nicht auflösen konnte, etwa auf manchen RAM- oder virtuellen Laufwerken. Ein Laufwerk, das in einen Ordner eines anderen Laufwerks eingebunden ist, zählte als dieses andere Laufwerk, sodass sein eigener Platz nicht geprüft wurde.

[0.6.1] - 2026-11-09

Sicherheit

  • Eine präparierte freemapper.toml konnte beim Laden Dateien außerhalb des Projekts löschen. Ein Eintrag unter berlin_layers mit einem Namen wie ../../../x ließ fetch die Datei x.geojson neben dem Projektordner löschen. freemapper bildet die Pfade der Berliner Ebenen jetzt nur noch aus seiner eigenen Ebenenliste. Einträge mit unbekanntem Namen oder mit /, \, .., Laufwerksbuchstaben oder Steuerzeichen lässt es beim Laden weg und warnt (warning: freemapper.toml: ignored the Berlin layer entry …). Führt der Ordner data/berlin über einen Link aus dem Projekt hinaus, schreibt und löscht freemapper dort nichts (ADR 0059).

[0.6.0] - 2026-11-09

Hinzugefügt

  • Berlin: die Straßenbefahrung des Geoportals Berlin, aufgenommen 2014 bis 2016. Auf Sprintkarten werden Bordsteine (501.1), Werbesäulen (531), Grünstreifen (401) und vermessene Gehwege, Plätze und Parkwege außerhalb der ALKIS-Straßenflächen (501.5) Kandidaten. Auf beiden Kartenarten kommen Treppen, Mauern, Geländer, Verkehrsschutzgitter und Leitplanken (518), Fahrgastunterstände und Brunnen dazu. Jeder vermessene Kandidat trägt sein Aufnahmedatum; ist es nicht lesbar, steht 2014-01-01 mit freemapper:currency_guessed=yes da.
  • Berlin: Möblierung auf Schulhofkarten. Bänke, Hydranten, Poller, Masten, Fahnenmasten und Spielgeräte kommen aus der Straßenbefahrung, Laternen (nur die in Betrieb) aus dem Beleuchtungskataster, Zier- und Trinkbrunnen aus ihren Registern. Auf Sprintkarten bleibt die Möblierung weg.
  • Berlin: Ein Punkt aus einem Register ersetzt OSM- und vermessene Punkte derselben Art: eine Laterne OSM-Laternen bis 5 m und vermessene Masten bis 2 m Abstand, ein Brunnen Brunnen bis 3 m. Auf Schulhofkarten ersetzt ein vermessener Hydrant, eine Bank, ein Mast oder ein Spielgerät das OSM-Gegenstück bis 2 m. Liegt ein Brunnen aus einem Register oder der Straßenbefahrung in einem gezeichneten Gewässer, fällt er weg.
  • Berlin: Gebäude tragen als Datenstand ihre Grundrissaktualität aus den Gebäudehöhen 2022 des Umweltatlas. Ein Gebäude ohne Treffer bleibt ohne Datum.
  • Neue Zeilen in der Namensnennung für die Straßenbefahrung, die Register und die Gebäudehöhen, jeweils nur, wenn sie Objekte geliefert haben. Die Registerzeile nennt nur die Register, deren Punkte in Karte oder Kandidaten stehen.

Geändert

  • Berlin: Die befestigten Flächen (501.5) enthalten die vermessenen Grünstreifen nicht mehr, freemapper schneidet sie aus. Baumscheiben bleiben darin. Ein Grünstreifen wird nur dort Kandidat 401, wo freemapper ihn ausgeschnitten hat oder wo er neben den befestigten Flächen liegt. Eine beschnittene Fläche nennt die Grünstreifen in freemapper:cut, freemapper:cut_ids und freemapper:cut_currency. Eine vorhandene Karte ändert sich erst mit run --force.
  • Berlin: Kurze Linienstücke aus ALKIS und der Straßenbefahrung, die Ende an Ende aneinanderstoßen, fügt freemapper zu einer Linie zusammen. Sie nennt die übrigen Stücke in freemapper:also und trägt das älteste Aufnahmedatum. Danach fallen Linien unter 1 mm auf dem Papier weg, jetzt auch bei ALKIS.
  • Berlin: Gibt es ein Objekt mehrfach, gewinnt das Register vor ALKIS, ALKIS vor der Straßenbefahrung und diese vor OSM. Ein vermessener Fahrgastunterstand, der mindestens zur Hälfte unter einer ALKIS-Überdachung liegt, fällt weg. Das bleibende Objekt nennt die anderen in freemapper:also, vermessene als geoportal-berlin/<Ebene>/<gis_id>. Jeder Berliner Kandidat trägt den Tag berlin:layer.
  • Die Download-Schätzung rechnet für die Berliner Ebenen mit 10,5 statt 4 MB je km² (gemessen am Viktoriapark: 9,8).

[0.5.0] - 2026-11-09

Hinzugefügt

  • Speicherplatz: Vor jedem Laden prüft freemapper den freien Platz im Zwischenspeicher und im Projektordner, auf zwei Laufwerken jedes für sich, und lässt auf jedem 1 GB frei. Passt nicht alles, lässt es das Oberflächenmodell, die Aktualisierung eines älteren OSM-Auszugs und in Berlin die Bauwerke, Bäume und die K5 aus und warnt mit dem nötigen und dem freien Platz. Ohne Platz für Kartendaten, Geländemodell oder Luftbild bricht es ab, bevor es etwas lädt. Läuft der Datenträger beim Schreiben voll, meldet freemapper das klar, löscht die halbe Datei und versucht es nicht erneut. Die Download-Schätzung (MCP-Werkzeug estimate_download, Gebietsauswahl) zeigt den freien Platz und markiert, was nicht passt.
  • Berlin: weitere offene Daten des Geoportals Berlin. Überdachungen und Carports aus ALKIS werden Kartenobjekte (522), auf beiden Kartenarten. freemapper schneidet sie an Gebäuden ab und lässt sie weg, wenn sie fast ganz in einem Gebäude liegen. Als Kandidaten kommen Treppen (532.6 bis 532.9) mit der Laufrichtung aus dem Geländemodell. Steigt eine Treppe darin nicht, führt sie auf ein angrenzendes Gebäude oder Denkmal zu oder läuft über ihre kurze Seite. Treppen breiter als dreimal 532.9 werden parallele Linien. Die Freitreppe-Linien sind Stufenkanten, aus jeder Folge paralleler Kanten wird eine Treppe quer dazu. Weitere Kandidaten sind Mauern, Stützmauern, Zäune, Hecken, Durchfahrten, Denkmäler, auf Sprintkarten auch Brücken und Böschungskanten. Straßen- und Anlagenbäume aus dem Baumkataster werden je nach Krone 417 oder 418, OSM-Bäume in 2 m Umkreis entfallen. Ebenso entfallen OSM-Zäune, -Mauern und -Hecken, die zu 80 % ihrer Länge höchstens 1,5 m neben derselben ALKIS-Linie liegen. Die Karte von Berlin 1:5000 (K5) liegt als Vorlage templates/k5.png bei. Eine vorhandene Karte bekommt die Überdachungen erst mit run --force, und run weist darauf hin.
  • init --osm nimmt mit --part <n> einen Teil einer OSM-Fläche aus mehreren getrennten Teilen (1 ist der größte; im MCP part). Ohne --part nennt die Meldung die Teile mit ihrer Größe. Findet Nominatim einen Weg nicht, etwa einen äußeren Weg ohne Tags, schlägt die Meldung die Relation oder --geojson vor.

Geändert

  • Kleingärten (ALKIS-Nutzung „Sport-, Freizeit- und Erholungsfläche“ mit bez „Kleingarten“) sind in jedem Bundesland Kandidaten für verbotenes Gebiet (520). Parks, Sportanlagen und Spielplätze bleiben offen.

Behoben

  • Die Höhenlinien-Kandidaten nennen in freemapper:source das Geländemodell ihres Bundeslandes, z. B. laiv-mv-dgm1 oder hvbg-dgm1. Bisher stand in jedem Bundesland lgb-dgm1 da.

[0.4.0] - 2026-11-08

Hinzugefügt

  • Niedersachsen (LGLN): Orthophoto aus dem WMS, Gelände- und Oberflächenmodell (DGM1/DOM1) aus dem WCS in Stücken von 2 km, Flugdatum und Datenstand aus den STAC-Suchen, Gebäude und Nutzung aus ALKIS. Das nDOM ist DOM1 − DGM1; ist das DOM1 mehr als zwei Jahre älter als das Luftbild, warnt freemapper mit beiden Daten. Eine Meldung sagt, ob die Bäume beim Bildflug belaubt waren. Die Karten nutzen UTM-Zone 32. Bremen gehört noch nicht dazu.
  • Rheinland-Pfalz (LVermGeo RP): Orthophoto aus dem WMS, als Flugdatum gilt das Erstellungsdatum des Blocks. Gelände- und Oberflächenmodell (DGM1/DOM1) kommen aus Laserkacheln von 1 km, deren Namen und Daten die Befliegungsübersicht Laserbefliegung nennt; für Kacheln ohne Flugjahr liest freemapper die Metalink-Datei des Bundeslandes. Hat der Server eine Kachel nicht, meldet freemapper sie als fehlend und fragt nach 30 Tagen wieder. Gebäude und Nutzung kommen aus ALKIS. Die Karten nutzen UTM-Zone 32. An der Grenze zu Hessen (Mainz, Wiesbaden) liest freemapper ALKIS und OSM beider Länder.
  • Gewässer auf allen Karten: Flüsse, Kanäle, Seen, Teiche, Hafenbecken und Meer aus ALKIS werden unpassierbares Gewässer (301.1) mit Uferlinie (301.6), ohne Linien zwischen den Katasterflächen und am Kartenrand. Gewässer, die im Mittel schmaler als 2 m sind, kommen als Kandidaten. Aus OSM kommen Teiche, Schwimmbecken, Brunnenbecken, Bäche, Gräben, Brunnen, Quellen, auf Schulhofkarten Trinkbrunnen und auf Sprintkarten Brücken als Kandidaten. Höhenlinien enden am Ufer, und Brunnenpunkte im Wasser (meist Fontänen in einem Becken) fallen weg. In OCAD tragen Fläche und Uferlinie die Nummern 301.001 und 301.002. Eine vorhandene Karte bekommt die Gewässer erst mit run --force.

Geändert

  • Die Nordlinien liegen im Kartenteil „default part“ bei den übrigen Kartenobjekten, mit dem Tag freemapper:source=north-lines. In OOM lassen sie sich an kleinen Objekten unterbrechen, und in der Trainingskarte liegen Mauern und Zäune darüber. Titel, Maßstab und Namensnennung bleiben im Teil „peripheral information“. Eine vorhandene Karte ändert sich erst mit run --force.
  • Die Farben folgen den IOF-Druck- und Farbdefinitionen Rev. 4 (September 2024, gültig ab 1.12.2024) statt der älteren Werte aus dem OOM-Symbolsatz: Braun ist 25/75/100/0 statt 0/56/100/18, Grün 80/0/100/0 statt 76/0/91/0, Braun 50 % 10/35/50/0. Gebäude sind wie in ISSprOM 2019-2 mit 50 % Schwarz gefüllt statt 60 %. Das gilt für OOM-Karte, OCAD-Datei und Trainings-PDF. Namen und Reihenfolge der Farben bleiben gleich.
  • Längere Meldungen sind klarer formuliert.
  • Reicht ein Kartengebiet über alle unterstützten Bundesländer hinaus (ins Ausland, aufs Meer oder in ein Bundesland, das freemapper noch nicht unterstützt, etwa Bremen oder Thüringen), warnt freemapper beim Laden, dass dort Luftbild und ALKIS fehlen können. Das gilt für alle Länder.

Behoben

  • Wo die Gewässerflächen zweier Bundesländer an der Grenze mitten im Fluss nicht ganz aneinanderstoßen (Mainz, Rhein), lief eine Uferlinie durch den Fluss. freemapper schließt jetzt Lücken unter 0,5 m zwischen Gewässerflächen, bevor es die Uferlinien zeichnet. Das gilt auch für Flurstücke desselben Landes. Brücken und Straßen (ab 0,8 m) bleiben Land, Inseln behalten ihr Ufer.

[0.3.0] - 2026-11-08

Hinzugefügt

  • Hamburg (LGV): Orthophoto aus dem WMS (Stand 2026), Gelände- und Oberflächenmodell aus den Archiven des Bundeslandes, Gebäude und Nutzung aus ALKIS. Die Karten nutzen UTM-Zone 32.
  • Sachsen-Anhalt (LVermGeo): Orthophoto, Gelände- und Oberflächenmodell (DGM1/DOM1), nDOM, Gebäude und Nutzung. Die Karten nutzen UTM-Zone 32.
  • Hessen (HVBG): Orthophoto, Gelände- und Oberflächenmodell aus den Gemeinde-Downloads, Gebäude und Nutzung aus ALKIS.
  • Schleswig-Holstein (LVermGeo SH): Orthophoto, Geländemodell aus dem INSPIRE-ATOM-Dienst (mit XYZ-Ersatz), Oberflächenmodell, Gebäude und Nutzung aus ALKIS.
  • Mecklenburg-Vorpommern (LAiV M-V): Orthophoto aus dem WCS, Gelände- und Oberflächenmodell, Gebäude und Nutzung aus ALKIS.
  • Nordrhein-Westfalen (Geobasis NRW): Orthophoto aus dem WMS, Gelände- und Oberflächenmodell (DGM1/DOM1) aus Laserkacheln, Gebäude und Nutzung aus ALKIS, OSM aus den Auszügen der fünf Regierungsbezirke statt des Landesauszugs. Die Karten nutzen UTM-Zone 32.
  • Karten können UTM-Zone 32 oder 33 nutzen. Ein Projekt übernimmt die Zone seines Bundeslands. Wechselt ein bestehendes Projekt die Zone, meldet freemapper das und räumt die alten Dateien auf.
  • Das Repository enthält pro unterstütztem Bundesland ein Beispielprojekt mit OpenOrienteering-Mapper-Datei, OCAD-Datei, Trainings-PDF und Vorschaubild.
  • Die Release-Archive enthalten das Handbuch mit Bildern, am Pfad, auf den die READMEs verlinken.
  • Das README erklärt Handbuch, Beispielprojekte und die Gebietsauswahl im Browser.
  • Dieses Änderungsprotokoll und Architekturentscheidungen (ADRs) in docs/adr/.

Geändert

  • Jedes Bundesland hat eine Zeile in der Regionentabelle des README. Die Einzelheiten stehen im Handbuch.
  • Die Größenschätzung vor dem Download zählt bei Bundesländern mit Kacheln ganze Kacheln und markiert die, die schon im Cache liegen.
  • Ältere Projekte verwerfen ihre gespeicherten Objekte, wenn sich der Rasterdaten-Anbieter ändert, und speichern diese Änderung.
  • freemapper legt die Rust-Version in rust-toolchain.toml fest, damit lokale Builds und CI dieselbe Version nutzen.

Behoben

  • Hamburg: ALKIS fällt auf den klassischen WFS zurück, wenn die OGC-API ausfällt.
  • Die Landesgrenzen sind jetzt gültige Geometrien. Die Prüfung, ob ein Gebiet im Bundesland liegt, stolpert nicht mehr über Splitter oder Selbstüberschneidungen.
  • Fehlerberichte der Server erkennt freemapper als solche und wiederholt die Anfrage nicht, auch bei XML-Fehlern von WMS- und WCS-Diensten.
  • Downloads haben eine Größengrenze, folgen beim Downloadportal von Schleswig-Holstein keinen Weiterleitungen und hinterlassen nach einem abgebrochenen Lauf keine halben Dateien.
  • Beschädigte oder ungewöhnliche LZW-komprimierte TIFF-Dateien liest freemapper so wie libtiff.
  • Schlägt der Download des Oberflächenmodells fehl, bleibt ein gespeichertes Modell erhalten, das das Gebiet abdeckt. Ein unlesbares Befliegungsdatum bricht den Lauf nicht mehr ab.
  • Fehlende Kacheln und Orte, die sich nicht auflösen lassen, erscheinen als Warnung mit Produkt und Kachel statt den Lauf zu beenden.
  • Ein Orthophoto ohne Befliegungsdatum wird nur 30 Tage wiederverwendet und danach neu geladen. Scheitert die Abfrage des Datums, behält freemapper ein passendes gespeichertes Orthophoto samt Datum.

[0.2.0] - 2026-11-07

Hinzugefügt

  • Berlin (Geoportal Berlin): ALKIS-Gebäude und -Nutzung in Projekten, mit passendem Quellenhinweis. Wo es kein fertiges nDOM gibt, berechnet freemapper es aus bDOM minus DGM1.
  • Sachsen (GeoSN): Orthophoto, DGM1/DOM1-Kacheln, nDOM, Gebäude und Nutzung aus ALKIS und ein OSM-Auszug für Sachsen. Jede Region nennt ihren eigenen Datenanbieter im Kartenhinweis.
  • Projekte wählen die Datenregion nach der Mitte des Gebiets. Unterstützt sind Brandenburg (ohne Berlin), Berlin und Sachsen.
  • Gebietsauswahl und Downloadschätzung kennen die Regionen und zeigen die passenden Ebenen und Größen je Region.
  • Ein zweisprachiges Handbuch (Deutsch und Englisch) mit Bildern. Es behandelt Installation, KI-Assistent, Gebietsauswahl, Vorlagen, Geländeprüfung, PDF, OCAD und Regionen und erklärt die Meldungen. Beide READMEs verlinken darauf.
  • Das README sagt gleich am Anfang, dass freemapper ein OCAD-Startprojekt und ein Trainings-PDF schreibt.

Geändert

  • Das README führt die Regionen in einer gleichrangigen Tabelle statt in getrennten Abschnitten für Berlin und Sachsen.
  • Die OSM-Fortschrittsmeldungen nennen den Auszug, den sie laden (Brandenburg oder Sachsen).

Behoben

  • Leere Antworten des sächsischen WFS, Kacheln am Rand außerhalb der Rasterregion und abgelehnte Anfragen behandelt freemapper korrekt. Eine abgelehnte Anfrage wird nicht wiederholt.
  • Die Quellenzeile für Berlin nennt das Geoportal Berlin, und die ALKIS-Zeile erscheint nur bei Berliner Objekten.

[0.1.0] - 2026-11-07

Hinzugefügt

  • Erste Veröffentlichung. freemapper erstellt aus amtlichen Geodaten Brandenburgs und aus OpenStreetMap ein Startprojekt für OpenOrienteering Mapper, als Kommandozeilenwerkzeug (init, fetch, derive, export, run) und als MCP-Server für KI-Assistenten.
  • Georeferenzierte Karte mit dem IOF-Symbolsatz für Sprintkarten 1:1000, Randinformationen (Nordlinien, Maßstabsleiste, Infoblock) und einem Hinweis, der freemapper und sein Repository nennt.
  • Orthophoto, Schummerung und Hangneigung als Vorlagen hinter der Karte sowie Höhenlinien und das nDOM, die freemapper aus den Geländedaten ableitet.
  • Gebäude aus ALKIS als Kartenobjekte.
  • OSM-Daten als Kandidaten: Zuverlässige OSM-Wege werden Kartenobjekte, der Rest bleibt als Kandidat zur Prüfung. Geofabrik-Auszüge werden zwischengespeichert, und freemapper nutzt den Cache, wenn Geofabrik nicht erreichbar ist.
  • Sprintkarten-Objekte: befestigte Flächen aus ALKIS-Verkehrsflächen und unbefestigte Wege aus OSM.
  • Verbotene Flächen für Privatgrund, abgeleitet aus der ALKIS-Nutzung.
  • OCAD-Export (--ocad, OCAD 12) mit Platzhalter-Symbolen.
  • Trainingskarte als einseitiges PDF (export --pdf, run --pdf, MCP-Option pdf).
  • Gebietsauswahl im Browser (freemapper select, MCP-Werkzeug open_area_selector) mit Ortssuche, Rechteck, Polygon, Kachelumrissen und Downloadschätzung.
  • Ortssuche über Nominatim (init --place) und Start aus OSM (init --osm). Der MCP-Server listet außerdem die Ebenen und liefert PNG-Vorschauen.
  • Release-Archive für Linux (x86_64 und ARM64), macOS (Apple Silicon und Intel) und Windows, jeweils mit SHA-256-Prüfsumme.

Behoben

  • Downloads haben Zeitgrenzen für Verbindung, Antwort und Inhalt, behalten bei ungültigem neuem Download die zwischengespeicherte Kopie und räumen alte Teildateien auf.
  • Eine vorhandene Karte bleibt bei einem erneuten Lauf erhalten. freemapper aktualisiert ihre Vorlagen und sagt das.
  • freemapper schützt bearbeitete Karten beim Export vor dem Überschreiben.
  • Fehlermeldungen nennen Produkt und nächsten Schritt. Maßstab 0 und Koordinaten außerhalb des gültigen Bereichs lehnt freemapper ab.
  • Fehler bei nicht abgedeckten Kacheln erscheinen in einem Bericht, und Läufe ohne Netz greifen auf zwischengespeicherte Daten zurück.