Finnish topo maps are really great, but I do not like the way how they are generalized to small scales. For long distance running/hiking, I prefer a relatively small scale map (say, 1:50000), for both route planning and paper map printing.
The problem is that many important objects are missing at small scales: all hiking trails and small roads, tourist infrastructure (open huts and shelters), etc. Fortunately original vector data are available. In this project I try to produce a nice-looking hiking map for some regions which are interesting for me.
At the moment I have a few regions ready: Kilpisjärvi area, UKK park, Eastern Finland (Lahti - Jyväskylä - Imatra)
I produce raster images with OziExplorer reference, raster tiles (mbtiles and Osmand sqlitedb), IMG vector map for Garmin devices.
Maps can be downloaded from my website or viewed in nakarte.me
There are four main data sources:
-
Finnish Topographic map (vector) from National Land Survey of Finland (https://maanmittauslaitos.fi). This is 1:100'000 map, I'm using it as the main data source. I'm using Shape format splitted in the standard Finnish map division.
-
Finnish Topographic Database from National Land Survey of Finland (https://maanmittauslaitos.fi). This is most detailed data, I'm taking some objects from there.
-
Norwegian N50 map from Norwegian Mapping Authority (https://www.kartverket.no).
I'm using my mapsoft2 ( https://github.com/slazav/mapsoft2 ) system, as in my mountain map project ( https://github.com/slazav/map_hr )
The work is splitted in a few steps:
- Converting source data at the map structure level (without knowledge
about specific objects or object types). This is done separately for
every source (see programs
import_fi1
,import_fi2
,import_no1
,import_se1
andvmap1
directory).
- Maps are converted to my vmap2 format.
- Coordinates are converted to WGS84.
- Points in line and area objects are filtered.
- Some names of data fields are translated, some default/useless fields are dropped.
- Data is combined and cropped to 100'000 Finnish map standard division.
- A 100m margin is introduced for line/area objects, to avoid boundary effects.
- Converting data at the object type level (without knowledge about
specific objects) (see
make_map
program andvmap2
directory). Types are selected and converted, using type translation tables. Some special types are treated separately.
At this step data from all sources are mixed together and splitted into two parts:
-
Base map, objects which I want to keep without any modifications.
-
Label map, point objects with names which I want to modify.
- Conversions/editing at the object level. This step is done only
with Label maps. There is a "manual" of this data (see
vmap3
directory). A few things are done at this step:
-
Label sizes and positions are adjusted
-
Points can be edited: moved, deleted, renamed. There is a program
update_map
which can create or apply a patch for such modifications. This allows me to update map from source without loosing edited data. -
Any additional objects can be added at this step. For example I added a few forest clearings near UKK park.
-
There is a separate manually edited file for adding point objects (
points_add.vmap2
). If you want to add a missing house, fireplace, etc., send me a pull request.
Original data: [FI1] [FI2] [NO1] [SE1]
| | | |
(import_fi1) (import_fi2) (import_no1) (import_se1)
| | | |
*.fi1.vmap2 *.fi2.vmap2 *.no1.vmap2 *.se1.vmap2
| | | |
--------> (make_map) <----- <-----------
/ \
/ \
base+label maps: *_b.vmap2 *_t.vmap2 points_add.vmap2
| | /
| (update_map), manual editing
| |
| *.vmap2
| |
--------->|
output