Slovenia Address and Building Import
DRAFT!
Government publishes address data which would improve the OpenStreetMap data in Slovenia.
Ideally the address changes would also be imported regularly (not a one-time import).
Source
GURS publishes the address points as ShapeFile under CC-BY 4.0 license at http://egp.gu.gov.si/egp/ (English: http://egp.gu.gov.si/egp/?lang=en)
Data structure is described in:
- http://www.e-prostor.gov.si/fileadmin/struktura/RPE_struktura.pdf (in Slovenian only so far, most detailed)
- http://prostor4.gov.si/imps/srv/slv/catalog.search#/metadata/25e80f41-8348-4759-bac1-ec56c7223509(Slovenian)
- http://prostor4.gov.si/imps/srv/eng/catalog.search#/metadata/25e80f41-8348-4759-bac1-ec56c7223509 (English)
Download by:
- Navigating to section "9. Register of spatial units", then
- Selecting either "Spatial units" (Prostorske enote) or "Streets" (Ulice) or "House numbers" (Hišne številke) radio button, then
- Clicking the button "Download" (Prevzem podatkov)
Source data is in "Slovenia D96" national grid and must be reprojected to WGS84 for use with OpenStreetMap.
Encoding in shapefiles is Windows-1250 and should be converted to UTF-8 for use with OpenStreetMap.
Same source is already being used for OpenAddresses, see https://batch.openaddresses.io/location/861
License
CC-BY 4.0 - https://creativecommons.org/licenses/by/4.0/
Terms details:
- Slovenian: http://www.e-prostor.gov.si/fileadmin/struktura/preberi_me.pdf
- English: http://www.e-prostor.gov.si/fileadmin/struktura/ANG/General_terms.pdf
Generally CC-BY data would need additional waiver signed (https://blog.openstreetmap.org/2017/03/17/use-of-cc-by-data/) defining how the attribution should be performed, but GURS has it already in their terms:
The data user shall indicate the data source in every publication of data or products. Such indications shall include the following data: "Surveying and Mapping Authority of the Republic of Slovenia, the type of data and the time to which the data refer and/or the date of the database."
which is stated on https://www.openstreetmap.org/copyright and details on https://wiki.openstreetmap.org/wiki/Contributors#Slovenia
Tagging
addr=*tags :addr:housenumber=*, eg "5" or "12a" or "35č", source column LABELA The addendum will be lowercased as it is usually on house number plates to follow on-the-ground principleaddr:street=*- street name from UL.UL_UIME , joined via UL_MID source column + " / " (separator) + name in alternative bilingual language (Italian / Hungarian) from (UL.UL_DJ column) (eg: "Otlica" or "Glavna ulica / Fő utca" or "Ulica Božidarja Jakca / Via Božidar Jakac") - See Multilingual names in Sloveniaaddr:street:sl=*- street name from UL.UL_UIME , joined via UL_MID source column (eg: "Otlica" or "Glavna ulica" or "Ulica Božidarja Jakca")addr:street:hu=*ORaddr:street:it=*- street name from UL.UL_DJ , joined via UL_MID source column (eg "Fő utca" or "Via Božidar Jakac"
addr:village=*- applicable for villages with street system but with differentaddr:city=*from village name, same logic regarding bilingualism applies, benefits:- Boosts user confidence that search result is correct, users in Slovenia are usually more familiar with village name than streets names.
- Make some addresses unique, e.g.: addr:street="Glavna Ulica" and addr:city="Lendava", because multiple villages share same pair of street name and postal area name,
addr:village=*makes it unique.
addr:place=*applicable in places (villages, hamlets) with no street system (no street name present), instead ofaddr:street=*, same logic regarding bilingualism applies- There was a lot of thinking about using
addr:street=*vsaddr:place=*for villages without streets, reasoningsaddr:street=*won:addr:street=*andaddr:place=*can't be used at same time hence we are usingaddr:village=*when we need both(see above aboutaddr:village=*)addr:place=*is not as descriptive or accurate asaddr:village=*- in ideal world we would use
addr:village=*for this scenario, but since software doesn't have good support foraddr:village=*(most mobile navigation apps totally ignoreaddr:village=*) we useaddr:street=*- long term plan is to do one massive one time "import" on whole country to switch from
addr:street=*toaddr:village=*once software supports foraddr:village=*.
- long term plan is to do one massive one time "import" on whole country to switch from
- There was a lot of thinking about using
addr:postcode=*numerical, 4-digit post code (eg 1000, 1234, 2000...) - PT_ID (from SI.GURS.RPE.PUB.PT.shp) joined via PT_MIDaddr:city=*as it appears in postal address, thus postal area name - PT_UIME (from SI.GURS.RPE.PUB.PT.shp) joined via PT_MID Bilingual in some cases, separated by "-" within same source field.addr:city:sl=*- Is obtained via splitting ofaddr:city=*when it contains " / " and first part is takenaddr:city:hu=*ORaddr:city:it=*- Is obtained via splitting ofaddr:city=*when it contains " / " and second part is taken
building=*tags :- Source / attribution tags (trend in recent imports is to only add these tags to changeset, but the connection is easier lost in such cases):
- Address:
source:addr=GURS- to denote that address was obtained from GURS - needed to distinguish if address is merged with building outline (some existing data: https://overpass-turbo.eu/s/BqO)source:addr:date=YYYY-MM-DD- shp field D_OD - Datum veljavnosti with proper formatting applied.ref:gurs:hs_mid=*- value of HS_MID field for preserving the numeric id from the source dataset (Question: should we usesource:ref=*orsource:addr:ref=*instead?)
- Building geometry:
source:geometry=GURS- to denote that geometry of building was obtained from GURSsource:geometry:date=YYYY-MM-DD- shp field DAT_ZAJ - Datum zajema with proper formatting applied.ref:gurs:hs_mid=*- value of HS_MID field for preserving the numeric id from the source dataset (Question: should we usesource:ref=*orsource:addr:ref=*instead?)
- Address:
- Intentionally skipped tags:
addr:country=SINot required if administrative country border is complete (it is, see 218657
218657)- commune / municipality - not needed, as there are
place=municipalitytags on polygons, see WikiProject_Slovenia/Regije#Ob.C4.8Dine_-_Admin_Level_.3D_8 - cadastral data, voting/school district... - irrelevant in OSM
Examples
Simple (most common) address tags (eg: node 6416214502 in Črnomelj - 69375954 , search, OSM inspector):
"addr:city": "Ljubljana",
"addr:housenumber": "14",
"addr:postcode": "1000",
"addr:street": "Wolfova ulica",
"ref:gurs:hs_mid": "12807155",
"source:addr": "GURS",
"source:addr:date": "1995-01-01"
No street name, but place name tags instead (eg: node 6411543913 in Spodnje Jezersko - 69304608 , search, OSM inspector):
"addr:city": "Zgornje Jezersko",
"addr:housenumber": "16a",
"addr:place": "Spodnje Jezersko",
"addr:postcode": "4206",
"ref:gurs:hs_mid": "12318294",
"source:addr": "GURS",
"source:addr:date": "2016-06-02"
Bilingual (Italian) street name tags:
"addr:city": "Piran / Pirano",
"addr:city:sl": "Piran",
"addr:city:it": "Pirano",
"addr:housenumber": "15",
"addr:postcode": "6330",
"addr:street": "Tartinijev trg / Piazza Giuseppe Tartini",
"addr:street:it": "Piazza Giuseppe Tartini",
"addr:street:sl": "Tartinijev trg",
"ref:gurs:hs_mid": "14051864",
"source:addr": "GURS",
"source:addr:date": "1995-01-01"
No street name, but bilingual (Hungarian) place name tags (eg: way 516987180 in Krplivnik / Kapornak - 69375181 , search, OSM inspector):
"addr:city": "Lendava / Lendva",
"addr:city:sl": "Lendava",
"addr:city:hu": "Lendva",
"addr:housenumber": "26",
"addr:place": "Trimlini / Hármasmalom",
"addr:place:hu": "Hármasmalom",
"addr:place:sl": "Trimlini",
"addr:postcode": "9220",
"ref:gurs:hs_mid": "12642318",
"source:addr": "GURS",
"source:addr:date": "1995-01-01"
Tools
Purpose built software https://github.com/openstreetmap-si/GursAddressesForOSM making use of:
- GeoCoordinateConverter - https://github.com/mrihtar/GeoCoordinateConverter
- gdal / ogr2ogr
- GURS data to split addresses into GeoJSON files by cities (naselja)
- OSM Conflator to produce JOSM file format .osm files with needed changes (or Osmsync or...)
- JOSM to manually upload generated JOSM file format .osm files
- Later, optional: Bulk_upload.py to upload JOSM file format .osm files
The results are published for review at https://addr.openstreetmap.si
Process
Data preparation stage (description, links to github, prepared data...)
Import stage (instructions for the importers)
Mandatory: dedicated user accounts with current_username + "_import" postfix, eg "username_import" (easy email alias eg: ime@gmail -> ime+osmimport@gmail)
People
Stefanb (StefanB on osm, edits, contrib, heatmap, chngset com.) /
StefanB_import (on osm, edits, contrib, heatmap, chngset com.)
fredi_alf (on osm, edits, contrib, heatmap, chngset com.) already imported some
DavidKarlas (on osm, edits, contrib, heatmap, chngset com.) /
DavidKarlas_Import (on osm, edits, contrib, heatmap, chngset com.)
Mitja Jež (Mitjajez on osm, edits, contrib, heatmap, chngset com.)
Janez Pavel Žebovec (on osm, edits, contrib, heatmap, chngset com.) /
JanezPavelZebovec_import (on osm, edits, contrib, heatmap, chngset com.)- you?
See also
- Forum: https://forum.openstreetmap.org/viewtopic.php?id=66162
- Import guidelines
- Addresses
- Multilingual names#Slovenia (there are Hungarian and Italian names used in Slovenia)
- https://github.com/openaddresses/openaddresses/tree/master/scripts/si Scripts for preparing data for OpenAddresses.
- Similar imports:
- Norway: Import/Catalogue/Address import for Norway
- New Zealand: LINZ/Address Import
- Czech Republic / Czechia: Address import from RUIAN
- ...
- OSM Inspector view of current addresses