Repository navigation
Releases
freemapper v0.22.0
Added
- Tree cadastres of Köln, Dortmund and Frankfurt am Main (ADR 0065). A WFS answer that names no CRS and gives metres is read in the CRS asked, and field names may hold spaces.
- The training map (ADR 0140):
--trainingonrunandexport(onselectthe page default),training: trueon the MCP toolsstart_pipelineandopen_area_selector, and a box on the area page write<name>-training.omapand<name>-training.pdf, with--ocadalsoocad/<name>-training.ocd. It is for printing and running on as it is, and holds the map and the visible candidates together. So that no symbol lies on another, freemapper joins lines that meet end to end, takes street furniture off streets and squares, draws a park yellow only where the nDSM shows no trees, keeps only buildings, water, contours and the ways a runner can cross inside olive green areas (520; of a dead end a beginning of 1 mm stays when no fence or wall stands in front of it), moves trees, monuments and other point symbols up to 1.5 mm off ways, buildings, water and other points (never into olive green), cuts out what keeps less than the norm's gap (the lower-ranked object gives way; walls and impassable fences are only cut there, never left out whole), and leaves out what is below the norm's minimum size. Where a project has an nDSM but no tree cover yet, the training map keeps its parks whole and a warning says to runfreemapper deriveagain. Carriageways, tracks and paths running side by side still stand side by side there; merging them comes next. Arunkeeps an existing training map and says so,export --trainingstops on one;--forcereplaces it and the base map (the old ones stay as.bak). freemapper builds the training map from the stored data and the content settings, so corrections in OOM do not reach it; to renew only the training map, delete<name>-training.omap(with--ocadalsoocad/<name>-training.ocd) and run again without--force. The base map and the candidates stay the working material for mapping. - Tree cadastres of Leipzig, Frankfurt (Oder), Kiel and Norderstedt (ADR 0065). A tree cadastre can now be a WFS that answers GeoJSON (
[[extra.trees]] format = "wfs-geojson"withtype_nameandoutput_format), andfields.gonenames a field that leaves felled trees out. - Schleswig-Holstein: the tree cadastre of the Hansestadt Lübeck (ADR 0065). A tree cadastre can now be one CSV file of the whole city (
[[extra.trees]] format = "csv"withx_field,y_fieldandseparator); freemapper downloads it whole and cuts it to the area. In the old town of Lübeck 384 trees go onto the map and 43 to the candidates, in place of the OpenStreetMap trees at the same places. The example is rebuilt. - Hamburg: the street tree cadastre with genus, species and crown diameter (ADR 0065). A tree cadastre can now be an OGC API collection (
[[extra.trees]] format = "ogc-api", paged bynextlinks), and its survey date is optional. In Blankenese 13 street trees go onto the map and 4 to the candidates, in place of the OpenStreetMap trees at the same places. The example is rebuilt. - Permit notes: natural monuments and protected landscape features from Schleswig-Holstein, from the INSPIRE service of the protected sites (CC BY 4.0, ADR 0146, addendum). The service has gaps: the natural monuments come almost only from the Kreis Schleswig-Flensburg, the landscape features from Kiel, Lübeck and the Kreise Plön, Schleswig-Flensburg and Stormarn. The notes say so and send the reader to the lower nature authority for the others. The two examples have new notes.
- Permit notes: natural monuments and protected landscape features from Rhineland-Palatinate, from the nature conservation service of the Landesamt für Umwelt (Open Database License, ADR 0146, addendum).
- Rhineland-Palatinate: the landscape model of the LVermGeo RP (ATKIS Basis-DLM, ADR 0147). It is served there only in the AdV Shape schema; freemapper now reads that too (
[[extra.nas]] schema = "shape"). Its objects stay candidates: in Cochem 19 monuments and wayside crosses, 2 watercourses and a well, near Dahn a rock, 3 watercourses and 6 paths. The two examples are rebuilt. - Permit notes: natural monuments and protected landscape features from Lower Saxony, from the NLWKN's map service (ADR 0148). It has no WFS, only ArcGIS REST; freemapper now reads such services as a table too. In Lower Saxony the Landkreise keep the protected biotopes; the notes say so.
- Mecklenburg-Vorpommern: the full ALKIS and the landscape model (ADR 0062, ADR 0135). The full ALKIS puts stairs, walls and bridges straight onto the map: in the old town of Wismar 630 stairs, most of them short steps in front of house doors, and 138 walls; OpenStreetMap walls they double go. The landscape model adds candidates (trees, watercourses, paths). The two examples are rebuilt.
- Permit notes: natural monuments, protected landscape features and legally protected biotopes from ten states (ADR 0146): natural monuments from Brandenburg, Hamburg, Saarland, Saxony, Saxony-Anhalt, Bavaria and Baden-Württemberg, landscape features from Brandenburg, Saxony-Anhalt and Bavaria, protected biotopes from Brandenburg, Berlin, Hamburg, Saarland, Saxony, Hesse and North Rhine-Westphalia. When protected biotopes lie in the area, a hint says that whatever can destroy them or harm them considerably is forbidden and names their types; another names the lower nature authority with the Kreis. Biotopes of one type are one line with their share. The examples of these states have new notes.
- North Rhine-Westphalia and Lower Saxony: the full ALKIS (ADR 0062). In North Rhine-Westphalia it puts walls, retaining walls, stairs, embankment tops, bridges and single trees straight onto the map: 112 more map objects in the old town of Monschau, 113 in the Siebengebirge; OpenStreetMap objects they double go. Lower Saxony records less (bridges, a fountain, walls). The four examples are rebuilt.
- Schleswig-Holstein: objects from the landscape model of the LVermGeo SH (ATKIS Basis-DLM, ADR 0135) as candidates. In the Hüttener Berge that is 48 earth walls, a watercourse and 4 tracks; in Lübeck a watercourse. Both examples are rebuilt.
- Hesse: the full ALKIS and the landscape model of the HVBG (ADR 0135). The full ALKIS adds surveyed stairs to the map, 54 in the old town of Marburg; the landscape model adds candidates as in Bavaria (named trees, small watercourses, a dam and a wall in Marburg, a rock, a spring and a watercourse on the Feldberg). Both examples are rebuilt. For adapters: a manifest may now name one NAS service per model, so a state can serve its cadastre and its landscape model.
Changed
- The 30 examples are rebuilt with the state after ADR 0140: contours run across ways and paved areas (82 instead of 272 contour pieces in Viktoriapark), they are cut out at stairs (460 instead of 332 pieces in Blankenese), fence ticks point away from ways, and doubled OSM water and stairs are gone (7 instead of 12 water areas in the Bürgerpark, 41 instead of 67 OSM stairs in the old town of Bremen). The PDF of each example is now called the check print; the permit notes are unchanged.
- Contours run through ways and paved areas on every map, as ISSprOM 2019-2 (101) asks; this takes back the cut at ways of ADR 0097. They stop at stairs and at the small landform symbols 105, 109 to 112 and 115, on forest maps not at earth walls (105, which ISOM lets contours cross), and still below cliffs. North lines still stop at ways (ADR 0140).
- The ticks of a fence point inside when the fence is closed, otherwise to the olive green area beside it, away from a way along the fence, and to the park. With the same area on both sides they take the side where they overdraw nothing (ADR 0140, amends ADR 0097).
--pdf-candidatesis now called the check print: the base map with every visible candidate, true to position, for checking in the terrain. The file name<name>-candidates.pdfstays. The stronger generalization of cliffs of ADR 0126 and ADR 0134 no longer runs there but on the training map (ADR 0140).- Where there is an nDSM,
derivewrites the tree cover todata/tree-cover.tif: for each 1 m cell the share of ground under at least 3 m of nDSM height. The training map reads it (ADR 0140). - An OSM water area with islands that lies half on water from the cadastre is now dropped as a duplicate, like one without islands; before, freemapper read only its outer ring and kept it. In the Bremen Bürgerpark four such lakes lay 91 to 99 % on ALKIS water. An OSM stair that lies half on a cadastre stair is now dropped too, and the cadastre stair names it in
freemapper:also; in the Bürgerpark that was 6 of 23 (ADR 0140). - The examples overview, the README, the comparison and the manual show small WebP thumbnails; only a click loads the image at full resolution. The examples overview loads 1.6 MB instead of 6.6 MB. The PDF of each example is a link of its own below the image.
scripts/thumbnails.shmakes the thumbnails again after an example or a manual image is rebuilt. - The README links the examples overview at the top, next to the changes. In the examples overview the preview is now the first column.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.22.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.22.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.22.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.22.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- Hesse: the full ALKIS and the ATKIS Basis-DLM, one NAS service per model (ADR 0135) by @HenryJobs...
freemapper v0.21.0
Added
- Permit notes: monuments from Schleswig-Holstein (ADR 0145). The Landesamt für Denkmalpflege publishes its list only as one file for the whole state (about 52 MB, new each week, CC BY 4.0). freemapper downloads it the first time, keeps it in the cache and downloads it again only when the server has a newer one. Archaeological monuments and Lübeck's monuments are not in it; the notes say so. The two examples of Schleswig-Holstein have new notes.
- Saxony-Anhalt: objects from the landscape model of the LVermGeo (ATKIS Basis-DLM, ADR 0135), as in Bavaria: cliffs and rocks, springs, dams, monuments, fountains, fences, small watercourses and named trees as candidates, on forest maps also paths OpenStreetMap lacks. Rocks that the model draws as lines are cliff candidates (201) with their ticks turned downhill. In the Bode valley that is 27 cliffs, 20 rocks and 11 paths, in Quedlinburg 7 small watercourses; both examples are rebuilt.
- Permit notes: monuments also from Hesse, Baden-Württemberg, Bremen, Saxony, Brandenburg, Rhineland-Palatinate and North Rhine-Westphalia, from the open services of the monument offices (ADR 0144). When monuments lie in the map area outside Berlin and Hamburg, a new hint names the lower monument authority with the Kreis and the Gemeinde; before, no hint there said whom to ask, in Saarland neither. North Rhine-Westphalia's data are still being gathered, and Brandenburg's lack the Baudenkmale of Potsdam; a source with such gaps now says so in the notes, and the authority hint comes there without a finding too. A Stadtkreis in Baden-Württemberg now counts as its own lower authority like a kreisfreie Stadt, for the nature authority too. For services that answer only in their own CRS, freemapper now asks in metres and converts; it now also reads GML answers with points. A download whose gzip ends early (as with Saxony's monument service) is repeated once without compression. The examples of these states and of Saarland have new notes.
- Permit notes for Baden-Württemberg (ADR 0143): the water protection zones of the LUBW with their zone and the lower water authority in charge. A water protection area now names its authority too where the data give it; the hint then says "ask the lower water authority (untere Wasserbehörde, Landratsamt Ludwigsburg)". Names the register writes in capitals, in quotes and with a number (
\"MAHDENTAL\" 111032) are written as names ("Mahdental"). The notes now name water protection areas in every state. The LUBW does not publish zone I; it comes joined with zone II. - Permit notes: drinking water and medicinal spring protection areas of the Bundesanstalt für Gewässerkunde (BfG, WasserBLIcK, CC BY 4.0) for Bavaria, Lower Saxony, Bremen, Mecklenburg-Vorpommern, Rhineland-Palatinate, Saxony-Anhalt and Saxony (ADR 0142). These are the areas the states report to the BfG, with their names but without zones. The pieces of one area, often one per zone, are joined into one. Names from Lower Saxony that the service garbles ("Börßum") are written right in the notes ("Börßum"). The examples of these seven states have new notes. The BfG has no data for Baden-Württemberg either.
- Permit notes for Saxony (ADR 0139): the Forstbezirk and the Revier of the Staatsbetrieb Sachsenforst, Erholungswald, Naturwaldzellen, Bodenschutzwald and the drinking water protection zones in the forest, from two map services of Sachsenforst (dl-de/by-2-0, "Geodaten Sachsenforst"). A Revier is in charge in the state forest, the lower forest authority of the Landkreis for other forest; the notes say so. The services answer only for single points, so freemapper asks at up to 25 points over the map, up to 50 requests. The notes then say that the shares are estimates and that something between the points can be missing, and for an empty section they do not say "no water protection area" but that nothing is named at the points asked. The examples Bastei and Bautzen have new notes.
- Permit notes for Schleswig-Holstein (ADR 0137): the state forest with its Revier of the Schleswig-Holsteinische Landesforsten, the Naturwald and the water protection areas with their zone, from the Umweltportal of the Landesamt für Umwelt (CC BY 4.0). The service answers GML only; the table source now reads such services too. Names a service writes in capitals ("HÜTTEN") are written as names in the notes ("Hütten").
Changed
- Bavaria: the surface model (DOM20) is read by range, block by block (ADR 0141). freemapper reads only the blocks of 51 m that the map area needs instead of whole tiles of 32 to 56 MB, and a later map in the same tile reads only the blocks it lacks. On the Schmausenbuck that is 92 MB instead of about 212 MB, with the same surface model cell for cell. Copies cached before stay valid.
- Vegetation from laser point clouds (ADR 0138): the green shades 406, 408 and 410 now follow how much stands in the layer a runner moves through, the laser returns between 0.8 and 3 m among all returns below 3 m (from 20 %, 35 % and 50 %). Before, an index also counted the crowns, and tall forest without undergrowth scored almost as high as a thicket, because every flight the states publish is made without leaves. Measured on the Schmausenbuck against the canopy height of the summer pictures, 71 % of the thickets come out green (29 % before) and 7 % of the tall forest (11 % before). Parks and towns get more green areas (Sanssouci 205 instead of 54); forest maps change less, because their smallest area is larger. Pole stands with a clear stem space stay runnable forest. Existing maps get this with
run --force. The nine examples with vegetation are rebuilt.
Fixed
- Bavaria, objects of the landscape model (ADR 0135): a fountain of the model in an OpenStreetMap fountain basin or in drawn water is the basin's jet and goes, as an ALKIS fountain does; in the old town of Regensburg that is 2 of 5. A tower of the model goes beside an OpenStreetMap tower of the other tower symbol (524 and 525 count as one). When a map area leaves Bavaria, the note about removing its stored layers names the landscape model, not the full ALKIS.
- Permit notes: the table of sources showed the placeholder
{year}instead of the year of the fetch for the services of Saarland. It shows the year now, for the BfG too. The two Saarland examples are made again. - A folder adapter that names a built-in raster backend (
backend = "lgb"and the like) got no orthophoto, terrain model or surface model in the download estimate. The built-in backends now estimate their rasters themselves, with the same numbers as the states. The estimates of the built-in states stay as they are (issue #71).
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.21.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.21.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.21.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.21.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- Built-in raster backends estimate their rasters (closes #71) by @HenryJobst in #116
- Permit notes for Schleswig-Holstein (ADR 0137) by @HenryJobst in #117
- Vegetation: the green shades follow the density below 3 m (ADR 0138) by @HenryJobst in #118
- Permit notes for Saxony, asked at points (ADR 0139) by @HenryJobst in #119
- Water protection areas of the BfG for seven states (ADR 0142) by @HenryJobst in #120
- Bavaria: the DOM20 read by range (ADR 0141) by @HenryJobst in #121
- Water protection zones of Baden-Württemberg, with the authority in charge (ADR 0143) by @HenryJobst in #122
- Bavaria: fountains in basins, the two tower symbols, the note on leaving (ADR 0135) by @HenryJobst in #123
- Monuments from seven more states, and who looks after them (ADR 0144) by @HenryJobst in #124
- Saxony-Anhalt: objects from the ATKIS Basis-DLM, rock lines as cliffs (ADR 0135) by @HenryJobst in #125
- Monuments of Schleswig-Holstein from its statewide file (ADR 0145) by @HenryJobst in #126
Full Changelog: v0.20.0...v0.21.0
Fixture store 4 of the golden net
Test data for freemapper's own tests, not a program release. To install freemapper, take the
latest release.
The archive holds recorded answers of the open data services of German states for small test
areas (about 150 m square each) and the OpenStreetMap objects of the same areas. The tests replay
them, so they need no network. tests/golden/adapters/README.md in the repository explains how.
Each state's folder in the archive has an ATTRIBUTION.txt with the source and the licence of
its data. The OpenStreetMap objects are © OpenStreetMap contributors, ODbL 1.0.
Fixture store 3 of the golden net
Test data for freemapper's own tests, not a program release. To install freemapper, take the
latest release.
The archive holds recorded answers of the open data services of German states for small test
areas (about 150 m square each) and the OpenStreetMap objects of the same areas. The tests replay
them, so they need no network. tests/golden/adapters/README.md in the repository explains how.
Each state's folder in the archive has an ATTRIBUTION.txt with the source and the licence of
its data. The OpenStreetMap objects are © OpenStreetMap contributors, ODbL 1.0.
freemapper v0.20.0
Added
- Bavaria: objects from the landscape model of the agency (ATKIS Basis-DLM, ADR 0135). Bavaria has no service for its cadastre; springs, cave entrances, named rocks, free-standing towers, monuments and wayside crosses, fountains, fences, dams, small watercourses and named trees now come from there, on forest maps also paths and tracks. The model is made for 1:25 000 and accurate to about 3 m. Its objects therefore stay candidates and go where OpenStreetMap or another source has the same object: a point within 15 m, a line that runs within 10 m of a line of the same kind for 80 % of its length. On the Schmausenbuck 14 candidates stay, 6 of them paths OpenStreetMap lacks; in the old town of Regensburg 10. Both Bavarian examples are rebuilt. For adapters: a NAS service names its model (
[[extra.nas]] model, defaultalkis, newbasis-dlm). - Examples: each of the 30 examples in
examples/now has its permit notes (permits.mdandpermits.json, in German). They show what the notes give in each state, from the Bezirke and monuments of Berlin and Hamburg to the forest administration, water protection areas and classified roads. - Permit notes: a new section names the classified roads through the map area (Autobahn, Bundes-, Landes- or Staats-, Kreisstraße, with their number from OpenStreetMap), and per class a hint that the road traffic authority orders a closure or a crossing with marshals and who usually keeps the road (ADR 0133). It works in every state and comes from the OSM extract freemapper reads already.
- Permit notes: the files freemapper downloads for a whole state (about 32 MB in North Rhine-Westphalia, about 4 MB in Brandenburg) stay in the cache (folder
permits). A new fetch asks only for the date and downloads a file only when the server has a newer one; when it cannot be reached, freemapper uses the kept one (ADR 0132). - Permit notes: water protection areas also from Brandenburg (LfU, one file of about 4 MB) and North Rhine-Westphalia (one file of about 15 MB, also the planned areas, whose zone says "(geplant)"), both as a shapefile for the whole state (ADR 0131). A fetch in North Rhine-Westphalia downloads about 32 MB with it. freemapper reads the fields of a shapefile table without a
.cpgas Latin-1 when they are not UTF-8; umlauts there came out as replacement characters so far. - Permit notes from more states (ADR 0130): water protection areas with their zone from Berlin, Hesse and Saarland; forest functions from Brandenburg (Naturwald, Totalreservat, closed areas, Erholungswald), North Rhine-Westphalia (Naturwaldzellen, wilderness development areas) and Saarland (Naturwaldzellen, Urwald); in Saarland also the Revier of the SaarForst Landesbetrieb in the state forest and the listed buildings. freemapper describes these services only as a table of their layers; each keeps only the fields it reads. A zone the data write only as "I" or "III" is "Schutzzone I" in the notes. Bremen and Baden-Württemberg give no licence for their water protection areas in the service and stay out for now.
- Permit notes for Hamburg (ADR 0129): for a map area in Hamburg the notes name the Bezirk with its Bezirksamt, the public green spaces of the Grünplan, the monuments (garden monuments, ensembles, listed buildings) with the Denkmalschutzamt, the Revierförsterei of the Stadtwald, Bannwald and Erholungswald, and the water protection areas with their zone, all from six services of the Geoportal Hamburg. New for every state with such data: a hint for each water protection area in the area that says whether it is an inner zone (I or II), and hints on recreation forest, protected forest, natural forest and closed forest areas. freemapper takes none of the architects the Hamburg monument list names.
- Permit notes, step 3 (ADR 0124): in Brandenburg, Berlin and North Rhine-Westphalia the notes name the forest administration of the map area, each office with its Revier or district and its share: the Oberförstereien of the Landesbetrieb Forst Brandenburg, the Forstämter of the Berliner Forsten and the Regionalforstämter of Wald und Holz NRW. In North Rhine-Westphalia the share of state forest comes with them. A forest map gets the hint on the office in charge and that the forest owners must agree; in the other states only the second, with the sentence that the notes do not name the office there. In North Rhine-Westphalia a fetch downloads two files of about 17 MB together for this. freemapper takes none of the foresters' names and contact data in those files, not even into
data/permits/. - Forest maps in steep land get contours every 10 m instead of 5 m by themselves (ADR 0125). Steep means: on more than a tenth of the area the 5 m contours would lie closer than 0.35 mm and run into a brown area.
derivesays so in a line;--contour-interval 5keeps 5 m. Among the examples it is the Bode valley and the Bastei. - Bavaria: vegetation from laser point clouds (ADR 0128). With
--content-set vegetation=candidatesor the box on the area page, freemapper loads the laser points of the Bayerische Vermessungsverwaltung and puts open land, forest and the green shades into the candidates map, as in Brandenburg, Berlin, North Rhine-Westphalia, Rhineland-Palatinate and Saarland. A tile of 1 km² mostly has 100 to 600 MB; the estimate counts 250 MB. The date on the candidates is the day of the flight, which freemapper reads from the laser points; older flights do not name it, and there it is the day the file was made. The tiles lie on a third server,geodaten.bayern.de, which the adapter of Bavaria now names (revision 2). The Bavarian flights whose day is known were flown between November and February. Without leaves, shrubs and young growth often come out as runnable forest. The Schmausenbuck example is rebuilt with the vegetation (four tiles, 1.2 GB, flight of 20 December 2021). - Cliffs on forest maps are generalized (ADR 0126). OpenStreetMap maps rock country cliff by cliff; at the Bastei 2144 lines ran into a black area. freemapper reads each cliff on the terrain model: how high the rock stands above its slope and which side is lower. Low stretches go to the candidates map, rock pillars become the area 206, the highest cliffs are kept first and keep the gaps of the ISOM 2017-2; where the tags have no room the top line 201.3 stands, and two cliffs back to back become a rock fin. The cliffs are smoothed, the contours stop only below rock drawn, and knolls on the rock are hidden. The Bastei keeps 256 cliffs, 23 top lines and 26 pillars and fins; no square centimetre is more than 33 % black (before 230 %).
Changed
- Vegetation from laser point clouds (ADR 0136): the outlines now follow the edge of the vegetation instead of the 3 m steps of the cells. freemapper traces them on a raster three times finer and slightly blurred; corners are rounded a little. The nine examples with point-cloud vegetation are rebuilt.
- Cliffs on sprint maps (ADR 0134): sprint maps generalize their cliffs too, by the values of the ISSprOM 2019-2 (minimum height 1.5 m, minimum length 0.9 mm), and their training PDF more (cliffs from 3 m, no top lines without tags).
derivenow keeps the terrain mosaic of a state with tiled terrain for every map; so the ticks of banks and retained walls point downhill there too. - Cliffs on forest maps (ADR 0126): the training PDF generalizes the rock more than the map (cliffs from 5 m above the slope, no top lines without tags, longer pieces), also where the cliffs are only candidates; the candidates map keeps every OSM cliff. A cliff the orthophoto shows as rock goes first in the ranking; for that
derivewritesdata/rock-seen.tiffor forest maps. - Permit notes follow the map area, not the kind of map (ADR 0127). The forest hints and the section "Forest administration" come as soon as OpenStreetMap has forest in the area, also on a sprint or schoolyard map, and also when that cannot be told without an OSM extract. A map in the middle of a town no longer gets them, even when it lies in a Revier of Brandenburg. The operator of a school in the area is now named on every kind of map, not only on schoolyard maps.
- Examples: the Bode valley and the Bastei have contours every 10 m instead of 5 m; on the steep slopes they ran together into a brown area. The rocks of the Bastei come from OSM, not from the terrain model as the examples overview said so far.
Fixed
- Vegetation from laser point clouds: when tiles of different days lie under a map, the candidates now carry the oldest day instead of the newest. An area can lie on any of the tiles, so nothing newer can be said of it.
- Vegetation from laser point clouds: when two runs load the same tile at the same time, each has a partial file of its own. Before, they deleted each other's partial file and left the tile out with a warning. This affected North Rhine-Westphalia, Rhineland-Palatinate, Berlin, Saarland and Bavaria.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.20.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.20.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.20.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.20.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- Bode valley and Bastei examples with contours every 10 m by @HenryJobst in #98
- Permit notes, step 3: forest administrations (ADR 0124) by @HenryJobst in #100
- A steep forest map gets contours every 10 m (ADR 0125) by @HenryJobst in #99
- ...
freemapper v0.19.0
Added
- Bavaria (ADR 0123): maps in all of Bavaria, in UTM zone 32, also east of 12° E. The orthophoto comes from the map service of the Bayerische Vermessungsverwaltung, with the date of the flight. freemapper reads the terrain model (DGM1) tile by tile, about 2.8 MB each. Bavaria has no surface model at 1 m; freemapper takes the DOM20 of 20 cm (about 45 MB per km²), reduces it to 1 m and keeps only the reduced tiles. Bavaria has no service for its cadastre. So buildings and canopies come from the LoD2 tiles, one file per 2 km square (about 3 MB in the country, 60 to 160 MB in a city centre), and the land use from the file of each Kreis at the area (2 to 13 MB). Bridges and walls in LoD2 do not go onto the map. The estimate before the run lists all five downloads. freemapper downloads a cached file again only when the server has a newer one; offline (
--offline) the same map is made. Stairs, walls and embankments from the cadastre and vegetation from point clouds are not there for Bavaria yet. Examples: the old town of Regensburg (sprint map) and the Schmausenbuck in the Nürnberger Reichswald (forest map). Thuringia is now the only state without data sources; the warning for areas beyond the coverage names Thuringia alone. - Examples: a forest map (1:10 000) for every state; besides the Dammheide in Berlin, 13 new ones in
examples/, from the Elbe sandstone at the Bastei to the Bürgerpark in Bremen. They were chosen by relief and path network out of some 30 trial runs. In Brandenburg, North Rhine-Westphalia and Saarland they hold the vegetation from laser point clouds as candidates; in Rhineland-Palatinate the state office's Metalink file does not match the files for the tiles near Dahn, so freemapper leaves them out. The table is in the examples overview.
Changed
- Examples: the 14 sprint maps in
examples/are rebuilt, all but Regensburg, which already comes from the current code. They now show what version 0.18.0 draws. Small compact areas are no longer dropped (ADR 0122), so the old towns have more out-of-bounds areas (520) among the candidates and more paved areas (501.5) on the map: Lübeck has 1834 candidates instead of 1365, Wismar 1660 instead of 1416. With the compact path writer the 14 training maps take 5.6 MB together instead of 10.1 MB. The tables and numbers inexamples/README.en.mdand the comparison of the three content profiles for Cochem are counted again.
Fixed
- Saarland: in forest areas the ALKIS land use was missing with the warning "LVGL ALKIS returned 22 of 26 features in the area", also after a new
fetch. The service lists a forest once per vegetation feature (such as deciduous wood and short-rotation coppice), with the same object id and the same geometry. freemapper keeps one row of them and now counts the others towards the service's matches. A feature repeated on a later page is still an error. At the Saarschleife near Mettlach this brings 684 land use areas and 132 more out-of-bounds candidates.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.19.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.19.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.19.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.19.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- Saarland: forest land use no longer lost to rows of one object by @HenryJobst in #93
- Bavaria: the fifteenth state, its cadastre read from files (ADR 0123) by @HenryJobst in #94
- A forest map example for every state by @HenryJobst in #95
- Sprint examples rebuilt with the current code by @HenryJobst in #97
Full Changelog: v0.18.0...v0.19.0
freemapper v0.18.0
Added
- Baden-Württemberg (ADR 0119): maps in Baden-Württemberg, in UTM zone 32. The orthophoto comes from the map service of the LGL, with the flight date of the tile at the centre of the area. freemapper reads the terrain model (DGM1) and the surface model tile by tile out of the 2 km archives of the LGL, about 3.5 MB per tile. The surface is the nDOM1 from the aerial images of a summer flight: it shows the trees in leaf and usually comes from the flight of the orthophoto or the one before it. Buildings and land use come from the ALKIS service of the LGL. It holds whole buildings only, so no canopies, and street areas include the green beside them. OSM comes from the extracts of the four Regierungsbezirke (130 to 215 MB). Credit:
Datenquelle: LGL, www.lgl-bw.de, dl-de/by-2-0 (Daten geändert, <year>). Example: Heidelberg old town and castle. - Bremen (ADR 0121): maps in Bremen and Bremerhaven, in UTM zone 32. The orthophoto comes from the map service of the Landesamt GeoInformation Bremen, which has one layer per flight and city; freemapper takes the newest colour flight of each city (2025) and gives the flight year as the date. It reads the terrain model (DGM1) and the surface model (DOM1) tile by tile out of the archive of the city, about 3.5 MB per tile. Both come from the laser scans of 2017 (Bremen) and 2015 (Bremerhaven); freemapper warns at the fetch that newer buildings and trees may be missing from the nDSM. Bremen has no simplified ALKIS. Buildings, building parts, canopies and land use therefore come from the full ALKIS, which the LGLN runs for Bremen, with the same names as in the other states. The same service gives the surveyed lines as in Brandenburg: stairs, ramps, retaining walls, monuments, embankment tops and bridges. An area in Lower Saxony that reaches into Bremen now gets buildings and land use from Bremen's cadastre there, in place of the warning that it lies outside the supported states; that warning now names Bavaria and Thuringia as examples. The area page shows the aerial photo of the city of Bremen only, not of Bremerhaven. Credit:
© GeoBasis-DE / Landesamt GeoInformation Bremen (<year>), CC BY 4.0, Daten geändert. Example: old town of Bremen and Wallanlagen. - Permit notes in Berlin (ADR 0120): when the map area lies in Berlin,
permits.mdandpermits.jsonalso name the Bezirke with their share, the green spaces with their Bezirk and dedication, the number of public playgrounds, the share of the area owned by the state of Berlin and by the Bund (one line per owner; any other owner is not named and shares the line "Other public owners"), the monuments per kind with up to 20 links into the Denkmaldatenbank, and natural monuments, protected landscape features and areas with special rules. The hints then name, for each Bezirk that is more than an edge of the area, the Ordnungsamt, the Straßen- und Grünflächenamt, the lower monument authority and the lower nature conservation authority of the Bezirksamt. The data come from five services of the Geoportal Berlin (dl-de/zero-2-0, the licence text verbatim in the table of sources). freemapper asks them only when permit notes are wanted and the area lies in Berlin, and only through the hosts of Berlin's adapter. A service that is down takes only its own section with it. A region adapter can now bring such sources (RegionAdapter::permit_sources).permits.jsonstays at schema 1; older files anddata/permits/sources.jsonstill read. Described in the user manual, chapter 12.
Changed
- Smaller PDFs:
--pdfand--pdf-candidateswrite their paths with the compact path writer of freemapper-core 0.26.0 (freemapper-core decision 0033). Path coordinates are rounded to 1/1000 point. Small shapes of four points or more within 7 mm, such as the dots of point symbols, are written relative to their first point, so repeated symbols compress well. The 26 PDFs of the 12 example maps with data (Dammheide left out) shrink by 22 to 79 %, from 16.9 MB to 8.3 MB together; Sanssouci's map goes from 1.45 MB to 304 KB. The maps look the same: rasterised at 150 dpi with poppler, 6 of 113 million pixels differ by more than 12 %. Texts, fonts, colours, page size and the clip to the map area stay as they were. A shape with a coordinate that is not a finite number is left out instead of breaking the page. All libraries of freemapper-core move to v0.26.0; 0.26.0 changes nothing else for freemapper. - School and forest maps: the minimum sizes of the norm now grow with the symbols (ADR 0118). On a school map (symbols at 125 %) the smallest building or canopy is 0.625 mm instead of 0.5 mm, on a forest map at 1:10 000 (150 %) 0.75 mm; likewise the shortest line by ISSprOM 4.5, the smallest areas of out-of-bounds land, paving, green, open land and water, the shortest contour and the smallest contour ring, landforms and the smallest vegetation area. Such maps show a little less small detail. Sprint maps (100 %) stay the same. The contours, landforms and vegetation of an existing project change only when
deriveruns again. The Dammheide example is rebuilt with it. Most of what went are small buildings and canopies in the settlements and short index contours: 560 buildings instead of 757, 7 canopies instead of 24. - Internal: lengths on paper now have a type (ADR 0118). A paper measure (
PaperMm) holds on the printed sheet, a symbol measure (SymbolMm) grows with the symbol enlargement of the map kind and cannot be converted without it. The roughly 45 hand-written conversions to ground metres and map coordinates are replaced; the norm's line gap, line widths and point sizes are written down once inbuild/symbol_measures.rs. No measure changes, the maps stay the same. - Internal: the rule for overlapping walls, fences and hedges now converts its distances like every other rule (addendum to ADR 0118). On a forest map at 1:10 000 two limits move by the last digit of the floating-point number; all other maps compute as before. The shortest stubs of a cut line stay 1 mm on the sheet and do not grow with the symbols; that is now decided. Four tests of the order of the map assembly run without a project folder (
build/assembly.rs).
Fixed
- Baden-Württemberg: when the server answers 404 for the 2 km archive of a block that holds a tile inside the state, the fetch of the terrain now stops with an error that names the archive's address (for the surface model a warning names it), instead of leaving a 1 km hole in the templates with only a warning about a missing tile.
- Small compact areas are no longer dropped as "too narrow" (ADR 0122). Out-of-bounds land, paving, green, open land and water leave out slivers: pieces below (1 mm)² or narrower than 1 mm. The width used to be 2 · area / perimeter, which is only half the side of a square: a square piece needed a side of 2 mm to count as 1 mm wide. Now the short side of the rectangle with the same area and perimeter counts. On forest maps 1 mm of the norm is 15 m on the ground; there, plots up to 30 × 30 m fell out of the out-of-bounds areas and left white holes in the settlements. The Dammheide example now keeps 144 of 146 out-of-bounds areas (113 without the fix) and 9 of 10 open-land areas (2 without). Sprint maps gain a few small pieces, mostly out-of-bounds candidates of 40 to 100 m²; no area that was drawn before is dropped. Strips are as wide as before, and the rule for narrow ALKIS water (a candidate below 2 m mean width) stays.
- Forest maps: the north lines are now 20 mm (1:15 000) or 30 mm (1:10 000) apart, 300 m on the ground, as ISOM 2017-2 requires; before they were 450 m apart, as in ISOM 2000. The Dammheide example is rebuilt with it.
- The OCAD hint after
--ocad: on a forest map freemapper told you to load the ISSprOM 2019 or school symbol set in OCAD. The hint now names the set of the map kind: ISOM 2017-2 for forest maps, ISSprOM 2019 for sprint maps, the IOF school set 2019 for schoolyard maps. The same goes for the summary through MCP and on the area page. The README now names ISOM 2017-2 as well.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.18.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.18.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.18.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.18.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- Paper and symbol measures are types (ADR 0118) by @HenryJobst in #81
- Permit notes in Berlin: Bezirk, green spaces, public land, monuments and Naturdenkmale by @HenryJobst in #83
- School and forest maps: the norm's minimum sizes grow with the symbols (ADR 0118) by @HenryJobst in #84
- Baden-Württemberg: the thirteenth state (ADR 0119) by @HenryJobst in #82
- Smaller PDFs: paths through core's compact path writer (core v0.26.0) by @HenryJobst in #85
- Dammheide example rebuilt with the minimum sizes of ADR 0118 by @HenryJobst in #86
- Bremen: the fourteenth state (ADR 0121) by @HenryJobst in #87
- OCAD hint names the symbol set of the map kind by @HenryJobst in #88
- Forest maps: north lines 300 m apart, as ISOM 2017-2 says by @HenryJobst in #89
- Small compact areas are no longer dropped as slivers; Dammheide rebuilt (ADR 0122) by @henryj...
freemapper v0.17.0
Added
- Forest map example: Dammheide in Berlin, 1:10 000, with the OOM map, the OCAD starting point and the candidates PDF (ADR 0116).
- Forest maps (ADR 0116): the contour interval can be set when making a map:
--contour-interval <metres>|autooninit,deriveandrun, the MCP parametercontour_intervalofcreate_projectandstart_pipeline(0 means automatic), and the field "Contour interval" on the area page, also for an existing project. The choice is saved infreemapper.toml, and the nextderivetraces the contours at it. A value that is no positive number is refused before a project folder is made. - Permit notes (ADR 0117):
freemapper permits <dir>andrun --permitswritepermits.mdandpermits.jsonnext to the map. For the map area the file names the state, Kreis, Amt and Gemeinde from the BKG's VG250, the protected areas of the BfN, further protected areas and the operators and owners from OpenStreetMap, each with its share of the area, and says whom one usually asks. It is a hint, not legal advice. The notes are made only on request; only then does freemapper askgeodienste.bfn.deandsgx.geodatenzentrum.de. It reads the OSM extract from the cache, and--offlinetakes the data stored indata/permits/. The area page has the option "Permit notes" for it, the MCP server the toolpermits_for_area(a job;project_statuscarries the text aspermits_md) andpermitsonstart_pipelineandopen_area_selector.project_statusnow lists the written files (files) of every job. The map,freemapper.tomlandATTRIBUTION.txtstay unchanged. Described in the user manual, chapter 12; the chapters after it move up by one. - Forest maps (ADR 0116, addendum): when the contour interval is not the kind's, for example 2.5 m in a flat forest,
derivewrites it intofreemapper.tomlas[contours] interval_m. freemapper-print reads it there through the suite contract (freemapper-core 0.25.0) and no longer proposes 5 m. Projects at the kind's interval keep their file unchanged. - Forest maps (ADR 0116):
--kind forestmakes a map after ISOM 2017-2 at 1:15 000 (default), 1:10 000 or 1:7500, with the symbols at 100, 150 or 200 %. It is meant for a quick training in small forests. The paths come from OSM and go straight onto the map, sorted into the path classes 502 to 507; stairs become 532. Sidewalks along roads, crossings, driveways and parking aisles are left out. The forest stays white paper: where OSM or ALKIS says forest, freemapper draws no open land, not over ALKIS parks either. The only green is OSM scrub, as a candidate. Contours lie every 5 m, every 2.5 m in flat land;contour_interval_minfreemapper.tomlsets the interval. The symbol set is ISOM 2017-2 from OpenOrienteering Mapper with the colours of IOF Rev. 4. Tried on the Dammheide and the Mittelheide in Berlin. The help, the MCP server and the area page know the kind, its scales and its error messages.
Changed
- freemapper-core 0.25.0: the suite contract knows the scales of the forest map (0.23.0) and the contour interval in
[contours] interval_m(0.25.0), and freemapper writes both. - Internal: placing the objects by the content settings now lives in the new module "map assembly" (
build/assembly.rs, ADR 0115) instead of between the file reads of the project. It reads no file and can be tested with a few objects in memory. First of three steps; the maps stay byte for byte. - Internal: resolving the duplicates between the sources (register before ALKIS before survey before OSM) and the point generalization now live in the map assembly too (
assembly::resolve, ADR 0115, step 2). The project draws the sources and hands them over; the order of the steps is in one place. - Internal: the map assembly now builds the whole map from the data that was read (
assembly::build, ADR 0115, step 3). The project reads the folder in one place and makes the documents from the result; contours, landforms and vegetation are drawn in modules of their own underbuild/. A test can build a map without a project folder. - Internal: which of Berlin's layers are registers is said in one place only, in Berlin's adapter. The rank of duplicate objects, the draw rules for trees and the credit read it from there instead of from lists of their own. Maps and credits do not change (update in ADR 0114).
- Internal: a tree cadastre is asked under the host rules of the adapter that brings it and counts for that adapter's ground. Before, the engine looked the adapter up by the id in the row of the cadastre. Had the row named another adapter of the registry, the cadastre would have been asked for that adapter's ground and under its host rules; with an unknown id it was left out. No adapter of today was affected: a manifest always writes its own id (update in ADR 0114).
Fixed
- Forest maps (ADR 0116): impassable vegetation is ISOM 2017-2 410 instead of the first edition's 411. The path classes 502 to 505 belong to the content group
paths, so--content-set paths=candidatesmoves every path. Stairs taggedincline=downrun uphill as on sprint maps. A forest map no longer fetches the areas and kerbs of the Berlin street survey or the city tree cadastres, which it does not draw. The test whether an area is flat reads the terrain model every 5 m only. The margin names the interval the contours were traced at, also whencontour_interval_mwas changed since. - Hamburg, Saarland, Saxony-Anhalt and adapters from folders: when the surface model cannot be fetched, a model stored earlier stays only if it covers the map area, and the warning names the day it is from. Before, the model of another area stayed in the project with its record, and the warning spoke of a missing nDSM template in every case, even when
derivestill made one from the old model. The other states already behaved this way.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.17.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.17.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.17.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.17.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- A tree cadastre is asked by the rules of the adapter that brings it by @HenryJobst in #68
- Which of Berlin's layers are registers is said once, in the adapter by @HenryJobst in #70
- refactor(build): placing moves to the map assembly (ADR 0115, step 1) by @HenryJobst in #69
- A surface model that fails keeps a covering one and drops another, in Saarland, Hamburg and declared rasters too by @HenryJobst in #73
- Forest map kind (ISOM 2017-2, ADR 0116) by @HenryJobst in #74
- refactor(build): the map assembly resolves the duplicates (ADR 0115, step 2) by @HenryJobst in #72
- Forest maps: the minor review findings (ADR 0116) by @HenryJobst in #75
- refactor(build): the map assembly builds the map from stored data (ADR 0115, step 3) by @HenryJobst in #76
- Permit notes for a map area: protected areas (BfN), administrative units (VG250) and operators (OSM) by @HenryJobst in #77
- Forest maps: the sidecar names a contour interval that is not the kind's (core v0.25.0) by @HenryJobst in #78
- The contour interval can be set on the command line, through MCP and on the area page (ADR 0116) by @HenryJobst in #79
- Example: a forest map of the Dammheide in Berlin (ADR 0116) by @HenryJobst in #80
Full Changelog: v0.16.0...v0.17.0
freemapper v0.16.0
Added
- Vegetation from laser point clouds in Saarland too (ADR 0105): LVGL offers the 2025 point cloud in six large zip64 archives by district, on the same share as the height models. freemapper reads only the tiles of the map area out of them by byte ranges, about 40 MB per square kilometre, and checks them against the archive's CRC. The scan was made in February without leaves, and the point cloud is thinned to one point per 0.5 m; freemapper still finds the crowns. Checked on the old town of Saarlouis. Saxony gets no point clouds for now: GeoSN took them off its download area in November 2026.
- Vegetation from laser point clouds in Rhineland-Palatinate too (ADR 0105):
fetchloads the LAZ tiles of LVermGeo RP, mostly 110 to 500 MB per square kilometre, and keeps a tile only when its size and SHA-256 match the Metalink file of the state. The day of the scan comes from the metadata of the tile; when the tile is cached, freemapper asks only for that. Checked on the Stadtpark in Mainz. - Vegetation from laser point clouds in Berlin too (ADR 0105): the Geoportal Berlin offers the point cloud only in nine large zip64 archives. freemapper reads just the tiles of the map area out of them by byte ranges, about 240 MB per square kilometre, checks them against the archive's CRC and keeps them in the cache as LAZ (about 100 MB). The 2021 scan was made without leaves, so freemapper recognises dense shrubs there less well. Checked on the Viktoriapark.
Changed
- The manual's pictures of the area page are taken again (area selection, options, progress), with a new picture of the section "What goes onto the map" and all its groups. The hint of the profile "Balanced" on the page now says what the profile does: contours and the areas that shall not be entered along railway tracks go onto the map, and stairs, banks, monuments and passages also come from OpenStreetMap.
- The examples Sanssouci, Viktoriapark, Monschau, Cochem and Saarlouis are rebuilt with
--content-set vegetation=candidates: their training maps now show the vegetation from the point clouds. The map objects of the first four are unchanged; Saarlouis has 109 street areas instead of 32 and the Saar from ALKIS, through the fix of the land uses. Bautzen stays without vegetation, because Saxony offers no point clouds at present. - The boundaries of Lower Saxony and Schleswig-Holstein no longer overlap in the mouth of the Elbe. The cadastres of both states hold the same 89 km² of water off Cuxhaven; freemapper now splits that area at the line of equal distance from the two claim lines (ADR 0113). Maps do not change, the area is open water.
- The adapter guide says what a code adapter can bring beyond the cadastre and the rasters: sets of extra layers and raster templates. ADR 0114 records how Berlin's registers and the K5 moved from the engine into the adapter and what stays open.
- Internal: the engine no longer asks "is this Berlin?" anywhere. The warning about missing buildings, the list of templates and every fetch for an adapter go through the registry; the K5 service lives with Berlin's adapter, the reader of stored layers in
freemapper-sources. A test holds that the engine names no state outside the draw rules and reaches into the adapter crate only at the lines listed there. Maps, messages and files do not change. - Internal: an adapter can name raster templates it fetches with code of its own (
RegionAdapter::templates). Berlin's map 1:5000 (K5) is the first: the engine asks the adapter of the registry and takes the date, the messages and the item of the estimate from there. The template, the messages and the estimate do not change. - Internal: an adapter can name sets of extra layers it fetches with code of its own (
RegionAdapter::extras). Berlin's registers and surveys are the first such set: the engine asks the adapter of the registry instead of calling the Berlin module, and takes the item of the estimate from there too. Maps, messages, files and estimates do not change; the one exception is under "Fixed". - Internal: the extra layers of a project (Berlin's registers, the full ALKIS, the tree cadastres) are fetched, stored, removed and read in one place instead of in three equal copies. A first step towards an engine that names no state; maps, messages and files do not change.
- Internal: the modules in
freemapper::sourcesthat only passed on what has lived infreemapper-adapters-deandfreemapper-sourcessince the adapter work are removed, and so is the raster fetch for Saxony-Anhalt in program code that nothing used any more. The state still fetches through the services its manifest names; maps and requests do not change.
Fixed
- Vegetation from point clouds stops at areas that shall not be entered (520). Before, the forest candidates punched white holes into the olive green private gardens and courtyards of the candidates map and the training PDF, because the white of the forest lies above the olive green in the colour order. On the map this holds for the areas of the map, in the candidates for those of the map and of the candidates (ADR 0105).
freemapper adapters check --livefor an area near Berlin no longer fetches Berlin's registers and the K5 template when another adapter is checked. Before, those requests went out without the host rules of Berlin's adapter, and the next command dropped the records again.- Saarland: the WFS of LVGL writes the land use classes
StrassenverkehrandFliessgewässer. freemapper knew onlyStraßenverkehrandFließgewässer, so Saarland maps lacked the street areas from ALKIS, the rivers from ALKIS and everything that depends on them, and the vegetation from the point cloud put open land on the streets. Every land use class from a WFS is now brought into the LGB spelling, as for Hamburg already; in Rhineland-PalatinateUnland, Vegetationslose Flächethereby readsUnland/Vegetationslose Flächeas everywhere else.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.16.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.16.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.16.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.16.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- ci: pull requests run on Linux unless labelled all-systems by @HenryJobst in #56
- Remove the re-exporting source modules and the unused backend of Saxony-Anhalt by @HenryJobst in #57
- feat(vegetation): point clouds of Saarland; Saxony has none for now by @HenryJobst in #58
- Split the mouth of the Elbe between Lower Saxony and Schleswig-Holstein at the line of equal distance by @HenryJobst in #59
- fix(saarland): land use classes in the LGB spelling by @HenryJobst in #61
- Extra layers, step 1: one mechanism for Berlin's layers, the full ALKIS and the tree cadastres by @HenryJobst in #62
- Extra layers: the review points of step 1 (table keys, one lookup, tests, changelog) by @HenryJobst in #63
- Extra layers, step 2: an adapter names its sets and the engine asks the registry by @HenryJobst in #64
- Extra layers, step 2d: the K5 map is a raster template of Berlin's adapter by @HenryJobst in #65
- Extra layers, step 3: the engine names no region outside its draw rules by @HenryJobst in #66
- Extra layers, step 4: ADR 0114 and the adapter guide by @HenryJobst in #67
- Vegetation stops at out-of-bounds areas; four examples rebuilt with point-cloud vegetation by @HenryJobst in #60
Full Changelog: v0.15.0...v0.16.0
freemapper v0.15.0
Added
- New template local relief (
templates/relief.png, layerrelief): the terrain model minus its smoothed mean. Banks, mounds, hollows and ditches stand out light or dark; the general fall of the ground disappears. It is hidden in the map and can be switched on in OOM. - New candidates from the terrain model (ADR 0104): small knolls (109), small elongated knolls (110), small depressions (111), earth banks (104) and, from 3 m high, impassable cliffs (201). They show what the contours of sprint and schoolyard maps miss: play mounds, sledging hills, hollows, terrace edges. A knoll has to be at least 1 m high on a sprint map and 0.5 m on a schoolyard map, and narrow enough that the contours do not show it already. The ticks of banks point down. None are made at buildings, in water or next to walls, fences and banks already drawn. All of them are candidates to be checked in the terrain (all of them belong to the new group
landforms, banks and cliffs too;fullor--content-set landforms=mapputs them on the map, whileslopes=mapstill takes only the banks of ALKIS and OSM); the DGM1 often misses walls narrower than a metre. Knolls and depressions do not come on residential, mixed, commercial and traffic land or in allotments, depressions not within 8 m of a building; cliffs along streets and buildings are offered as impassable walls (515), and bent steps are split into pieces that follow them.derivewrites them todata/landforms.geojson. The ideas come from karttapullautin and omapmaker; the code is written anew. - Vegetation from laser point clouds (ADR 0105), in Brandenburg and North Rhine-Westphalia: open land (401), runnable forest (405), the green shades 406, 408 and 410, and undergrowth (407, 409) as candidates. The new content group
vegetationis off in every profile;--content-set vegetation=candidates(or=map, or the area page) makesfetchload the classified point clouds of LGB or Geobasis NRW for the map area into the shared cache, about 160 MB per square kilometre tile in Brandenburg and mostly 50 to 165 MB in North Rhine-Westphalia (each NRW file is checked against the size its index gives), which the download estimate and the disk check count. They are the first part left out when the disk is short, and a failing download keeps the cached tiles.derivewritesdata/vegetation.geojson, leaving out synthetic fill points, cellar points and bridges, the returns at buildings and the cells whose high returns are mostly single echoes (roofs, also those the cadastre no longer has); the export cuts the areas at buildings, water and paved areas and, where the map already has a park or wood of the same symbol, shows only the part that differs. Checked on Sanssouci and the Volksgarten in Cologne.
Changed
- Internal: the tests run faster. The dependencies are fully optimized in the development build too (built once, then cached); our own crates stay unoptimized. In CI the
checkjob drops from 8 to 10 minutes to 5.5 to 7, the golden net from 2 to 3 minutes to 1 to 2 per system; the outputs of the golden net stayed byte-equal. CI writes line numbers only as debug information, and a newer push to a pull request cancels its older run. The first debug build after updating compiles the dependencies once more; the release build does not change. - All twelve examples are rebuilt with the default profile
balanced. Ten of them predated the content profiles; now contours, paths, stairs, walls and trees are on their maps, and the candidates are mostly out-of-bounds areas, control sites and earth banks. The comparison page shows one area, Cochem, in the three profilessafe,balancedandfull, with a PDF each. The numbers in the examples overview and the manual are counted again. - MCP: what the server finds wrong with the person's adapter folders at its start (a folder left out, or one that loads with a caveat) now comes once as a note with the first tool result. Before, it went to stderr only, which neither the agent nor the person sees.
- MCP:
preview_layerwith the layermapshows the image of the map objects that the last run wrote next to the map (without the candidates). Before the first run the message namesfreemapper exportorrun. - Two adapters share ground when their common area is more than a hundredth of the smaller region. Before, one inner point of each was tested, so an adapter that reached a third of the way into a state went unnoticed.
adapters list,adapters checkand the warning about the adapters of a project use the new measure. All three now name the regions by name, not by id; the JSON ofadapters listkeeps the ids. - The message about an adapter the program does not have says that a newer freemapper may bring it.
- The message about a redirect freemapper does not follow starts with the refused address and then names, in brackets, the address that redirects there. Before, the address that was asked came first and was called "this address".
- The example Treppenviertel Blankenese is rebuilt with the default profile
balanced: contours, paths and 110 stairs from OpenStreetMap are on the map now (1780 map objects, 755 candidates). The comparison page says which examples were made before the content profiles and gives the measurements for Blankenese and Saarlouis. - Internal: after the adapter work the golden net still records four states (Brandenburg, Berlin, Saxony-Anhalt, Hesse), one of each kind of fetch; the layers that need no recording still check all eleven states that were program code before the rework (Saarland has tests of its own). The fixture store of the tests shrinks from 206 to 79 MB.
Fixed
- Map preview: when the area page is open in two tabs and both change a setting shortly after each other, the overtaken tab no longer shows "A newer preview was asked for meanwhile". It asks again and gets the image of its own settings.
- MCP:
list_layerslists the K5 template only for projects whose area touches Berlin, or when its file is in the folder. Before, every project listed it, and outside Berlin it never got ready. - Saarland: a district archive that cannot be read (renamed, or its server down for a moment) no longer stops the fetch when the tiles of the area are in other archives. When an archive is down, its directory from the last run is used; maps whose tiles are in the cache already are still made. A warning with the address of the archive says so in both cases. A cancel, an address freemapper does not ask and a write error on this computer still stop the fetch at once.
- A folder in the adapter folder whose name starts with a dot (
.git) no longer causes a warning on every command. - A pre-release version of the program (
x.y.z-rc.1) no longer aborts while loading the adapters; it counts as its release. - An estimate with nothing left to download says 0 MB, not
-0.0(estimate_downloadof the MCP server). - In the release archive the links of the READMEs to the examples, the ADRs and the design led nowhere. They now point to the repository.
Download the archive for your system, unpack it and start freemapper
(Windows: freemapper.exe) from a terminal or register it with your AI assistant.
Installation and first steps: see README.md (Deutsch) / README.en.md (English) in the
archive or https://github.com/HenryJobst/freemapper#readme
- Windows: freemapper-v0.15.0-windows-x86_64.zip
- macOS Apple Silicon (M1 and newer): freemapper-v0.15.0-macos-arm64.tar.gz
- macOS Intel: freemapper-v0.15.0-macos-x86_64.tar.gz
- Linux: freemapper-v0.15.0-linux-x86_64.tar.gz (ARM: linux-arm64)
The .gz files and freemapper-update.json with its signature are for freemapper update.
What's Changed
- Examples: Blankenese rebuilt with its stairs; comparison page updated by @HenryJobst in #51
- Golden net: four recorded states, fixture store version 2 by @HenryJobst in #49
- Adapters: shared ground by area, sturdier Saarland archives, small ends by @HenryJobst in #50
- fix(select): an overtaken live preview asks again instead of showing the 409 by @HenryJobst in #52
- feat(mcp): map preview layer, K5 only in Berlin, adapter warnings for the agent by @HenryJobst in #53
- Small follow-ups of the adapter work: names in check and list, redirect message, zero estimate, docs by @HenryJobst in #54
- ci: faster test runs (optimized dependencies, lighter debug info) by @HenryJobst in #55
Full Changelog: v0.14.0...v0.15.0