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 principle
- addr: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 Slovenia
- addr: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=* OR addr: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 different addr: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 of addr:street=*, same logic regarding bilingualism applies- There was a lot of thinking about using addr:street=* vs addr:place=* for villages without streets, reasonings addr:street=* won:
- addr:street=* and addr:place=* can't be used at same time hence we are using addr:village=* when we need both(see above about addr:village=*)
- addr:place=* is not as descriptive or accurate as addr:village=*
- in ideal world we would use addr:village=* for this scenario, but since software doesn't have good support for addr:village=*(most mobile navigation apps totally ignore addr:village=*) we use addr:street=*
- long term plan is to do one massive one time "import" on whole country to switch from addr:street=* to addr:village=* once software supports for addr:village=*.
- There was a lot of thinking about using addr:street=* vs addr:place=* for villages without streets, reasonings addr:street=* won:
- addr:postcode=* numerical, 4-digit post code (eg 1000, 1234, 2000...) - PT_ID (from SI.GURS.RPE.PUB.PT.shp) joined via PT_MID
- addr: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 of addr:city=* when it contains " / " and first part is taken
- addr:city:hu=* OR addr:city:it=* - Is obtained via splitting of addr: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 use source:ref=* or source:addr:ref=* instead?)
- Building geometry:
- source:geometry=GURS - to denote that geometry of building was obtained from GURS
- source: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 use source:ref=* or source:addr:ref=* instead?)
- Address:
- Intentionally skipped tags:
- addr:country=SI Not required if administrative country border is complete (it is, see 218657 218657)
- commune / municipality - not needed, as there are place=municipality tags 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 (achavi, OSMLab), 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 (achavi, OSMLab), 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 (achavi, OSMLab), 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.)
- 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