MapLab3D HD big
← MapLab3D
MapLab3D example project: Map of Heidelberg
This is a detailed guide on how to use the MapLab3D app to create a multicolored, 3D printable map of Heidelberg. The aim is to familiarize yourself with the basic functions of the MapLab3D app by following this example.
The example was created using MapLab3D version 1.1.0.0. The result may differ if you use a different version or different default settings.
You can also follow the example with an area other than Heidelberg, but the area should be approximately the same size and you should choose the same scale, otherwise the map may consist of map objects with different object numbers.
Creating a map with the manual adjustments explained here requires experience and is time-consuming to achieve optimal results. Please allow sufficient time for this. If you want quick results, here is a simple example: Small map of Heidelberg.
Preparation
As preparation, the programs MapLab3D and Osmosis must be installed. To do this, follow the instructions given in MapLab3D and Osmosis.
Prepare project parameter data set
Create a project directory (for example: ...\MapLab3D\Heidelberg\), copy the project parameter file (here: MapLab3D_ProjectParameters_1_1_0_0.xlsx) into this directory and open it. This ensures that all changes to the project parameters are saved together with the project's save states.
Next, the data set to be used is selected in the project parameter file. DATASET_1 serves as a template and should not be changed, so the prepared DATASET_2 column is used and the content is replaced. With these changes in the “PROJECT” and ‘DATASET_2’ columns, the “DATASET_2” column is selected when loading the project parameters:
| A | B | C | D | E | F | … | … | Q | … | … | T | … | X |
| 10 | project | N | 1 | 1 | projectname | S | Heidelberg | Name of the project (in detail) |
| 11 | project | N | 1 | 1 | filename | S | HD | Part of the file name that shows the project name (in short) |
| 15 | general | N | 1 | 1 | projectname | S | Heidelberg | Name of the project (in detail) |
For a better overview, columns that are not required are hidden here.
The file name should also appear in the DATASET_2 column for documentation purposes:
| A | B | C | D | E | F | G | H | I | J | … | T | … | X |
| 19 | general | N | 1 | 1 | comments | N | 1 | 1 | filename | S | HD | Comments: part of the file name that shows the project name (in short) |
Now check the following default settings because they influence the number of tiles required, which will be defined in the next steps:
| A | B | C | D | E | F | G | H | I | J | … | T | W | X |
| 47 | Maximum object size: Example: Many 3D printers have an installation space of at least 210x190mm. If the space required for a skirt of at least 3mm is subtracted, a maximum object size of 204x184mm remains. |
| 48 | 204 | mm | Maximum object size in x direction |
| 49 | 184 | mm | Maximum object size in y direction |
| 50 | Tile size:
A large map can be made up of many rectangular tiles. The tile size should be selected smaller than the maximum object size so that the objects can overlap the tile edges (e.g. if a road runs along a tile edge). The tile size at the edge of the map is additionally reduced automatically by the width of the frame so that the frame also fits into the printer's installation space. |
| 51 | general | N | 1 | 1 | tile_width_ preset | N | 190 | mm | Tile size in x direction |
| 52 | general | N | 1 | 1 | tile_depth_ preset | N | 170 | mm | Tile size in y direction |
| 53 | Frame size:
The frame parts are glued to the map from the side and from below, so the frame height also includes the thickness of a base plate. The frame height should be corrected again at the end depending on the height of the terrain at the edge of the map. If no base plate is required because there is only one tile, the thickness of the base plate can be set to zero. |
| 54 | frame | N | 1 | 1 | b2 | N | 20 | mm | Outer frame width |
| 55 | 13 | mm | Total frame height without mounting plate |
| 56 | 12 | mm | Thickness of the mounting plate to which the tiles are glued |
Save the changes in the project parameter file.
Prepare the OSM-Data
Select the Area
Open the web site OpenStreetMap. Zoom into the desired area and select Export. With “Manually select a different area”, the boundaries of the area are displayed on the map. Move the boundaries with the mouse to select the desired area.
For small areas, the data can be downloaded directly with “Export” and the preparation of the OSM data would be complete. This is not possible in this example.
Note: If the map is large or is intended to represent a large area such as an entire country, the execution time of certain functions can be very long. In this case, the settings should first be tested on one or more small sections of the area.
Set the scale and size of the map
Start the MapLab3D program. Load the project parameters (“Menu: File - Load project parameters”). The project directory must also be selected now.
Switch to the lon.lat x-y tab.
- Enter the maximum and minimum longitude (lon) and latitude (lat) in the “Osm data” area.
- Copy the longitude and latitude of the bounding box center to the top in the “General data” area. This is necessary in order to be able to clearly calculate the lat,lon values when changing x,y values.
- The “Osm data” area contains the total size of the map in mm (printout size) and the number of tiles required. The desired map size is now set using the scale. In this example, the scale number 35000 is selected so that the map consists of two adjacent tiles.
- The size of the map can now be set even more precisely: The maximum tile depth here is 170mm, the frame width 20mm. This results in a maximum depth of the map (printout size) of 170mm-2*20mm=130mm. In the “Map printout limits” area, the rounded values ymin=-65mm and ymax=65mm are now entered accordingly, thus making maximum use of the available tile depth. Rounded values are also entered for xmin and xmax.
The result of the previous steps looks like this (marked in red, the numbers correspond to the steps in the previous section):
The section of OSM data to be loaded should be larger than the size of the map (printout size):
- to recognize incomplete objects at the edge of the map and
- for later corrections of the map section: The printout limits can also be changed later, but only within the area of the loaded OSM data.
With “Distance between OSM-data and map printout limits / mm”, the range of the OSM data can be extended. The following applies: If the values under “General data” are changed, the black-framed values are retained.
Next picture:
Here, the range of the OSM data is extended by 40mm (marked in red in the next image). You can see: The longitude and latitude values under “Map printout limits” have changed, the x,y values have remained the same:
Now enter the values highlighted in blue into the project parameter file. The current line numbers are displayed in the app. However, if changes are made to the project parameter file or if a different program version is used, the line numbers may differ from those in this example.
It is necessary to specify the scale:
| A | B | C | D | E | F | … | … | Q | … | … | T | … | X |
| 12 | project | N | 1 | 1 | scale | N | 35000 | Scale |
Enter the scale also here for documentation purposes:
| A | B | C | D | E | F | G | H | I | J | … | T | … | X |
| 20 | project | N | 1 | 1 | comments | N | 1 | 1 | scale | S | 35000 | Comments: scale |
Transfer the data under “General Data” lines 40 and 41 to the Excel table. This data corresponds to the longitude and latitude at x=0 and y=0 in the x,y plane.
| A | B | C | D | E | F | … | … | … | … | … | T | W | X |
| 40 | general | N | 1 | 1 | origin_user_lon | N | 8.70362 | degree | Origin longitude |
| 41 | general | N | 1 | 1 | origin_user_lat | N | 49.41222 | degree | Origin latitude |
The specification of “Distance between OSM-data and map printout limits / mm” in the Excel table is optional. This means that the corresponding value is only re-entered in the edit box in the “lon,lat - x,y” tab when the project parameters are reloaded:
| A | B | C | D | E | F | … | … | … | … | … | T | W | X |
| 280 | general | N | 1 | 1 | dist_osm_ printout | N | 40 | mm | Distance between OSM-data and map printout limits |
The lon-lat values, which are extended by 40 mm compared to the map printout limits, are entered in the Excel table in the “OSM data bounding box” section:
| A | B | C | D | E | F | G | H | I | J | … | T | W | X |
| 35 | general | N | 1 | 1 | bounding_box | N | 1 | 1 | lonmin_degree | N | 8.62857 | degree | Longitude of the left edge of the bounding box |
| 36 | general | N | 1 | 1 | bounding_box | N | 1 | 1 | lonmax_degree | N | 8.77867 | degree | Longitude of the right edge of the bounding box |
| 37 | general | N | 1 | 1 | bounding_box | N | 1 | 1 | latmin_degree | N | 49.37914 | degree | Latitude of the bottom edge of the bounding box |
| 38 | general | N | 1 | 1 | bounding_box | N | 1 | 1 | latmax_degree | N | 49.44528 | degree | Latitude of the top edge of the bounding box |
By specifying the "map printout limits" in mm, the map section within the loaded OSM data is defined:
| A | B | C | D | E | F | G | H | I | J | … | T | W | X |
| 43 | general | N | 1 | 1 | map_printout | N | 1 | 1 | xmin_mm | N | -115 | mm | Map printout limits: xmin |
| 44 | general | N | 1 | 1 | map_printout | N | 1 | 1 | xmax_mm | N | 115 | mm | Map printout limits: xmax |
| 45 | general | N | 1 | 1 | map_printout | N | 1 | 1 | ymin_mm | N | -65 | mm | Map printout limits: ymin |
| 46 | general | N | 1 | 1 | map_printout | N | 1 | 1 | ymax_mm | N | 65 | mm | Map printout limits: ymax |
Save the project parameter file!
Create OSM dataset
Reload the project parameters (“Menu: File - Reload project parameters”) and save the project.
As the data cannot be downloaded directly from OpenStreetMap, a small detour must be taken: the data is extracted from a larger data set. The page Geofabrik is used for this. Here, the smallest area must be selected that completely contains the desired map section. In this example, this is Regierungsbezirk Karlsruhe.
Download the data set with the extension .pbf (in this example karlsruhe-regbez-latest.osm.pbf). It is best to save it in a central directory for OSM data, for example under ...\MapLab3D\OSM.
The selected area of Heidelberg is relatively small, so the OSM XML file (extension .osm) can be created without reducing the data. Activate the following settings under "Extra - Create Osmosis call settings" by clicking on them:
Note: The OpenStreetMap files are in XML format (but the extension is .osm). This format is uncompressed and can lead to large files. In the event of error messages when exporting from the OpenStreetMap site, a complete data set of the desired area should therefore first be created in PBF format. In the second step, this file is then converted into the OSM XML format, whereby "Do not reduce the map size" and "Extract all include tags" should be activated.
Now execute the function “Extra - Create Osmosis call”.
- Source file: Select the downloaded OSM dataset (here: karlsruhe-regbez-latest.osm.pbf).
- Destination file: Create a subfolder in the project directory (...\MapLab3D\Heidelberg\OSM) as the storage location and choose a file name (here: Heidelberg.osm).
- Bounding box: The values were taken from the project parameter file and do not need to be changed.
- You may be asked to select the location of the Osmosis installation (“Enter .../osmosis/bin path”). This step will be omitted next time.
- Open the command prompt with “Yes” when asked. Enter the command to call Osmosis with “Ctrl+V” and confirm with “Enter”. Depending on the size of the source file, execution may take a while.
Once Osmosis has been completed, the time required is displayed (here only about 1 minute):
Note: For documentation purposes, a text file with the same name as the target file (here “Heidelberg.osm.txt”) is created, which contains the settings of the Osmosis command and the command itself.
The prompt can now be closed. Now enter the file name of the OSM dataset you have just created in the project parameter file for documentation purposes:
| A | B | C | D | E | F | G | H | I | J | … | T | … | X |
| 21 | general | N | 1 | 1 | comments | N | 1 | 1 | osm_ filename | S | Heidelberg.osm | Comments: OSM filename |
Note: This procedure creates an OSM dataset of an area that is only slightly larger than the required map section. It is also possible to load a sufficiently large OSM dataset into MapLab3D without these individual steps and, if necessary, to define the printout limits afterwards. However, the OSM dataset should not cover an unnecessarily large area, otherwise the execution times in all subsequent steps will be longer.
Save the project parameter file!
Prepare elevation data
The elevation data for the required area is now downloaded.
The elevation data is provided courtesy of the U.S. Geological Survey: open the page EarthExplorer. It is necessary to create an account and log in.
Select the desired area in the “Search Criteria” tab. There are various ways to do this, for example:
- Zoom in on the area in the map and press “Use Map”. The corners of the polygon can be moved with the mouse.
- Select “Decimal” and “Add Coordinate”. Then enter 4 points with the coordinates of the OSM data bounding box from before in the correct order (clockwise or counterclockwise). The result must be a rectangle:
Switch to the next tab “Data Sets”. In the tree, select “Digital Elevation”, then SRTM, then activate the “SRTM 1 _Arc-Second Global” checkbox.
The data records for the selected area are displayed in the “Results” tab and can be downloaded individually. A data set covers an entire longitude and latitude, so in this example this is only a single file: Click on the icon with the small green arrow pointing downwards (3rd icon from the right) to access the download options. Select GeoTiff 1 Arc-second here. The size of the file is also specified.
Save all data sets required for this map in a separate directory, for example ...\MapLab3D\Elevation\Heidelberg_GeoTIFF. This directory may only contain the elevation data.
Note: If the OSM data bounding box is close to the boundary between two elevation datasets, the neighboring dataset should also be downloaded because a larger area is required when smoothing elevation data.
Optionally, the elevation data can now be converted to mat format. Any missing elevation points are repaired, the file is smaller and loading the elevation data in MapLab3D is faster:
- Run the “Extra - Convert georaster data” function in MapLab3D.
- Select the source directory, here: ...\MapLab3D\Elevation\Heidelberg_GeoTIFF.
- Select the target directory. Create a separate folder for this, here: ...\MapLab3D\Elevation\Heidelberg_mat.
Set superelevation
The superelevation is the enlargement of the height scale compared to the length scale. Depending on the scale, a possible value for the superelevation is already suggested, which is based on commercially available relief maps. For a relatively flat area, the superelevation could be increased to emphasize differences in terrain height. For a relief model of a high mountain landscape, the superelevation may need to be reduced. The optimum value of the superelevation therefore also depends on the area depicted and should be checked and adjusted if necessary.
In this example, for the superelevation the default value is 1:
| A | B | C | D | E | F | … | Q | … | … | … | T | … | X |
| 33 | general | N | 1 | 1 | superelevation | N | 1 | Vertical superelevation: Enlargement of the height compared to the length |
Save the project parameters file and reload it into MapLab3D (“Menu: File - Reload project parameters”).
Select the following settings under File - Load OSM- and elevation-data settings:
Then execute "Menu: File - Load OSM- and elevation-data" (this is much faster without loading all OSM data).
A preview of the terrain is created with “Menu: View - Create 3D map preview”. This procedure is now repeated with different superelevation values. The results are shown below. The subsequent printout (printout limits) is the area outlined in blue:
In this example, it is decided to leave the elevation at the proposed value of 1.0.
| A | B | C | D | E | F | … | Q | … | … | … | T | … | X |
| 33 | general | N | 1 | 1 | superelevation | N | 1.5 | Vertical superelevation: Enlargement of the height compared to the length |
Save the project parameter file!
Set "Menu: File - Load OSM- and elevation-data settings" back to the default setting (next picture).
Create 2D map
In this step, a 2D view of the map is created, which serves as an editing area for the map objects.
First, the remaining important project parameters are checked. These are the country-specific settings.
| A | B | C | D | E | F | G | … | … | … | … | T | … | X |
| 58 | general | N | 1 | 1 | decimal separator | S | . | Decimal separator symbol for export/import of numbers (usually "." or ","). |
| 59 | a4 | Paper type for pdf or jpg export (a4, a3, a2, usletter, uslegal, ...) |
| 60 | "name" keys to filter by:
1) To display texts such as the name of a country, all tags (key=value) of this OSM object are searched for the keys entered here and the corresponding value is displayed as text. The list indicates the search sequence. For example, if “name:de” appears before “name”, the German name will be displayed as text (if the tag “name:de=...” exists). For other possible keys that can be searched for, see: https://wiki.openstreetmap.org/wiki/Key:name. 2) This list is also used to connect only OSM objects with the same name to a map object using the “Filter by key” function. In this way, for example, rivers are not displayed as a single connected water network, but rivers can be selected individually by name. |
| 61 | name:de |
| 62 | name |
| 63 | alt_name |
| 64 | short_name |
| 65 |
Also consider whether and where a legend should be displayed (here: top left corner). Adjust the title of the legend (here: “HEIDELBERG”).
| A | B | C | D | E | F | G | … | … | … | … | T | … | X |
| 67 | northwest | Legend location:
- none: no legend - north: Inside top of axes" - south: Inside bottom of axes - east: Inside right of axes - west: Inside left of axes - northeast: Inside top-right of axes (default for 2-D axes) - northwest: Inside top-left of axes - southeast: Inside bottom-right of axes - southwest: Inside bottom-left of axes The language of the legend is English. The legend texts may need to be translated or adapted (parameter legend.element(r,c).text). |
| 68 | HEIDELBERG | Legend title (for example, the name of the city or country). |
Note
- You may also want to customize the language of the legend: This requires editing the values under legend.element.text in the “Expert settings” below.
- The parameters of the legend can also be changed later. In this case, only the legend needs to be recreated, not the entire 2D map. Because the size of the legend can change, this must be done before the step "Menu: File - Map editing - Simplify map".
You may also need to check the other optional settings. In this example, the narrow-gauge railroads are switched on to display the mountain railroad to the Königstuhl: (you find the description of the parameter in column X):
| A | B | C | D | E | F | G | … | … | … | … | T | … | X |
| 98 | 1 | Show tramways and narrow-gauge railways. |
| A | B | C | D | E | F | G | … | … | … | … | T | … | X |
| 106 | 1 | Show tram and narrow-gauge station symbols. |
Save the changes and reload the project parameters ("Menu: File - Reload project parameters").
Note: After each loading of the project parameters, a text file with a summary is saved in the project directory (here: ...\MapLab3D\Heidelberg\HD - projpar summary.txt). The content of the text file can be copied into the "projpar summary" worksheet of the project parameter file to make it easier to read.
Execute "Menu: File - Load OSM- and elevation-data". When prompted, select the previously created OSM dataset (here ...\MapLab3D\Heidelberg\OSM\Heidelberg.osm) and the directory with the elevation data (here ...\MapLab3D\Elevation\Heidelberg_mat) (duration in this example: 1:35 min s).
Execute "Menu: File - Create map". This creates the 3D map in the “Map” window (duration in this example: 16:32 min).
A warning appears when this function is completed:
The data of the specified object number 25 should be printed as areas, but some of them consist of open lines whose start and end points are not identical. There are the following possible causes for this:
- The logical combination of include tags in the project parameters (obj(ObjNo,1).tag_incl) selects OSM data for display as areas that are actually lines. The include tags should be revised here. Alternatively, the open lines can simply be deleted.
- The tags of the OSM data are incorrect or do not correspond to the usual conventions (for example, if a tag “area=no” is missing). Here too, the open lines can simply be deleted.
- The open lines are located at the edge of the map and are therefore incomplete. This happens because the map section extracted with Osmosis only contains complete “ways”, but not complete ‘relations’ (next to “nodes” the types of OSM data). This can be remedied with the procedure described in one of the following sections.
Note: After executing “Menu: File - Create map,” the project is automatically saved.
General basics for editing the 2D map
This section contains a brief description of basic functions in the “Edit map” tab of the app that are required for the next steps. Try it out on the 2D map you just created.
If the 2D map is changed while you are trying it out, that's no problem: After executing “Menu: File - Create map,” the project is automatically saved in the project directory. Then simply reload the project: “Menu: File - Load project,” in this example, select the file “...\MapLab3D\Heidelberg\HD - after create map - v1.1 - MAP.fig.”
With “Menu: View - Show Tooltips,” you can show and hide tooltips for all components of the app. The help text appears when the mouse pointer is over the component.
Selecting map objects
Selecting a map object:
- Left-click on the map object
- Left-click on a cell in the table of map objects
Selecting multiple map objects
- Click on the map objects one after the other with the middle mouse button. This method can also be used to deselect the objects.
- In the table of map objects:
- Left-click and drag with the mouse
- Selecting an area: Left-click on a cell, Shift+left-click on another cell
- Selecting individual cells: Ctrl+left-click on several cells one after the other
- With the “Tab: Edit map - Basic - Select” button, objects can be selected using criteria, for example, all objects with object number 0 (the legend). This allows you to hide or delete the legend, for example.
- The event display shows the number and PlotNo (row number in the table of map objects) of the selected objects.
Deselect all:
- Click on an empty space on the map.
- Button “Tab: Edit map - Basic - Deselect all”.
Map objects must be selected in order to apply functions such as Move or Rotate:
- Some functions also work with multiple selected map objects (for example, “Move”).
- For other functions, only one map object may be selected (for example, “Move vertex”).
- For some functions, exactly two map objects must be specified (e.g., “1 Subtract 2”). This is done by entering the plot numbers PlotNo 1 and PlotNo 2 in the corresponding edit boxes. It is also possible to enter the numbers by left-clicking (1) and clicking with the middle mouse button (2) in the edit boxes.
A context menu with additional information can be displayed for each map object:
- Left-clicking on a map object generates a context menu.
- Right-clicking on the same spot displays the context menu. The content of the context menu depends on the object type:
- x, y, z: Coordinates at the clicked location. The corresponding longitude and latitude in degrees and the original elevation in meters are also displayed. If “z=?”, the clicked point is outside the range of the height data.
- PlotNo: Plot number: Index in the table of map objects.
- ObjNo: Object number: Index in the project parameter file (“Expert settings”): Elements obj(ObjNo,1). ... .
- Text/Tag: This is used to identify the map object:
- For texts: the displayed text
- For symbols: the values of the keys entered in the project parameter file under obj(ObjNo,1).symbolpar.key_for_display (“Expert settings”).
- For lines or areas: a tag if map objects are plotted filtered by specific tags. This is set in the project parameter file for rivers or highways, for example, so that these objects can be selected individually.
- DispAs: The type of map object.
- Character style No.: Only for text: Font number: Index in the project parameter file (“Expert settings”): Elements charstyle(ChStNo,1). ... .
- Symbol No.: Only for symbols: Symbol number. A preview of the symbols is provided with the MapLab3D installer and should have been copied to the directory ...\MapLab3D\Symbols\Preview.
- ColNo: Color number: Index in the project parameter file (“Expert settings”): Elements color(ColNo,1). ... .
- Prio: Object priority: The map object with the highest priority is fully visible, while map objects below it are hidden or cut off. Texts and symbols should have the highest priority and should not overlap.
- dz: Raising or lowering the surface of the map object relative to the terrain height.
- SurfType: Surface type. Possible values are:
- 0: The surface height follows the terrain, increased by dz.
- 1: Flat surface: The regions of a map object's surface can have different heights.
- 2: Flat surface: All regions of the surface of the same map object have the same height.
- Rotation: Angle of rotation, only if a rotation has been performed.
- Tags: All nodes, ways, and relations contained in the map object, with their OpenStreetMap IDs and all tags key=value. The number of nodes, ways, and relations displayed is limited to 10 each.
- Relation ID: Only if the entire map object is part of a relation.
- Bounding box limits: Minimum and maximum x, y and z values.
- Region number and dimensions: The region with the maximum height difference dz is temporarily highlighted in color. This can be a criterion for cutting the map object into parts.
- Only for lines with variable line width:
- Line length: Length of the line.
- Minimum line width: Line width at the beginning of the line. The beginning of the line is temporarily highlighted in color.
- Maximum line width: Line width at the end of the line. The end of the line is temporarily highlighted in color.
- Change line width: Change the line width.
- Show/Gray out/Hide: This can be used to change the visibility as an alternative to the buttons under “Visibility.”
- Change text: Only for text: Change the text.
- Change character style: Only for text: Change the font.
- Color number: Change the color, as an alternative to the buttons under “Color”:
Explanation of important buttons
Here is a general overview of frequently used functions.
Tab: Edit map
Map View: Changing the map section: right side of the tab.
- In: After activation (button turns green), you can zoom in on an area of the map by left-clicking and dragging with the mouse.
- Out: Zooms out: enlarges the displayed boundaries by a factor of 3
- Fit: Zoom in on the printout limits (the area to be printed).
- Sel: Zoom in on the selected objects.
- All: All tile boundaries and OSM data boundaries are displayed in full.
- You can also move the map section and undo changes to the view.
Visibility: Change the visibility of map objects.
- Show: The map object is visible and will be printed.
- Gray out: The map object is visible but grayed out and will not be printed.
- Hide: The map object is invisible and will not be printed.
- Delete: Permanently deletes the map object.
Tab: Edit map - Basic
This tab contains basic functions for editing the 2D map. Examples:
Color
- Color reset: The map object is assigned the color number defined in the project parameters.
- Transparent: The map object is printed in the color of the underlying object and is only visible when the surface is raised or lowered. This is the preferred setting for buildings, for example.
Temporary visibility
- Hide temporarily: Map objects can be temporarily hidden to reduce complexity or to make an underlying object visible or clickable.
- Restore all: All temporarily hidden map objects are displayed again. Map objects hidden with the “Hide” function remain invisible.
Reorder / PlotNo
- This allows you to change the order of the map objects. This affects the position in the table of map objects (PlotNo) and is equivalent to the order of mutual overlap of the plot objects in the 2D map. For example, if a map object cannot be clicked, the object above it can be moved to the top of the table using “Back / First”. The PlotNo has no influence on the subsequent printout; this is determined by the priority of the map objects.
Tab: Edit map - Advanced
- Preview (L/P): Create and modify preview lines using the mouse, by entering data, or by loading a file containing data. A description can be entered before creating preview lines.
- Lines (L): Modifying lines. Lines are only available as non-printable preview objects and are a preliminary stage for polygons. Lines must not touch themselves.
- Polygons (P): Modifying polygons. A polygon is a geometric figure with closed lines as its border. Polygons can also have holes (inner edges or boundaries) and can also consist of several adjacent polygons (regions). Printable map objects are always polygons.
- Printout limits: Conversion of the map section to be printed into a preview polygon and vice versa. This allows you to change the map section and create maps that are not rectangular in shape, but rather, for example, have the shape of a country.
- Preview to map object: Conversion of preview polygons into printable map objects and vice versa.
- Cutting lines: This allows map objects to be cut into several parts.
Incomplete areas after creating the 2D map
Before you can start editing the 2D map, you need to close or delete any incomplete areas in the form of open lines. These lines are shown here as bright red lines with DispAs="area - not closed" and are also called "preview lines".
Fixing incomplete areas
In this example, there is an open line that is incomplete due to missing data because it is located at the edge of the map. This is an incomplete water area with object number 25 (Expanse of Water). Although this area is located behind the legend, it is used here to demonstrate how such incomplete areas can be repaired:
In this section, components in the “Edit map - Advanced” tab are used.
Select the open line and press the button “Close” (under Lines (L)). This attaches the starting point to the end of the line and the line appears closed:
Note: If the connection between the start and end points intersects the remaining line when you click “Close,” an error message will be displayed. In this case, you must use “Move vertex” or “Delete vertices” to change the start or end point so that a direct connection with “Close” is possible.
Select the closed line and press “To poly” to turn the preview line into a preview polygon. The area inside the line is now highlighted in color:
Select the preview polygon and any other preview polygons with the same object number (here: 25). The object number is automatically entered in the “Preview to map object” area under “Map object number.” Activate the "Merge" checkbox below, then press “Preview to map object”, confirm the execution, and wait for the result (here: 6:45 min).
With the “Merge” checkbox activated, the preview polygon is added to the plot data and all map objects with object number 25 are recreated. This is why the open line is still there afterwards:
The now superfluous preview line can be hidden (“Hide”) or deleted (“Delete”):
The “Merge” checkbox is usually only needed to close open lines at the beginning and should now be deactivated again.
Now save the project with “Menu: File - Save project”.
Notes:
- Older save files are numbered consecutively in the project directory, with the smaller number always being the newer version. You should get into the habit of saving often, because there is no undo function! In an emergency, the last saved version can be loaded with “Menu: File - Reload project”.
- When creating the 2D map, open lines can also occur due to incorrect OSM data or because the include tags in the project parameters are not defined optimally, resulting in data being selected for display as areas that should actually represent lines. Such open lines can simply be hidden ("Hide") or deleted ("Delete").
Editing the 2D map
This is the result of the previous steps:
For this screenshot, the legend of the 2D map was temporarily activated using "Menu: View - Show map figure legend (off: faster)".
The following is a description of the actual editing of the map layout. The order of the editing steps is irrelevant until “Menu: File - Map editing - Simplify map” is executed.
Subsequent modification of project parameters
Some project parameters that affect the appearance of the map can still be changed after the 2D map has been created. These are:
- Superelevation.
- For map objects:
- Object priority.
- Color number.
- Raising or lowering the surface of the map object relative to the terrain height.
- Surface type:
- 0: The surface height follows the terrain, increased by dz.
- 1: Flat surface: The regions of the surface can have different heights.
- 2: Flat surface: All regions of the surface have the same height.
- Font number for texts.
This will be demonstrated as follows: Color number 1 (previously “Fillamentum PLA Extrafill, Electric Grey”) will be replaced by a green filament (copied from the file MapLab3D_ProjectParameters_1_1_0_0_Colors_Database.xlsx):
| A | B | C | D | E | F | G | H | … | … | … | T | … | X |
| 817 | color | N | 1 | 1 | rgb | N | 1 | 1 | 131 | Print color: intensity of the red component |
| 818 | color | N | 1 | 1 | rgb | N | 1 | 2 | 201 | Print color: intensity of the green component |
| 819 | color | N | 1 | 1 | rgb | N | 1 | 3 | 53 | Print color: intensity of the blue component |
| 820 | color | N | 1 | 1 | color_ short_text | S | Green | Brief description of the color |
| 821 | color | N | 1 | 1 | color_property | S | Special characteristics of the color |
| 822 | color | N | 1 | 1 | color_ identification | S | 55324 | Explicit identification of the color |
| 823 | color | N | 1 | 1 | material | S | PLA | Material |
| 824 | color | N | 1 | 1 | brand | S | Verbatim | Brand |
| 825 | color | N | 1 | 1 | manufacturer | S | Verbatim | Manufacturer |
| 826 | color | N | 1 | 1 | weblink | S | shop | Website URL |
After saving and reloading the project parameters, the 2D map looks like this:
Note: The RGB values in the project parameters are used later to generate a realistic preview of the printout if the map is printed with the specified filaments. The color of the printout naturally depends on which filament is ultimately used.
Changing the map section
There are two ways to change the map section after the 2D map has already been created. However, this is only possible within the limits of the loaded OSM data.
1st method: Graphical modification of printout limits:
- Press the button “Tab: Edit map - Advanced - Printout limits: To preview”. The resulting preview polygon can now be edited, for example scaled.
- The “Tab: Edit map - Advanced - Printout limits: From preview” button resets the map section based on the selected preview polygon.
- This method also allows you to define the area of a country, for example, as a map section. The shape of the frame is then adjusted to the map section.
- With “Tab: Edit map - Advanced - Printout limits: Reset,” the map section is reset based on the project parameters.
2nd method: Changing the project parameters: This method is now demonstrated: To increase the width of the map, the printout limits xmin and xmax are increased from 115 mm to 125 mm:
| A | B | C | D | E | F | G | H | I | J | … | T | W | X |
| 43 | general | N | 1 | 1 | map_printout | N | 1 | 1 | xmin_mm | N | -125 | mm | Map printout limits: xmin |
| 44 | general | N | 1 | 1 | map_printout | N | 1 | 1 | xmax_mm | N | 125 | mm | Map printout limits: xmax |
| 45 | general | N | 1 | 1 | map_printout | N | 1 | 1 | ymin_mm | N | -65 | mm | Map printout limits: ymin |
| 46 | general | N | 1 | 1 | map_printout | N | 1 | 1 | ymax_mm | N | 65 | mm | Map printout limits: ymax |
After saving and loading the project parameters, use the “Tab: Edit map - Advanced - Printout limits: Reset” button to reset the map section based on the changed project parameters.
After changing the map section, the legend must be repositioned. To do this, activate the “Recreate the legend” checkbox in “Menu: File - Create map settings” and then execute “Menu: File - Create map”. The result looks like this:
Note: If the map section is not rectangular but has a free form, the following restrictions are currently known:
- A tile must not consist of two separate parts.
- If the map contains a hole, an inner frame is also created. However, the inner frame must not lie on a tile boundary, otherwise the STL file of the inner frame will be incorrect.
Add map objects
This is the right moment to check whether the map contains all the desired map objects. If something is missing, there are basically the following options:
The easiest option is:
- Switch on predefined objects in the project file under “Optional: Turn the display of objects on and off:”. Then save the project parameters, load them, activate the checkbox “Recreate certain objects, keep the rest” in the “Menu: File - Create map settings” and then execute “Menu: File - Create map”. At the beginning, the object numbers of the new map objects must be entered.
The following options require editing the “Expert settings”:
- Define new object number: There are currently 120 different objects, and the object numbers are sorted according to object priority (not mandatory, but clearer). New objects can be added, preferably by copying the lines of an existing matching object and editing the parameters. By updating the references in the third column, the object numbers of the objects below must be increased by one. Because this changes the object numbers of existing map objects, the 2D map must be completely recreated.
- For existing object numbers, edit the include tags (obj.(ObjNo,1).tag_incl) or exclude tags (obj.(ObjNo,1).tag_excl), then only recreate the map objects with the corresponding object number (as described above with “Recreate certain objects, keep the rest”).
The editing of the include and exclude tags is now demonstrated using an example:
The funicular railway to Königstuhl is not shown in full here; the “Kornmarkt” station is missing. See the OSM map for comparison:
The reason for this is that tunnels are not displayed as lines at the current scale. This is achieved by entering the key “tunnel” with the value “yes” in the exclude tags of object 59 (narrow-gauge railway) (the lines in between are hidden here):
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | … | T | … | X
|
| 6362 | obj | N | 59 | 1 | tag_excl | N | 1 | 2 | k | S | tunnel | - Exclude key |
| 6363 | obj | N | 59 | 1 | tag_excl | N | 1 | 2 | v | S | yes | Exclude value |
| 6447 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_excl | N | 1 | 2 | k | S | tunnel | Text: - Exclude key |
| 6448 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_excl | N | 1 | 2 | v | S | yes | Text: Exclude value |
| 6522 | obj | N | 59 | 1 | symbolpar | N | 1 | 1 | tag_excl | N | 1 | 2 | k | S | tunnel | Symbols: - Exclude key |
| 6523 | obj | N | 59 | 1 | symbolpar | N | 1 | 1 | tag_excl | N | 1 | 2 | v | S | yes | Symbols: Exclude value |
Because the line is missing, the symbol for the “Kornmarkt” valley station is also not displayed. Stations are only displayed if the node (station) has a maximum real distance of 15 m from the line (track), see parameter obj(ObjNo,1).reduce_nodes.dmax2lines_m:
| A | B | C | D | E | F | G | H | I | J | K | … | … | … | … | … | … | T | W | X
|
| 6372 | obj | N | 59 | 1 | reduce_nodes | N | 1 | 1 | dmax2lines_m | N | 15 | m | Nodes: Maximum real distance to lines with the same object number (deactiv: -1) |
Now delete the formulas entered in the lines obj(59,1).tag_excl(1,2).k and obj(59,1).tag_excl(1,2).v. The corresponding values under textpar and symbolpar are automatically deleted. This shows both the tracks running through tunnels and the underground stations:
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | … | T | … | X
|
| 6362 | obj | N | 59 | 1 | tag_excl | N | 1 | 2 | k | S | - Exclude key |
| 6363 | obj | N | 59 | 1 | tag_excl | N | 1 | 2 | v | S | Exclude value |
| 6447 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_excl | N | 1 | 2 | k | S | Text: - Exclude key |
| 6448 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_excl | N | 1 | 2 | v | S | Text: Exclude value |
| 6522 | obj | N | 59 | 1 | symbolpar | N | 1 | 1 | tag_excl | N | 1 | 2 | k | S | Symbols: - Exclude key |
| 6523 | obj | N | 59 | 1 | symbolpar | N | 1 | 1 | tag_excl | N | 1 | 2 | v | S | Symbols: Exclude value |
In addition, only the funicular railway should be displayed, not the other narrow-gauge railways. This is achieved by editing the include tags. First, a tag must be found that clearly describes the funicular railway:
On the map at OpenStreetMap, activate the “Query features” button on the right-hand side of the window. Click on the mountain railway and select one of the “Relation Bergbahn Heidelberg” data sets:
The tag "name=Bergbahn Heidelberg" clearly describes the funicular railway. Now enter this tag in an empty field of the include tags of object 59 (Narrow-Gauge Railway) in line 2 (column heading "R2", marked in red):
| A | B | C | D | E | F | G | H | I | J | … | T | … | X |
| 6338 | obj | N | 59 | 1 | tag_incl | N | 2 | 2 | k | S | name | - Include key |
| 6339 | obj | N | 59 | 1 | tag_incl | N | 2 | 2 | v | S | Bergbahn Heidelberg | Include value |
In object 83 (Narrow-Gauge Railway: Bridges), this tag is automatically adopted.
Note: The include and exclude tags are structured as a matrix. In general:
- The criteria of all columns in a row (headings C1 to C4) are linked with a logical OR.
- The criteria of all rows (headings R1 to R4) are linked with a logical AND.
This means that all narrow-gauge railways (all tags in row 1 of the include tags) that also have the tag "name=Bergbahn Heidelberg" (row 2 of the include tags) are now displayed.
Save and load the project parameters. Because the include tags have changed, a warning will appear, but this can be ignored because no new objects have been added. In the “Menu: File - Create map settings” window, activate the “Recreate certain objects, keep the rest” checkbox and then execute “Menu: File - Create map”. When prompted, enter object number 59 (Narrow-Gauge Railway) and 83 (Narrow-Gauge Railway: Bridges) and wait for the execution to finish (here: 6:47 min).
The funicular railway is now shown in full, while all other narrow-gauge railways have been removed:
Save the project.
Seal holes
Closing holes is generally possible at any stage of processing, but in certain cases should be done either at this point or only at the end of processing. The procedure is described in the chapter of the same name at the end of processing.
Show or hide map objects
If there are duplicate map objects, too many map objects overlap, or the map appears cluttered overall, objects must be hidden.
In some cases, objects are also generated in grey and can be made visible. The names of cities, for example, are generated in two ways:
- Name of a city boundary (administrative boundary): This method is preferred because when the name is clicked, the underlying city boundary is displayed as a magenta line, which makes it easier to place the name correctly when moving it. In this example, the city boundary of Heidelberg is not within the map section, so the name Heidelberg does not appear as black text.
- Name of a node: The name displayed for the node ‘Heidelberg’ is greyed out here and could be made visible manually (using the ‘Show’ button). This should not be done here because the name appears already in the legend:
In this example, the following changes are made:
Hide railway stations
Railway stations are currently selected using the tags railway=station or railway=halt (for small stations):
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | … | T | … | X
|
| 6415 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_incl | N | 1 | 14 | k | S | railway | Texts: - Include key |
| 6416 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_incl | N | 1 | 14 | v | S | tram_stop | Texts: Include value |
| 6417 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_incl | N | 1 | 15 | k | S | railway | Texts: - Include key |
| 6418 | obj | N | 59 | 1 | textpar | N | 1 | 1 | tag_incl | N | 1 | 15 | v | S | halt | Texts: Include value |
There are many nodes with the tag railway=halt at Heidelberg Central Station:
All icons except one should be hidden or deleted. Then move the last icon to the centre:
Save the project.
Hide rivers
The objects with the number 30 (waterway=stream) are largely covered or cut up by roads, for example:
To reduce complexity, all objects with the number 30 are hidden or deleted here: Select with ‘Tab: Edit map - Basic - Select’, then ‘Tab: Edit map - Basic - Delete’.
Save the project.
Hide short roads
In object 38 (Paved Track), there are short sections of road that connect to unpaved paths, which are not shown at this scale. Therefore, these short sections of road do not appear to be connected to the rest of the road network:
Such short road sections should be deleted:
- Select object 38 (Paved Track).
- Press the button ‘Tab: Edit map - Advanced - Regions’. In the table of map objects, there are now 105 map objects with object number 38 instead of just one.
- Now you can select individual lines and hide or delete them.
Note: Alternatively, you could consider hiding the entire object 38 (Paved Track).
Save the project.
Cutting map objects using map objects
Possible applications are:
- Settlement areas and forests can be composed of many sub-areas. If these areas are too large or if puzzle pieces with a unique name are to be created, the areas can be divided along administrative boundaries. This can be done using the grayed-out line objects “Boundary names and cutting lines: ...” (here object numbers 109 to 116) and the function “Tab: Edit map - Advanced - 1 Subtract 2.” This creates a gap with a width of 0.3 mm in the areas.
- Rivers, highways, and administrative boundaries are sorted by name and plotted as individual map objects on the 2D map, overlapping each other. This creates a connected network. If you want to generate puzzle pieces with a unique name, you must remove the overlap between two objects with different names and insert a gap between them. This can be done using the “Tab: Edit map - Advanced - 1 Subtract (2+tolerance)” function.
Note: Another way to cut map objects is described below.
Here, the settlement areas and the forest are now divided along the administrative boundaries in object 111 (boundary names and cutting lines: borough). Selecting all texts from object 111 (Tab: Edit map - Basic - Select) clearly displays the lines (source data of the texts):
Left-click on the red settlement areas (object 10: Built-up Area) in the 2D map. Then click with the middle mouse button on the grayed-out administrative boundaries (object 111: Boundary names and cutting lines: borough). In the “Edit map - Advanced” tab, the plot numbers of the two objects have been automatically entered in the “PlotNo 1” and “PlotNo 2” edit boxes. Check the map objects table to make sure that the correct objects have been clicked on!
Press the “1 Subtract 2” button.
Note: The objects do not need to be selected; it is sufficient to enter the plot numbers in the edit boxes.
Now repeat this with the forest (object 12: Wood, Forest). The two objects were cut along the line:
The subtraction may result in narrow strips or small individual areas. These will be automatically simplified later when you execute “Menu: File - Map editing - Simplify map” (not yet!):
Save the project.
Connect or delete small map objects
Map objects are easier to print and insert if they are not too small. Tall parts with a small base area are particularly difficult to print. For this reason, small symbols are usually generated transparently by default, or symbols are automatically connected to corresponding text in the same color. The letters of a text (foreground) can be connected to each other by a background of the same color underneath. Texts without a background are possible for large individual letters, transparent texts, or dual extruder/multi-material printing.
Examples:
-
Transparent symbol
-
Connection line between text and symbol
-
Text with background
-
Text without background
Reasons for connecting map objects may include:
- Connecting small objects that are next to each other so that they are easier to print. It is best to place the connecting lines underneath overlapping objects so that they are not visible in the end.
- In a puzzle where each piece should have exactly one label: for example, connecting small districts that cannot accommodate any text, or a district that consists of several small sub-areas. If the text background is the same color as the parts to be connected, the connection can also be made through the text: Here is an example from another project:

