Digitransit/Helsinki region Swedish road names import
Helsinki Regional Transport Authority HSL has a need for the Swedish road names in OSM. There would be basically three possibilities to import the road names from: Digiroad Database (CC BY 4.0) from Finnish Transport authority, VRK Database (CC BY 4.0) by the Population Register Centre, or the Topographic Database (NLSFI License) from the National Land Survey of Finland. Since Finnish Transport Agency is partner in the Digitransit project and because Finnish Transport Agency has provided explicit written permission regrading the CC-BY 4.0 license that OpenStreetMap Foundation requires (guidelines) this plan considers the Digiroad option.
Goals
Aim of the import is to be able to show the Swedish road names in the various HSL maps. Therefore the practical goal is the following:
- Import name:sv=* values for the roads in Helsinki, Espoo, Vantaa, Sipoo, Kauniainen, and Kirkkonummi municipalities that have both Swedish and Finnish as official languages (Finnish being majority).
Schedule
Plan is to do the import during 30th of March - 31st of March, 2017.
Following topics need to be considered:
- Licensing rights (CC-BY 4.0), OpenStreetMap Foundation has now guidelines. Written permission by Finnish Transport Agency has also been received
- Data preparation, i.e. how to prepare the Digiroad data for the import
- Data merge, i.e. how to merge the prepared Digiroad data to the OpenStreetMap
The last two steps are explained in more details below. The actual import, after community buyout and license compliance is verified, can be done in about two weeks, one week for technical implementation, and second week for the actual import.
Import Data
Background
Provide links to your sources.
Data source site: http://www.liikennevirasto.fi/web/en/open-data/digiroad
Data license: http://creativecommons.org/licenses/by/4.0/ (see also http://www.liikennevirasto.fi/web/en/open-data/terms-of-use)
Type of license: CC-BY
Link to permission: http://bit.ly/2nvrxgk
OSM attribution: https://wiki.openstreetmap.org/wiki/Contributors#Finnish_Transport_Agency
ODbL Compliance verified: yes
OSM Data Files
Link to your source data files that you have prepared for the import - e.g. the .osm files you have derived from the data sources.
Import Type
Identify if this is a one-time or recurring import and whether you'll be doing it with automated scripts, etc.
New roads are constructed and their geometries added to the OSM also after the initial import, so import should be recurring but it needs to be find out how often this should be done.
Identify what method will be used for entering the imported data into the OSM database - e.g. API, JOSM, upload.py, etc.
JOSM will be used for entering the changed data to the OSM database.
Data Preparation
Data Reduction & Simplification
Describe your plans, if any, to reduce the amount of data you'll need to import. Examples of this include removing information that is already contained in OSM or simplifying shapefiles.
The name:sv=* tags will only be added to the existing ways that have the highway=* tag, no geometry additions or changes will be made. If a road already has the name:sv=* tag then it is not changed.
Tagging Plans
Describe your plan for mapping source attributes to OSM tags.
The roads with the highway=* that have name=* will be updated if a Finnish match for the name=* is found from the Digiroad database. The values of the field tienimi_su from the Digiroad DR_LINKKI_K.shp files are compared to the name=* in OSM. The values of tienimi_ru are exported from the Digiroad DR_LINKKI_K.shp and name:sv=* tags with the values are added in OSM.
In addition source:name:sv=Digiroad.fi is added for each modified road.
Changeset Tags
Describe how you'll use changeset tags in the import.
Data Transformation
Describe the transformations you'll need to conduct, the tools you're using, and any specific configurations or code that will be used in the transformation.
PostGIS database is used for storing the Digiroad data. OSM data is downloaded via the Overpass API. A Python script available in GitHub is used in the transformation.
Data Transformation Results
Post a link to your OSM XML files.
https://github.com/ernoma/Digiroad-Digitransit-OSM-import/tree/master/Digiroad_osm_files
Data Merge Workflow
Team Approach
Describe if you'll be doing this solo or as a team.
- HSL_OSM (on osm, edits, contrib, heatmap, chngset com.) / HSL_OSM_Digiroad_import (on osm, edits, contrib, heatmap, chngset com.)
- Ideas received from HSL_HRT (on osm, edits, contrib, heatmap, chngset com.), eglatorre (on osm, edits, contrib, heatmap, chngset com.), and many others
- Supervision by HSL_HRT (on osm, edits, contrib, heatmap, chngset com.)
- Many others have provided various support
References
List all factors that will be evaluated in the import.
- Could also edit roads with name:fi tag without name and name:sv tags but those are so few (under 10 in Helsinki region in March 2017) that this editing can be done manually, see http://overpass-turbo.eu/s/nBE
- a report in JSON format is created for Digiroad road names that can be found in OSM and have Swedish name both in Digiroad and OSM but the Swedish names do not match. The script for creating the JSON file is in GitHub. The report json files are in: https://github.com/ernoma/Digiroad-Digitransit-OSM-import/tree/master/sv_name_missmatch
- A list of such Finnish road names is created that are in Digiroad but cannot be found in OSM for each municipality. The script for creating the list is in GitHub. The report json files are in: https://github.com/ernoma/Digiroad-Digitransit-OSM-import/tree/master/missing_road_names
Workflow
Detail the steps you'll take during the actual import.
Information to include:
- Step by step instructions
- Changeset size policy
- Revert plans
The Digiroad Esri shape files for Uusimaa county are downloaded via Digiroad download service and stored in a PostGIS database. The commands are as follows:
sudo -u postgres -s createdb -U postgres digiroad_import_db psql -p 5432 -d digiroad_import_db CREATE EXTENSION postgis; CREATE USER osm_import WITH PASSWORD 'osm_import'; GRANT USAGE ON SCHEMA public TO osm_import; GRANT SELECT ON kunnat_ita, kunnat_keski, kunnat_lansi TO osm_import; \q cd Digiroad/UUSIMAA/UUSIMAA_1 shp2pgsql DR_LINKKI_K.shp public.kunnat_lansi > digiroad_lansi.sql psql -p 5432 -d digiroad_import_db -f digiroad_lansi.sql cd Digiroad/UUSIMAA/ITA-UUSIMAA shp2pgsql DR_LINKKI_K.shp public.kunnat_ita > digiroad_ita.sql psql -p 5432 -d digiroad_import_db -f digiroad_ita.sql cd Digiroad/UUSIMAA/UUSIMAA_2 shp2pgsql DR_LINKKI_K.shp public.kunnat_keski > digiroad_keski.sql psql -p 5432 -d digiroad_import_db -f digiroad_keski.sql
One municipality at time, the municipality borders are retrieved via Overpass Turbo and exported as GeoJSON, e.g.:
[bbox:{{bbox}}]; ( relation[boundary=administrative][name=Espoo] ); out meta; >; out meta;
Then following commands are run on command line:
ogr2ogr -f GeoJSON -explodecollections espoo_rajat_union.geojson espoo_rajat.geojson -dialect sqlite -sql "SELECT ST_Union(geometry) as geometry FROM OGRGeoJSON" python get_poly.py espoo_rajat_union.geojson espoo.poly
Then highways without Swedish names are get for the municipality via Overpass Turbo and exported as OSM files (the poly in the Overpass query is given contents of the get_poly.py script output):
way[highway][name][!"name:sv"](poly:""); out meta; >; out meta;
Then a Python script retrieves Digiroad road names from the PostGIS database, does the name comparison for OSM data and when appropriate adds the name:sv tags to the OSM data. The modified data is saved as an OSM file that is in JOSM format. The OSM file is opened in JOSM, validated and uploaded to the OSM database.
There are 10,000-15,000 ways tagged with the highway=* that have name=* but no name:sv=* in Helsinki region. The maximum edit number is 10,000 per changeset. Since the import is done municipality by municipality the changeset size is not an issue. If a municipality has too much data (maximum of few megabytes per municipality) for JOSM to handle then the import for the municipality is divided for a few smaller size sets.
If there is need for a revert then community is consulted, for example, via IRC: irc://irc.oftc.net #osm-fi.
Conflation
Identify your approach to Conflation here.
- If a road already has the name:sv=* tag then it is not changed. However, a report of differences in Swedish names is created.
- Roads at the borders of the municipalities are manually looked through before import. If a road in OpenStreetMap database continues over a municipality border and it is not yet split at the border then it is split. This is done because the name of the road might be different in different municipalities.
QA
Add your QA plan here.