2026 Finnish Landuse Import
The 2026 Finnish Landuse Import imports the Finnish forest stand register (metsävarakuviot, Metsäkeskus) and the agricultural parcel register (kasvulohkot, Ruokavirasto). The datasets are preprocessed offline into PBF files in 12 km × 12 km map sheet files and manually conflated into existing data in JOSM via a currently in-development conflation plugin.
Status: planning (August 2026). Preprocessing pipeline is ready. Conflation/review plugin is under development.
- Import frequency: one-time.
- Import method: semi-automated. Offline preprocessing with Python scripts, then manual per-sheet review, conflation and upload in JOSM.
- Area: nationwide (Finland), one map sheet at a time.
Goals
The import adds register-based data for:
- Metsäkeskus forest stand register: productive forest stands (
landuse=forest,leaf_type=*,leaf_cycle=*,genus=*,species=*), clearcuts (man_made=clearcut), low-productivity and open stands (natural=scrub,natural=heath,natural=bare_rock), mires (natural=wetland,wetland=*), water bodies (natural=water). - Ruokavirasto parcel register: farmland (
landuse=farmland,organic=*,produce=*on orchards only), with landuse overrides for semi-natural grassland, orchards and plant nurseries, and environmental-agreement areas (buffer zones, biodiversity areas, an agreement wetland). - Geometry: register boundaries are more precise than existing OSM mapping; a 3 m snap pass and shared-node handling keep the result edge-to-edge with adjacent landuse, roads and water.
- Scale: ~11.9 million forest stands and ~985,000 farmland parcels, one 12 km sheet at a time.
Only area features are imported. Roads, buildings, water and other linear features are not touched.
The earlier 2011 import of Corine 2006 landcover data and 2019 forest import (reverted 2021) were based on coarse raster data. This import uses official vector-based stand-level registers.
Timeline
- Data preparation: data processing pipeline is ready as of 2026-08-06.
- Community consultation: pending.
- Sample imports: pending conflation plugin completion.
- Full import: pending community approval and conflation plugin completion.
Import Data
Two official datasets published with a CC BY 4.0 license:
| Dataset | Provider | Description | License |
|---|---|---|---|
| Forest stand data (metsävarakuviot) (2026) | Metsäkeskus (Finnish Forest Centre) | Nationwide forest stand layer: geometry, soil type, stand development class, tree species, wetland and mire classes, water bodies within the forest landscape. | CC BY 4.0 |
| Agricultural parcels (paikkatietoja sisältävät kasvulohkot) (2025) | Ruokavirasto (Finnish Food Authority) | Nationwide agricultural parcel layer from the subsidy register: geometry, crop codes for orchards, organic indicators. | CC BY 4.0 |
Additionally, the TM35 map sheet division system is used in the segmentation of data for ease of manual processing.
Download and license pages:
- Metsäkeskus: Finnish Forest Centre — dataset download at avoin.metsakeskus.fi, license terms at Metsäkeskus open data page.
- Ruokavirasto: Finnish Food Authority — dataset download at inspire.ruokavirasto-awsa.com, license terms at Ruokavirasto spatial data page.
ODbL Compliance verified: pending. Waiver request emails sent to both providers. Verbal confirmation received from Ruokavirasto, with apparent enthusiasm.
Data preparation
Data is chunked into TM35 map sheet quadrants (12 km × 12 km, e.g. M3343L) and delivered as OSM PBF files. Preprocessing runs offline, before any OSM editing, in a Python pipeline (GeoPandas, Shapely, Mapshaper, pyogrio). The pipeline is version-controlled and reproducible from the public source datasets. The script repository for the data processing pipeline and the conflation plugin will be added before full rollout.
The data prepartion pipeline runs in three stages.
| Stage | Script | Purpose | Output |
|---|---|---|---|
| 1 | 01_forest_prep.py
|
Mapshaper cleanup and simplification, tag mapping, tiling to TM35 sheets. | {sheet}_forest.gpkg
|
| 2 | 02_farmland_prep.py
|
Same processing for farmland parcels. | {sheet}_farm.gpkg
|
| 3 | 03_osm_merge.py
|
Forest and farmland data merged, nodes snapped to edges and merged within tolerance, converted to OSM format. | {sheet}.osm.pbf
|
Stage 1: forest prep
01_forest_prep.py:
- Mapshaper
-clean snap-interval=0.1(repairs invalid geometries),-simplify interval=6.0 keep-shapes, in EPSG:3067. - Assign TM35 sheets by centroid (features are not clipped).
- Tag from
scripts/tag_mapping_forest.xlsx(LANDCOVER / DEVELOPMENT / SPECIES sheets): landuse/natural/wetland per maingroup × subgroup × fertilityclass; A0 →man_made=clearcut(landuse dropped, natural kept); T1/T2/Y1 →landuse=forestwhere no landcover applies,natural=scrubwhere no natural applies,wetland:vegetation=scrubon mire classes; leaf_type/leaf_cycle/genus/species per maintreespecies. - Add
source=Metsäkeskusandsource:date=*(register update date);ref:FI:metsakeskus=*with--include-refs. - Write per-sheet
output/staged_tiles/{sheet}_forest.gpkg.--sheetprocesses only that one TM35 sheet (e.g. M3343L).
Stage 2: farmland prep
02_farmland_prep.py:
- Read the national parcel GPKG; mapshaper clean and simplify as in stage 1.
- Assign TM35 sheets by centroid.
- Tag from
scripts/tag_mapping_farmland.xlsx(one row per KASVIKOODI): landuse (farmland/meadow/plant_nursery/orchard), produce, natural;organic=yeswhere LUOMUVILJELY = 1.;source:date=*from the register inspection date. - Write per-sheet
output/staged_tiles/{sheet}_farm.gpkg.
Stage 3: merge and OSM export
03_osm_merge.py, per sheet:
- Merge the sheet's corresponding farm and forest files. Mapshaper
-clean snap-interval=3.0snaps shared boundaries across both datasets. - Convert to EPSG:4326. Drop non-polygon artifacts and the mapshaper
fidcolumn. - Dissolve adjacent features with identical tags.
- Export OSM XML: node coordinates rounded to 7 decimals (node cache), ways split at 2000 nodes, holes and multiparts as multipolygon relations (tags on the relation).
- Convert to PBF with
osmconvert64→output/osm_pbf/{sheet}.osm.pbf.
Import data tagging
The mapping is defined in two spreadsheets read by the pipeline: scripts/tag_mapping_farmland.xlsx (farmland, one row per KASVIKOODI) and scripts/tag_mapping_forest.xlsx (forest: LANDCOVER, DEVELOPMENT and SPECIES sheets). The farmland table below lists the KASVIKOODI.codes that carry a produce=* tag. The forest table mirrors the forest spreadsheet. produce=* is emitted only for orchards, as crop rotation makes crop= meaningless on annual fields.
Farmland tagging plan (Ruokavirasto)
Most farmland features receive landuse=farmland, source=Ruokavirasto and source:date=* (register inspection date). organic=yes is added where LUOMUVILJELY = 1.
| OSM tag combination | English description | Finnish name / description (selite) | Source attribute condition (KASVIKOODI) | Parcels (2025) |
|---|---|---|---|---|
landuse=orchardproduce=apple
|
Apple orchard | Omenatarha | = 5210
|
764 |
landuse=orchardproduce=rowanberry
|
Rowanberry | Pihlajanmarja | = 5212
|
3 |
landuse=orchardproduce=pear
|
Pear orchard | Päärynätarha | = 5213
|
72 |
landuse=orchardproduce=fruit
|
Other fruit trees | Muut hedelmäpuut | = 5220
|
73 |
landuse=orchardproduce=plum
|
Plum orchard | Luumutarha | = 5221
|
72 |
landuse=orchardproduce=grape
|
Vineyard / grapes | Viinirypäle | = 5222
|
18 |
landuse=orchardproduce=cherry
|
Cherry orchard | Kirsikkatarha | = 5452
|
31 |
Forest tagging plan (Metsäkeskus)
Forest features receive source=Metsäkeskus and source:date=* (register update date). The table mirrors the LANDCOVER / DEVELOPMENT / SPECIES sheets of scripts/tag_mapping_forest.xlsx:
| OSM tag combination | English description | Finnish name / description (selite) | Source attribute condition |
|---|---|---|---|
landuse=forest
|
Productive forest stand on mineral soil | Metsämaa (kangas) | maingroup = 1, subgroup = 1
|
natural=scrub
|
Low-productivity scrubland | Kitumaa (kangas) | maingroup = 2, subgroup = 1
|
natural=heath
|
Dwarf-shrub heathland | Joutomaa (kangas / varvukko) | maingroup = 3, subgroup = 1
|
natural=bare_rock
|
Exposed bedrock / rocky ground | Kalliomaa / hietikko | maingroup = 3, fertility class = 7
|
natural=heath
|
Treeline fell zone (lakimetsä / tunturi) — mapped as heath | Lakimetsä / tunturi | maingroup = 3, fertility class = 8
|
landuse=forestnatural=wetlandwetland=swamp
|
Wooded spruce mire / difficult wooded mire | Metsämaa ja kitumaa, korpi | maingroup IN (1, 2), subgroup = 2
|
natural=wetlandwetland=swamp
|
Spruce mire on waste land | Joutomaa, korpi | maingroup = 3, subgroup = 2
|
landuse=forestnatural=wetlandwetland=bog
|
Wooded pine mire / wooded bog | Metsämaa ja kitumaa, räme | maingroup IN (1, 2), subgroup = 3
|
landuse=forestnatural=wetlandwetland=bog
|
Open bog on forest land | Metsämaa, neva | maingroup = 1, subgroup = 4
|
landuse=forestnatural=wetlandwetland=fen
|
Open fen on forest land | Metsämaa, letto | maingroup = 1, subgroup = 5
|
natural=wetlandwetland=bog
|
Open treeless bog | Avosuo (neva / räme-joutomaa) | (maingroup IN (2, 3), subgroup = 4) or (maingroup = 3, subgroup = 3)
|
natural=wetlandwetland=fen
|
Open rich fen | Avosuo / letto | maingroup IN (2, 3), subgroup = 5
|
natural=water
|
Water body (within forest dataset) | Vesistö | maingroup = 8
|
man_made=clearcut
|
Forest clearcut area | Aukea / uudistusala (hakkuutauko) | developmentclass = A0
|
leaf_type=needleleavedleaf_cycle=evergreen
|
Evergreen coniferous trees | Havupuu / havumetsä (mänty, kuusi, kataja, pihta jne.) | maintreespecies IN (1, 2, 8, 10, 11, 12, 16, 19, 22, 23, 30)
|
leaf_type=needleleavedleaf_cycle=deciduous
|
Deciduous coniferous trees | Lehtikuusi | maintreespecies = 14
|
leaf_type=broadleavedleaf_cycle=deciduous
|
Deciduous broadleaved trees | Lehtipuu / lehtimetsä (koivu, haapa, leppä, tammi, paju jne.) | maintreespecies IN (3, 4, 5, 6, 7, 9, 13, 15, 17, 18, 20, 21, 24, 25, 26, 27, 28, 29)
|
Notes:
- Development classes:
A0→man_made=clearcut; landuse is dropped (a clearcut is not forest cover), natural kept.T1/T2/Y1(sapling stands) →landuse=forestwhere no landcover applies,natural=scrubwhere no natural applies,wetland:vegetation=scrubon mire classes.plant_community=saplingsis not an established tag and is not emitted. - Species: named species additionally get
genus=*/species=*(e.g.Pinus sylvestris,Picea abies,Betula pendula) per code reference 622; generic classes (8, 9, 29, 30) get leaf_type/leaf_cycle only. - Fertility classes: fc 7 ("Kalliomaa ja hietikko") →
natural=bare_rock; fc 8 ("Lakimetsä ja tunturi") →natural=heath, as the fell zone is dwarf-shrub vegetation. - maingroup 4–7 and missing values (186 stands nationally) receive no landcover tag and are excluded.
Changeset Tags
| Key | Value |
|---|---|
import=*
|
yes |
mechanical=*
|
yes (required by the Automated Edits code of conduct) |
source=*
|
Metsäkeskus; Ruokavirasto |
source:url=*
|
https://www.metsakeskus.fi; https://www.ruokavirasto.fi |
source:date=*
|
2026 |
import:page=*
|
https://wiki.openstreetmap.org/wiki/2026_Finnish_Landuse_Import |
source:license=*
|
CC-BY-4.0 |
Discussion
The proposal has been posted onto the community forum. [1]