- For two-line texts: Connect the second line to the first line. This should only be done after moving texts (as described below).
- Connecting different map objects that are next to each other but should form a common area. Example: A lake that is connected to a river:
In this example, small settlement areas are now connected if they are close to each other and belong to the same district. Use the “Edit map - Advanced” tab:
- Activate “Draw line” mode. Create a preview line by left-clicking and dragging with the mouse. The preview line can also have several nodes if you continue at exactly the same point. If the preview object runs along roads, the connection will no longer be visible later. With the “Move vertex” mode, you can correct the nodes of the line by clicking and dragging with the mouse.
- Enter the thickness of the connecting line in the “Line width / mm” edit box (here: 1 mm).
- Enter the object number of the settlement areas in the “Map object number” edit box: either by manual entry (here: 10) or by left-clicking on the settlement areas.
- Select the preview line. Press the “Preview line to line map object” button: the preview line is replaced by a map object. Because the connecting line has the same color number as the settlement areas and the road does not cut through the settlement areas but runs above them, the three parts are connected when the STL files are generated.
-
Initial state
-
Preview line
-
Connected Built-up Area
Save the project.
Another way to connect small settlement areas below roads is to convert part of the road itself into a settlement area:
- Create a preview line that covers the desired area of the road (“Draw line”).
- Convert the preview line into a polygon (“To poly”).
- Create the intersection between the preview polygon and the roads:
- Left-click on the preview polygon and middle-click on the roads (ObjNo 38: Paved Track). The order is important, otherwise the roads will be clipped instead of the preview polygon! The edit boxes “PlotNo 1” and “PlotNo 2” in the “Polygons (P)” area have been filled in.
- Now press the “1 Intersect 2” button.
- Left-click on the red settlement area: The object number (10) is entered in the edit box in the “Preview to map object” area. Then select the preview polygon and press the “Preview to map object” button (without activating the “Merge” checkbox).
-
Initial state
-
Preview line
-
Preview polygon
-
Preview polygon intersection with streets
-
Connected Built-up Area
Save the project.
If a settlement area is small and far away from other settlement areas or almost completely covered by other objects, it can also be deleted entirely. This is the case, for example, with the area at the bottom left of the map:
- Divide the settlement area into regions so that the small settlement area can be selected individually: Select the settlement area with a left click and press the “Regions” button.
- The settlement areas to be deleted are partially covered and cannot be selected: Click on the roads above the settlement areas to be deleted and press the “Tab: Edit map - Basic - Temporary visibility - Hide selection” button.
- Select the individual small settlement areas and press the “Delete” button.
- Press the button “Tab: Edit map - Basic - Temporary visibility - Restore all” to show the roads again.
-
Small settlement areas
-
Streets temporarily hidden
-
Small settlement areas deleted
Save the project.
Now repeat this with other small settlement areas. There will be another opportunity later to systematically search for map objects that are too small. It makes sense to edit settlement areas at this point because settlement areas cut through forest areas when you execute “Menu: File - Map editing - Simplify map.”
Cutting map objects
This step is optional. Objects can be cut automatically:
- When executing the function “Menu: File - Map editing - Simplify map”:
- Lines are separated outside the edges of underlying areas to prevent the bottom of the area from being unnecessarily lowered by a lower-lying line outside the area.
- Lines are separated if they have a large difference in height, causing the gap in the underlying parts to become unnecessarily deep.
- In the function “Menu: File - Create map STL files” executed afterwards: Here, all map objects larger than the specified maximum dimensions are cut. These dimensions can have different values depending on the color number:
- The maximum dimensions must not exceed the build volume of the printer used.
- The maximum dimensions can be set smaller to make a puzzle more difficult.
Notes:
- In the “Simplify map” function, the project parameters with the names “colorspec.simplify_map. ...” are applied. The application can be easily deactivated with “Divide lines automatically (0/1)”.
- In the “Create map STL files” function, the project parameters with the names “colorspec.cut_into_pieces. ...” are applied. The shape of the cutting lines can also be set there. The two most important parameters are the maximum dimensions of map objects (“maxdimx” and “maxdimy”).
The following reasons speak in favor of manually cutting objects:
- The automatic cutting functions do not always produce the best results and can also be unreliable for more complex map objects.
- The cutting of lines in “Simplify map” is based in part on the shape of the underlying surfaces, which are only cut in the second step, “Create map STL files,” during automatic cutting. The result is therefore not optimal.
These considerations lead to the following possible approaches:
- Simplest solution: Skip the two steps “Cutting map objects” (now and later) and try to see if automatic cutting produces a satisfactory result.
- Slightly more effort: Leave the automatic cutting of lines in “Simplify map” switched on (“Divide lines automatically (0/1)” = 1). Before executing “Simplify map,” manually cut all areas to the maximum or desired size (“Maximum object size,” depending on the printer's build space) as described below.
- Most effort, best result: Disable automatic line cutting in “Simplify map” (“Divide lines automatically (0/1)” = 0). After executing “Simplify map”, manually cut all map objects (areas and lines).
Here, the third option is selected, which provides the best result. Therefore, now turn off the automatic cutting of lines:
| A | B | C | D | E | F | G | H | I | J | … | T | W | X |
| 130 | 0 | Divide lines automatically (0/1) When the “File - Map editing - Simplify map” function is executed, lines such as roads can be automatically divided into parts. This is necessary so that the printed lines don't get too high and the slots don't get too deep. Dividing lines can also be done manually using the contour lines and cutting lines. If you want to cut lines manually: Set this parameter to zero and use the “Cutting lines” after executing “Simplify map”. With a little practice, the results are usually better and more reliable. Procedure: - If a line runs over an area like a road over a city, the road should be cut just outside the city at the lowest point so that the city part does not become too high (or so that the bottom of the city part has to be lowered less). - The remaining lines should be cut along the same contour line if possible. The resulting individual parts should not be too small and too high so that they do not tip over during printing. |
Save and load the project parameters.
Adjusting the position of the natural peak symbols
The position of the peaks natural=peak in the OSM data does not always correspond to the highest point of a hill in the 3D map. This becomes apparent when the contour lines are activated with “Menu: View - Show contour lines”:
Now set a higher resolution for the contour lines (click “Menu: View - Show contour lines” twice), for example:
If you zoom in on the map, you can see that some of the peak symbols are not located at the highest point:
Select the symbol, text, and connecting line, and correct the position of these objects using “Tab: Edit map - Basic - Move”:
Repeat this with all other peak symbols and texts, taking care not to select the wrong object. Use the arrows under “Tab: Edit map - Map View” to systematically move the map section for this task.
Save the project.
Note: If an object has been moved accidentally, it can be reset to its original shape using the “Tab: Edit map - Basic - Reset” button.
Editing texts and symbols
The editing of texts and symbols should be carried out in accordance with the following guidelines:
General guidelines:
- Texts and symbols have the highest object priority of all map objects. They should be fully visible and not overlap each other. This can be checked using the function “Menu: File - Map editing - Detect overlapping texts and symbols.”
- Texts and symbols with their own color should overlap as few other objects as possible, because these objects are then either cut off by the texts or because the bottom of these objects is lowered as a result. The minimum distance to other objects should be 0.5 mm. This corresponds to the gap dimension in the cutout that texts and symbols create in underlying parts (project parameter colorspec(3,1).d_side, currently 0.45 mm).
- Texts should run along contour lines as far as possible so that the individual letters have a constant height. Alternatively, the texts should be placed so that the differences in height are as small as possible.
- If there is not enough space, texts can be shortened or split into several lines using “Change text” in the context menu, which in turn can be moved or rotated individually.
- If too many texts or symbols overlap or if an element described by the text is too small, texts and symbols can be grayed out or deleted.
When using as a reusable puzzle:
- If puzzle pieces are printed with labels: Labels should be placed as completely as possible over the respective puzzle piece and should not extend beyond it.
- If handles are created for removable pieces: Each piece must have at least one handle in a suitable position depending on its size (if there is only one handle, it should be in the middle if possible).
- Using the function “Menu: File - Map editing - Detect misplaced texts and symbols,” you can check
- that all puzzle pieces have a label,
- that all puzzle pieces have a certain number of handles, and
- whether texts or symbols are free-standing and not assigned to any puzzle piece.
For transparent text and symbols (the text or symbol is printed in the color of the object below it and is only visible by raising or lowering the surface):
- Transparent text and symbols should not be placed above a tile border if possible, so that there is no gap.
- Transparent text and symbols are more easily recognizable if the background is a uniform color. This ensures that the text and symbols are also monochrome and not interrupted by a gap. The following options are available for this:
- Move them so that they are placed over a uniform color or over as few colors as possible.
- Cut the objects below them.
- Add a colored area below them.
- Assign the text or symbol its own color (edit the project parameters).
When editing, it is helpful to use the arrows under “Tab: Edit map - Map View” to systematically move the map section.
Connection lines between texts and symbols: The “connection lines” connect the usually small symbols with an accompanying text in the shortest possible way. This makes it easier to print the symbols, assign them to the correct location on the map, and insert them. After moving texts, the connection lines usually have to be redrawn.
Move and rotate text
Turn on the display of contour lines. Using “Move” and ‘Rotate’ in the “Edit map - Basic” tab, the following improvements are now made:
- Place the name of the Neckar River so that the letters are completely on the water surface and in the middle of the river. Place the names of all districts so that they are completely within the city limits and cover as few streets as possible:
-
Texts before moving
-
Texts after moving
- Position the texts of the peaks so that they cover as few other objects as possible. In this example, the texts of the peaks will not be rotated. To reconnect the symbol to the text, first create preview lines as when connecting map objects (see above). Two lines between the rows increase stability. To convert the preview lines into a map object, enter the object number of the peaks in the “Preview to map object” area in the “Map object number” edit box (by clicking on the text or entering 98), select the preview lines, and press “Preview line to connection line.” This creates a connection line with the predefined line thickness. The original connection line can be deleted:
-
Texts before moving
-
Texts after moving
-
Preview lines for connecting text and symbol
-
New connection lines
- Here, the text also covers a small settlement area (see wikipedia: Heidelberg Thingstätte). Move the text in the same way as above:
-
Texts before moving
-
Texts after moving
- In this case, the text does not fit between the street and the edge of the map. Open the context menu for the upper text (left-click on the text, then right-click in the same place). Select “Change text,” split the text into two lines, and proceed as above:
-
Texts before moving
-
Texts after moving
- In the case shown here, it is unavoidable that the text overlaps the road. To display the road in its entirety, the text and the peak symbol could be hidden. Here, it has been decided to leave the peak in place, but the road below it will later be automatically cut off by the text.
- This peak is located at the edge of the map and gets hidden:
-
before
-
after
- Edit all remaining texts accordingly.
Save the project.
Transparent symbols
Here is an example of how the display of a transparent symbol can be improved. In the map at the top right, there is a zoo symbol: the Alpakafarm Hirtenaue in Ziegelhausen. The symbol runs across three different colors and is therefore not printed in a uniform color. There are also gaps between the different colored parts, and these areas are then missing in the symbol.
To improve the layout, first move the symbol so that it only covers the settlement area (red) and the base color (green). Then delete the red area below the symbol: Click on the settlement area below the symbol with the left mouse button and then on the symbol with the middle mouse button. In the “Edit map - Advanced” tab, the plot numbers of the two map objects are now entered in the “PlotNo 1” and “PlotNo 2” edit boxes. Press the “1 Subtract (2+tolerance)” button. There is now a gap between the settlement area and the symbol that has the same dimensions as the gap between the parts.
-
Symbol before
-
Symbol moved
-
Symbol with single color
Save the project.
Printing symbols with their own color
There are two transparent castle symbols on the map:
These symbols are now printed in color to make them stand out. Since there are only two, the effort involved in printing and inserting them is minimal. The castle symbols have the object number 97 and should be given the same color as the peaks (color number 29) so that no new color needs to be defined.
In the project parameters, overwrite the color number for the object foreground and object background of object 97 with the value 29:
| A | B | C | D | E | F | G | H | I | J | … | T | … | X |
| 9525 | obj | N | 97 | 1 | color_no_fgd | N | 29 | Color number of the object foreground |
| 9526 | obj | N | 97 | 1 | color_no_bgd | N | 29 | Color number of the object background |
Note: Many cells contain formulas to simplify the modification of the parameters of multiple objects using a single parameter above the “Expert settings.” The formulas in the template (in column DATASET_1) should not be overwritten in order to maintain this functionality. However, when making modifications for a specific project (from column DATASET_2 onwards), overwriting the formulas with values is not a problem.
After saving and loading the project parameters, the two castles now have their own color:
Save the project.
Checking texts and symbols for mutual overlap
Text and symbols should always be fully visible and therefore should not overlap. Because most objects below text and symbols are cut off by them in the following “Simplify map” function, the placement of text and symbols should be as finalized as possible at this point. To ensure this, text and symbols are now automatically checked for overlap.
Execute the function “Menu: File - Map editing - Detect overlapping texts and symbols.” If an overlap between texts and symbols is detected, a warning displays the relevant plot numbers and a preview polygon shows the overlapping areas. Here, two overlaps of stations of the Heidelberg Mountain Railway are detected:
The two “Schloss” stations of the funicular railway are so close together that one symbol can be deleted:
-
Station Schloss Before
-
Station Schloss After
The two “Molkenkur” stations of the funicular railway are terminal stations and are located further apart. In this case, the overlap is acceptable:
The preview polygon with the description “Detect overlapping texts and symbols: results” can now be hidden or deleted.
Save the project.
Checking text and symbols for overlap with other map objects
In a puzzle, each individual puzzle piece may have a text and at least one handle. In a large puzzle with many pieces, a missing text or handle can easily be overlooked. The “Menu: File - Map editing - Detect misplaced texts and symbols” function allows you to check this automatically.
This check is not necessary here.
Notes:
- Handles can be realized as round and tall symbols.
- Before execution, the “united equal colors” must be calculated. This is done simply by pressing the button “Tab: Edit map - Advanced - Create united equal colors” (duration here 16:55 min).
- If text overlaps not only the puzzle piece itself but also other map objects, it affects the height of the bottom side of other pieces. Text that is forgotten here and added later can, in extreme cases, cause the height of the entire map to change. Missing text should therefore be identified as early as possible and not only after printing.
- Because the “Simplify map” function cuts up map objects and can therefore also change the dimensions of areas, the function “Menu: File - Map editing - Detect misplaced texts and symbols” should be executed again after “Simplify map.”
Reduce overlap of map objects
As a general rule, colors with a higher color priority are placed above colors with a lower color priority. If many parts of different colors overlap each other, the stack becomes correspondingly high, which leads to unnecessarily high material consumption. It therefore makes sense to reduce overlaps. This can be done in two ways:
- Function “Menu: File - Map editing - Simplify map”: When this function is executed, overlaps are automatically removed. The rule here is that objects with higher priority cut through objects with lower priority. Exceptions to this rule can also be set, for example:
- Certain areas with low priority colors are not cut up. In this project, these are forests and settlement areas, because otherwise too many small pieces would be created out of these areas. However, the forest area is cut up by settlement areas.
- The project parameters are used to set which map objects are cut by other map objects or cut other map objects. The file “HD - projpar summary.txt”, which is saved in the project directory after each loading of the project file, contains an overview of which objects cut each other.
- Overlaps can also be removed manually. This is useful in certain cases for forest and settlement areas, because these areas are not cut off by objects with higher priority when executing “Menu: File - Map editing - Simplify map”. This is now demonstrated:
The following images show a settlement area with an accompanying road. Because the distance between the road and the settlement area is small and the settlement area has a lower color priority, the bottom of the settlement area is lowered in the final printout. This can be avoided, for example, by cropping the road:
- The road (ObjNo 38, Paved Track) has already been divided into regions above. If not, this must now be done, otherwise all roads with this object number will be cut off from settlement areas: Select the road with a left click and press the “Regions” button.
- Left-click on the road and middle-click on the settlement area. Then press the “1 Subtract (2+tolerance)” button.
-
Settlement area and highway with overlap
-
Settlement area and highway with overlap: 3D result (forest not shown)
-
Settlement area and highway, overlap removed
-
Settlement area and highway, overlap removed: 3D result (forest not shown)
The following images show a small settlement area with a road running just above the edge. This overlap results in a narrow and tall section that is difficult to print. To avoid interrupting the road, the settlement area is now cut up:
- First delete the short road, otherwise there won't be much left of the settlement area: Select the short road (ObjNo 44, Minor Road) with a left click and press the “Regions” button to divide the object into its regions (otherwise the entire object 44 will be deleted). Then select only the short road again with a left click and press the “Delete” button.
- If you haven't already done so, divide the settlement area into regions so that the small settlement area can be selected individually: Select the settlement area with a left click and press the “Regions” button.
- First, left-click on the small settlement area and then click on the road with the middle mouse button. Then press “1 Subtract (2+tolerance)”.
-
Settlement area and highway with overlap
-
Settlement area and highway with overlap: 3D result (forest not shown)
-
Settlement area and highway, overlap removed
-
Settlement area and highway, overlap removed: 3D result (forest not shown)
Notes:
- The 3D images can be generated by first creating the STL data using “Menu - File - Create map STL files,” then bringing the 3D map display window to the foreground, and then calling up the function “Menu: View - Current figure - Change visibility of 3D objects.” The view can be changed using the “camera toolbar.”
- When creating the STL data, it is already possible at this stage to systematically search for parts that are too high and are only overlapped at the edge by another object.
- If a settlement area or forest area is not only overlapped at the edge by a road, the subtraction would cut the area into several smaller parts. In this case, it is better to reduce the height of the road part. This method is described below.
Repeat this procedure with other unnecessary overlaps at the edge of settlement areas.
Save the project.
Simplify map
This is the result of the previous steps:
Now execute the function “Menu: File - Map editing - Simplify map” to reduce overlaps and delete parts that are too small (duration here: 21:39 min). This reduces the amount of material required and makes printing and assembly easier. This is the result:
Note: This step cannot be undone. However, backup copies of the project are automatically created in the project directory before and after the operation (“HD - before simplify map - v1.0.0 - MAP ...” and "HD - after simplify map - v1.0.0 - MAP ...).
Editing the 2D map
The following steps are performed after simplification with “Simplify map.”
Cutting map objects
General strategies for cutting objects are described above. Because automatic line cutting has been disabled, this is now done manually here.
To assist in cutting map objects, the so-called “United equal colors” were calculated when “Simplify map” was executed. These are located at the top of the map object table and are normally hidden. They represent the base areas of the parts as they will later be printed and are created by uniting overlapping areas of the same color.
Now switch to the “Edit map - Advanced” tab. In the “Cutting lines” drop-down menu, select the top entry “Color 6 (forests)”. Only the forests are now visible on the 2D map. The magenta dotted line shows the maximum object size set in the project parameters, which depends on the printer's build volume:
The procedure for cutting map objects is generally as follows:
- Turn on the contour lines.
- Use “Draw line” to create the “Preview cutting lines” at the points where the parts are to be cut.
- Select the “Preview cutting lines” and convert them to “Cutting lines” by pressing the “Preview cut-line to cut-line” button.
- Press the “Cut” button to test-cut the “united equal colors” at the positions of the “Cutting lines.”
- The “Regions number and dimensions” entry in the context menu can be used to check whether the size of a region is outside the specified limits after cutting. If this is the case, the text in the context menu will be formatted in red. Clicking on an entry in the context menu will zoom in on the corresponding largest or smallest region.
- The context menu also shows which region has the greatest difference in height (“Regions: max dz = ...”). This entry is formatted in magenta. The height of a part can also be a criterion for cutting.
- With “Reset united equal colors,” you can undo the test cutting. The “Cutting lines” can be deleted, and the “Preview cutting lines” can be deleted or changed.
- Once all “Cutting lines” have been optimally set for all colors (and only then), the map objects are finally cut using “Menu: File - Map editing - Cut into pieces”. This cannot be undone except by reloading the project.
Notes:
- The entries in the “Cutting lines” drop-down menu are sorted by color priority. The color with the lowest priority is at the top. Colors with higher priority are always inserted above colors with lower priority.
- The colors should be processed in the given order because the optimal cutting of map objects may depend on the underlying parts.
- If a color number is selected in the “Cutting lines” drop-down menu, all newly drawn preview lines are automatically “preview cutting lines.” The “preview cutting lines” and the “cutting lines” are assigned to the respective color number and are only visible when this color is selected in the drop-down menu.
- The shape and width of the “cutting lines” can be controlled using the project parameter “colorspec(no,1).cut_into_pieces”. A straight line is set for roads, and an irregular zigzag line for areas. The zigzag line has a random course between the nodes of the “Preview cutting line”, but passes exactly through the nodes.
- After creating the “united equal colors,” the maximum object size set in the project parameters appears as a magenta dashed line around each tile (“Maximum object size”). It is advantageous if all parts of a tile are within these boundaries, because otherwise the print data of a tile could be split across multiple STL files.
Cutting lines for forest areas
Because the forest areas have already been divided along administrative boundaries, there are no longer any parts that are too large. To demonstrate the principle, the forest areas shall therefore be divided into even smaller puzzle pieces. To reduce the height of the pieces, it is preferable to divide the areas roughly along the contour lines.
Now create all cutting lines for color 6 (forests), check the position of the lines, and then press the “Cut” button.
The next image shows a section with red “preview cutting lines” and zigzag-shaped “cutting lines”:
Save the project.
Cutting lines for settlement areas
Select “Color 7 (settlement areas)” from the “Cutting lines” drop-down menu. The settlement areas are now visible on the 2D map. No error is displayed in the context menu for the settlement areas, so no part is too large. The settlement areas are not cut up further here so that the assignment to the names of the city districts remains clear:
Note: By default, all underlying colors are always displayed, in this case the forest. In this case, this would not be necessary because the forest areas are cut up by the settlement areas, meaning that the settlement areas do not overlap the forest areas and the cutting up of the settlement areas therefore does not depend on the location of the forest areas. Unnecessary objects can also be easily hidden (“Hide”) for a better overview.
Cutting lines for the water areas
Select “Color 16 (water)” from the “Cutting lines” drop-down menu. The water areas are now visible on the 2D map. Again, no error is displayed in the context menu. The water areas are already sufficiently small due to the bridges and are not cut further:
Note: Text, symbols, and connection lines of the same color are also displayed:
- so that map objects can be cut based on their labels, and
- so that text is not cut by mistake.
Cutting lines for roads
Select “Color 18 (Tertiary and minor highways)” from the “Cutting lines” drop-down menu. The branched road network of all roads with this color is now visible on the 2D map. The following problems now need to be solved:
- The context menu does not show too large a section, but it does show a large maximum height difference (magenta text “max dz = ...”).
- Another problem are large regions of lines that run above forest and settlement areas. The underside of the forest and settlement areas is therefore always lower than the lowest point of the lines, even if the lowest point of the lines lies outside the forest or settlement area. Possible solutions are:
- If the road only runs along the edge of an area, the road can be subtracted from the area (with an additional distance) so that the two objects no longer overlap. This has already been done for settlement areas before executing “Simplify map” and can now also be applied to forest areas.
- Lines can be cut outside the underlying area so that the previous lowest point of the line no longer belongs to the line segment that runs above the area.
First, we will look at the two small settlement areas on the Königstuhl. Because the road is a large contiguous section, the bottom of these settlement areas is lowered to below the level of the road in the valley. This results in tall settlement areas with a small base area, which can easily fall over when printed. To prevent this, the road below the settlement area is cut at a height of approximately 15 mm. In addition, the road below the edges of the forest puzzle pieces is cut to prevent the bottom from being lowered here as well:
The following two images show the result before and after applying the “cutting lines.” For this purpose, the “Menu: File - Create map STL files” function was executed with and without first executing “Menu: File - Map editing - Cut into pieces.” Only the relevant parts are visible in this illustration:
-
Before applying the “Cutting lines”: 3D map
-
After applying the “Cutting lines”: 3D map
You can see that the roads and residential areas are no longer as high. They should be easy to print.
Note: Before printing, all STL files should be checked for such potential printing problems so that corrections can be made in advance.
No action is required for the other roads (colors 19 to 21) because they all run on flat terrain or in the valley and are not too large.
Save the project.
Cutting lines for the railroad
Select “Color 23 (railways)” from the “Cutting lines” drop-down menu. Almost all railways run on flat terrain or in valleys; only the funicular railway should be cut:
The parts with the two remaining colors, “Color 26 (symbols)” and “Color 28 (texts),” are not cut.
Save the project.
Applying the cutting lines
Once the cutting lines have been created for all colors and no errors are displayed in the context menu, the cutting lines can be applied: Execute the function “Menu: File - Map editing - Cut into pieces.”
Note: This step cannot be undone. However, backup copies of the project are automatically created in the project directory before and after the operation (“HD - before cut into pieces - v1.0.0 - MAP ...” and "HD - after cut into pieces - v1.0.0 - MAP ...).
Reduce overlap of map objects
Before executing “Menu: File - Map editing - Simplify map,” overlaps at the edges of settlement areas were reduced as much as possible. Because the dimensions of the map objects have changed as a result of the previous steps (roads have been cut up, forest areas have been trimmed by settlement areas), it makes sense to repeat these steps for forest areas as well.
To allow individual forest areas to be edited, divide the forest into regions: Select the forest and press the “Regions” button. Repeat this for the roads if necessary.
The forest area in the upper right corner is only overlapped at the edge by roads. Here, it makes sense to subtract the area of the roads from the forest area using “1 Subtract (2+tolerance)”:
-
Overlap of streets and forest
-
Without overlap
Another example of unnecessary overlap can be found in the following locations (marked with a preview line):
-
Overlap of streets and forest
-
Without overlap
Some overlaps are difficult to detect. The gap width around settlement areas is 0.3 mm (parameter colorspec(2,1).d_side) and around roads 0.45 mm (parameter colorspec(3,1).d_side), so cutting causes a larger gap here than before:
-
Overlap of streets and forest
-
Without overlap
The following images show the effect of the changes in the final result. You can see that the bottom of the forest parts has been raised, meaning that the forest parts are no longer as high:
-
Overlap of streets and forest
-
Without overlap
Now edit any other possible overlaps.
Save the project.
Connect, delete, or make small parts transparent
The minimum part size is currently 2 mm in the diagonal of the bounding box. Parts with these dimensions are more difficult to print and may be too small to use as puzzle pieces. It is possible to automatically mark such small parts depending on their size and then either delete them, connect them to other parts, or make them transparent. Since the different objects not only have different colors but also different heights, transparent objects can still be distinguished.
Press the button “Tab: Edit map - Advanced - Create united equal colors” because the dimensions of the map objects were changed in the previous steps. Then execute the function “Menu: File - Map editing - Detect small pieces”. When prompted, first enter color number 6 (forests). With the default settings for minimum dimensions (diagonal 5 mm, area 6 mm^2), some small areas will be detected and highlighted with a preview polygon:
The next steps are:
- Divide the forest into regions if you haven't already done so (“Tab: Edit map - Advanced - Regions”).
- Sort the red preview polygon to the top of the map objects table so that the small forest areas can be selected with the mouse: Select the preview polygon, then press the “Tab: Edit map - Basic - Back/First” button.
- Now decide on a case-by-case basis whether the small areas should be deleted, made transparent, connected, or left as they are.
- Save the project regularly.
In this case, the small area is connected to the neighbouring forest area (follow the procedure described above for connecting settlement areas):
-
Initial state
-
Preview line
-
Connected forest area
In this case, the small forest area is deleted:
If a forest or settlement area is almost completely covered by other objects, it should also be deleted.
Once all small forest areas have been worked on, the red preview polygon should be hidden or deleted for a better overview.
Repeat this procedure with the remaining color numbers and decide in each case what the minimum dimensions should be and how the objects should be handled.
Editing small map objects may also require minor cosmetic corrections, for example:
-
Example 1: Small water area and minor road
-
Example 1: After graying and repair
-
Example 2: A minor road bridge has interrupted a primary highway and a railway
-
Example 2: After the repair
If overlaps have been created or gaps reduced as a result of editing:
- Remove the overlaps using the “1 Subtract (2+tolerance)” function as described above.
- Alternative (takes longer, but is recommended): After completing all changes, run the “Menu: File - Map editing - Simplify map” function again and repeat the “Menu: File - Map editing - Detect small pieces” function to check whether anything has been overlooked.
Save the project.
Identify fragile parts
If a larger piece has one or more thin sections, it can easily break there. Such potential break points should be reinforced, especially in reusable puzzles. If the pieces are only assembled and glued once, the following check can be skipped.
Execute the function “Menu: File - Map editing - Detect fragile pieces.” Enter the color number to be checked and start again with the smallest number 6 (forests). The minimum width of possible break points is set to 1 mm. For large parts, this value should be higher.
Pressing OK shifts the boundary line of the “united equal colors” internally by half the entered width inwards and then back again. If there is a difference between before and after and the difference area is located in the middle of the part, this area is marked as a possible break point with a preview polygon. Here, the function detects five possible break points in the forest:
The procedure for reinforcing the break points will now be demonstrated using examples. As always, the project should be saved regularly.
The following images show a fragile puzzle piece and an enlargement of the possible break point:
-
Complete fragile forest piece
-
Possible breaking point
Because forest areas are cut off as standard from settlement areas so that they do not overlap, the settlement area must be reduced in order to increase the forest area:
- Sort the red preview polygon to the beginning of the map object table so that the forest can be selected with the mouse (button “Tab: Edit map - Basic - Back/First”). The path running above the forest can be temporarily hidden for editing (“Tab: Edit map - Basic - Hide selection”).
- Select the fragile area of the forest with the mouse. Then, with the “Move vertex” function activated (tab “Edit map - Advanced”), move the nodes of the forest to widen the possible break point. It is also possible to delete nodes in an area selected by left-clicking and dragging with the mouse using “Delete vertices.”
- Left-click on the settlement area (PlotNo 1) and then middle-click on the forest area (PlotNo 2). Press the "1 Subtract (2+tolerance)" button. The settlement area has been reduced in size, and the gap is large enough that the parts do not overlap.
- Now, use ("Tab: Edit map - Basic - Restore all") to unhide the temporarily hidden objects.
-
Reinforced breaking point
-
Settlement area reduced
Another way to reinforce weak spots is to place a strip with the same object number over the potential break point, like an adhesive tape. The procedure is as follows:
- Use “Draw line” to create preview lines that are to be converted into strips (tab “Edit map - Advanced”).
- Left-click on the forest or alternatively enter the object number of the forest in the “Map object number” edit box, here ObjNo 12.
- Enter the line width (“Line width / mm”), here 1 mm.
- Select the preview lines and press the “Preview line to line map object” button.
- If necessary, move the strips to the correct position.
- Subtract the strips one after the other from the settlement areas using “1 Subtract (2+tolerance)” as described above.
-
Possible breaking points
-
Preview lines
-
Converted preview lines
-
Settlement area reduced
The third fragile forest area is almost completely covered by a railway line. It will be deleted on this occasion:
-
Forest piece almost completely overlapped
-
Forest piece deleted
The fourth part marked as fragile will not be reinforced because it is small and therefore sufficiently stable:
Repeat this for any remaining weak points of color number 6 and for all other color numbers. For line objects, the minimum width of possible break points must be entered as a value smaller than the line width, for example 0.7 mm for a line width of 0.8 mm. The line width of a line map object can be displayed using the context menu.
If previous edits have caused overlaps or reduced gaps: Run the function “Menu: File - Map editing - Simplify map” again. If all overlaps or reduced gaps have been corrected individually with “1 Subtract (2+tolerance)”, simply press the “Tab: Edit map - Advanced - Create united equal colors” button. Then repeat the execution of “Menu: File - Map editing - Detect fragile pieces” to check whether anything has been overlooked.
Save the project.
Check texts and symbols
The previous steps may have changed some areas. If the map contains puzzle pieces with text and/or handles, you should check again as described above using the function “Menu: File - Map editing - Detect misplaced texts and symbols” to ensure that each individual puzzle piece has text and at least one handle.
This check is not necessary here.
Simplify map: Repeat
If previous edits have resulted in overlaps or reduced gaps, or if texts or symbols have been changed, the function “Menu: File - Map editing - Simplify map” should be executed one last time at this point.
Filling holes
Holes in area objects (here: settlement areas, forests, water areas) can have various causes, for example:
- a clearing in a forest or
- an undeveloped area in a settlement area or
- an island in the water.
However, it may also be that the hole does not correspond to reality:
- if the include tags of the map object defined in the project parameters are incomplete, or
- if the OSM data is incomplete.
There are two basic ways to close holes:
- For incomplete include tags: Improve the include tags in the project parameter file and recreate the map object. This is the best method, but should only be done at the beginning of editing.
- Close the hole manually to correct the errors mentioned or to simplify the puzzle piece and the print. This is usually possible and advisable at the beginning of the editing process, but in one specific case it should only be done at the end: if a small settlement area is located in a forest, the hole in the forest may only be closed after the last execution of “Simplify map,” because otherwise the forest will be cut up again by settlement areas.
Automatic search for small holes
Small holes can be searched for automatically. The procedure for automatic detection and manual closure is demonstrated using the example of a small hole in the settlement area:
- Run the function “Menu: File - Map editing - Detect small holes.” Enter the color number 7 (settlement areas) to be checked and the minimum dimensions of holes (for example, diagonal 4 mm and area 5 mm^2).
- With these settings, the function marks five small holes in the settlement areas:
Some of these holes are actually undeveloped areas, while others are errors in the OSM data. This is the case with the hole shown below. A comparison with the OSM map shows that there is a building at this location, but the area below the building does not have a tag:
The hole should be closed:
- Create a closed preview line around the hole as a patch, for example a rectangle.
- Convert the closed line into a preview polygon.
- Left-click on the settlement area or enter the object number of the settlement areas (10) in the “Map object number” field in the “Edit map - Advanced” tab.
- Select the preview polygon and press the “Preview to map object” button (without activating the “Merge” checkbox). This will cover the hole.
-
Preview line around the hole
-
Preview polygon around the hole
-
Settlement area around the hole
Also check the other small holes and decide in each case whether they should be closed to simplify printing, because they are a result of an error, or because they are covered by other objects.
Also check the other colors used to create area objects. In this example, these are color numbers 6 (forests) and 16 (water).
Save the project.
Correction of incomplete areas
Incomplete include tags can cause not only small holes, but also larger areas to be missing. It is therefore advisable to compare the 2D map with the OSM map to check that the result is correct. In doing so, it was noticed that a tram depot was not displayed as a built-up area:
The problem is the tag landuse=railway used for this area. This tag is intentionally not included in object 10 (settlement areas) because otherwise the areas along railway lines would also be created as narrow strips of settlement areas, which is unwanted. On the other hand, this also tags railway stations and locomotive depots, for example, which can certainly be counted as built-up areas.
For this reason, the tram depot is not shown here as a built-up area. Together with other untagged areas south of the depot, this results in a larger hole.
Create a preview polygon as a patch and close the hole as described above. Then subtract the object “Boundary names and cutting lines: borough” from the patch to separate the puzzle pieces again:
-
Settlement area completed
-
Puzzle pieces separated again
Save the project.
Simplify printing by closing holes
Another way in which closing holes can simplify printing is shown here. Look at the following holes in the forest:
-
Small settlement area in the forest
-
Small settlement areas in the forest
The disadvantages of the current situation are:
- The settlement area must be placed on a high pillar in the underlying color.
- The clearing on the mountain peak is covered by a symbol and is not visible anyway.
A tall, narrow pillar can easily break during printing or assembly. Therefore, it is advisable to seal the holes in the forest in the same way as described above:
-
Closed holes in the forest
-
Closed holes in the forest
Advantage: The small settlement areas are now placed directly on the forest piece and no longer on a pillar stretching through the forest piece in the underlying color:
-
Before closing the holes
-
After closing the holes
After this step, “Simplify map” must not be executed again, otherwise the forest will be cut up again by the settlement area.
Save the project.
Create map STL files
The editing of the map is now complete. This is the result:
Now execute the function “Menu: File - Create map STL files” (duration here: 48:04 min). First, the upper sides of all parts are calculated. While the lower sides are being added, the progress of the calculation can be tracked via 3D views. Once completed, do not close the window with the overall view of the map yet, because the frame will also be added there in the last step.
The following files are stored in the project directory:
- An automatic backup of the project named “HD - before create map STL files - v1.1 ...”.
- The text file “HD - map2stl summary.txt” with information about the map. This can be used to create a material list and a checklist for printing.
- A copy of the project parameter file “MapLab3D_ProjectParameters_1_1_0_0.xlsx”, if it was not loaded from the project directory, to save the settings for subsequent changes.
The following files are stored in the “STL” subdirectory:
- An overview named “HD - map topview ...”, which can be used as a puzzle template. In this view, all text is highlighted in black, even if it is transparent.
- The STL files sorted by tile number and color number, as well as preview images as jpg and MATLAB figures. The bottoms of the individual parts in a file have all been lowered to a height of 0 mm so that the parts can be printed without supports.
- Views of each tile with all objects and an overview of all tiles (if there is more than one tile).
In the subdirectory “STL_repaired”, the STL files that have been additionally processed by a repair algorithm included in the app are stored. If a repair was not successful, the file name is suffixed with “... - to be repaired.stl.” Repairs must then be carried out using an external program, such as Prusa Slicer.
Note: MATLAB figures can be opened later for a closer look by selecting “Menu: View - Open figure file (.fig)”.
You should now check the STL files or preview images for any parts that may be difficult to print.
Create frame STL files
Call up the function “Menu: File - Create frame STL files”. First, the frame parameters are queried so that the project parameter file does not have to be reloaded every time changes are made. When you call up the function for the first time, the values entered in the project parameter file under “frame” are displayed. The meaning of the parameters is illustrated with a sketch in the file “MapLab3D_ProjectParameters_1_0_x_Reference.xlsx” in the “PP ref” spreadsheet:
- In this example, the frame width b2 must not exceed 20 mm, otherwise the frame parts could be too large for the printer (“maximum object size”).
- The frame height is set using the value h2. The best setting depends on the terrain height and must be found by trial and error.
- The value h1=13.8 mm is composed of the thickness of the base plate (d2=12 mm) and the base plate support (the difference of 1.8 mm).
- The value d2=12mm means that the two tiles from above and the frame from below should be glued to a 12mm thick base plate. If the map consists of only one tile, a base plate is not necessary and d2 can be set to 0mm (then h1 must also be adjusted). However, even with only one tile, a thick base plate has the advantage that a mounting hook can be easily screwed on.
- The values r1h, r1v, r2h, and r2v can be used to adjust the radius of the inner and outer upper edges.
Pressing OK creates the STL data of the frame and adds the frame to the overall view of the map (window “3D map: T1 to T2”) or modifies it in the overall view. Through trial and error, the following values are selected here (the resulting cross-section of the frame is displayed after pressing “OK”):
Finally, enter the modified frame parameters in the project parameter file (in the project directory) for documentation purposes and for subsequent changes.
This is the preview of the final map generated using the “Create map STL files” and “Create frame STL files” functions:
Printing STL files
The following steps are recommended in preparation for printing:
- Double-check all STL files for potential printing issues so that corrections can be made in time.
- Delete all unnecessary project saves, as they can take up a lot of disk space.
- If files in the “STL_repaired” subdirectory have the suffix “ - to be repaired.stl” in their file name, they should now be repaired, for example with Prusa Slicer.
- Open the file “HD - map2stl summary.txt” and copy the contents into the “map2stl summary” spreadsheet of the project parameters file. Then copy the section “Files (Creation of a checklist for printing)” into the “checklist” spreadsheet (insert values only).
- Use your printer's slicer software to create the machine code file for each repaired STL file:
- Open the STL files individually. The parts are arranged in the STL files as they appear on the map. For printing, the parts can be rearranged to reduce traveling distances and printing time.
- Start slicing. The parameters used here for an FDM (Fused Deposition Modeling) printer are:
- Nozzle diameter 0.4 mm
- Layer height 0.2 mm
- Infill 15%
- Support structures are not required.
- Enter the dimensions, calculated weight, and printing time into the checklist.
- Save the machine code and also the edited STL files if you want to upload your work to the Internet later.
- Get the materials you need:
- Filament/resin: Below the checklist, you can calculate the total amount of each color you need by entering the color number.
- Base plate: The dimensions should be slightly smaller than those of the map, for example: 249 mm x 129 mm x 12 mm (map size 250 mm x 130 mm, see “map2stl summary” and value d2=12 mm of the frame).
- Print out the checklist so that you don't lose track of anything during printing.
Now print out the parts.
Note: When using an FDM printer and experiencing adhesion problems, it can be helpful to coat the print bed with a glue stick after approximately every third print job and spread the glue evenly with a wet cloth. This prevents small parts from coming loose during printing. For large tile bases, additional glue can be applied to the corners to prevent them from lifting off the print bed (“warping”).
Final result
This is the final result:
CURRENT STATUS OF THE REVISION
If you've made it this far, congratulations! You've now learned many of the app's basic features and can use this knowledge to create your own map.
Further information can be found:
- About the app's functions: in the tooltips (activate “Menu: View - Show Tooltips”).
- About the project parameters: in the file “MapLab3D_ProjectParameters_x_x_x_Reference.xlsx”.
- In the MapLab3D Wiki: MapLab3D.
- In other example projects: Example projects.
- For your own customized settings, you will need to familiarize yourself with the OpenStreetMap tags.
How you can contribute:
- Report bugs: Issues.
- Suggest improvements: Discussions.
- Improve, expand, or translate the MapLab3D Wiki.
- Make your own work available for others to download.
Publication
You may want to make your work available for others to download. Here is a selection of websites for 3D printer templates:
- Thingiverse
- Printables
- Cults. Cults also has a separate category for maps: MAPS.
Enter the name of the program in the search terms (tags) so that maps created with MapLab3D can be easily found:
- maplab3d
Other possible tags are:
- map
- 3D map
- relief map
- topographic map
- relief
- topography
- terrain
- geography
- puzzle
- jigsaw


















































































































































