Serbia/Projekti/Adresni registar
Source
Serbia government released address registry (streets and house numbers with geometries) on December 9th 2022 as open data from national cadastres (RGZ from now on). This got us georeferences addresses (street + house numbers) as points. The idea is that we organize and add these addresses in OpenStreetMap.
Currently, this data can be downloaded from website https://data.gov.rs/sr/datasets/adresni-registar/, as well as temporary location at https://download-tmp.geosrbija.rs/download/ (it requires either log in using eGov ID, or registering with new login using e-mail).
Licence
Serbian parliament ratified opening this data on December 12th 2022 in https://www.pravno-informacioni-sistem.rs/SlGlasnikPortal/eli/rep/sgrs/skupstina/zakon/2003/43/2/reg. (138/2022-274). The web application that hosts this data is located here.
Since this is government data, licence defined is here: https://data.gov.rs/sr/terms/. However, we are still actively looking to get licence of this data that comes from cadastres website itself.
Tagging rules
As part of this import, we rehashed and better defined address tagging rules, and they are here: Serbia/Addresses
Web report
https://dina.openstreetmap.rs/ar/
All RGZ addresses, as well as conflation status, as well as all found and matched OSM address can be found in link above. This report also includes QA reports.
Milestones
Here are some of the milestones that we need to do for this import:
Aktivnost | Napomena | |
---|---|---|
✅ | Start this wiki | :) |
✅ | Start topic in discourse | Plan, Tagging rules |
✅ | Make agreement where we put addresses | Explained at [1] |
✅ | Make agreement on cyrillic vs latin | Will it be "39B" or "39Б", discussion at forum, current agreement is to be latin |
✅ | Agree on data quality coming from RGZ | What if OSM has newer data? What if on-the-ground truth has different address? What if we have address and there is no building? This is for discussion at forum. Agreed, details in instructions |
✅ | Agree how we do import | Automated, semi-automated through iD, JOSM, tasking manager municipality-by-municipality or all together. We will do municipality-by-municipality, settlement-by-settlement |
✅ | Create technical soluition | More details in chapter below, mostly done |
❌ | Import addresses to OpenAddresses | Unrelated to import in OSM, but since this is open data, we should do this too |
✅ | Announce import to imports mailing list | Done here |
✅ | Add ourselves to copyright page | Added through this PR |
✅ | Add links to ref:RS:kucni_broj in osm.org | Done |
✅ | Start import | Started and reached 70% by the end of March 2024, see Web report |
Import guidelines
Read here for general guidelines how to map address in Serbia. Here is an instruction video to explain how to do first-time setup, how to add new addresses and common errors.
This guideline is work in progress, It might change more as import process evolve.
Preparing the environment
- Download JOSM editor. Go to Edit->Preferences. Turn on Expert Mode (bottom left corner) and turn on Remote Control->Enable remote control. You should also download plugin "Review.Changes"
- Turn Review window in Windows->Review List
- Download layer with street and house number, optional, but can give better insight to RGZ data. In JOSM, go to Imagery->Imagery Preferences. There are 2 layers to choose from. Pick yours.
- In bottom right corner, click button "+ TMS". In the first text box, write "https://tiles.openstreetmap.rs/rgz/{zoom}/{x}/{y}.png", and in the last textbox add layer name ("RGZ addresses" for example).
- In bottom right corner, click button "+ TMS". In the first text box, write "https://vector-rgz.openstreetmap.rs/styles/rgz-big/{z}/{x}/{y}.png", and in the last textbox add layer name ("RGZ addresses" for example). You can also try "https://vector-rgz.openstreetmap.rs/styles/rgz/{z}/{x}/{y}.png" which is same layer with just smaller numbers.
Restart JOSM. You can access this layer from the Imagery menu.
- Visit https://dina.openstreetmap.rs/ar/ and choose municipality and settlement for which you want to do import
- Visit https://lite.framacalc.org/adrese-sinhro-a047 and add which municipality you are working on, just so we can coordinate efforts
To add new addresses
- Click button "Lista fajlova za import (samo nove adrese)". New pane will open. Here are all addresses that are not found in OSM in 200m radius
- Open JOSM (it has to be started before this)
- Turn some layer to look at map (Imagery menu, and choose Maxar for example)
- Click on some of the files. A new layer in JOSM will show up with up to 100 addresses.
- Click on shortcut "1" (View->Zoom to data). This will zoom to all loaded addresses
- If you click Selection->Select All (Ctrl+A), you will see a list of all addresses on the right side. Here you can do quick overview if street names are OK before you proceed further
- Click File->Download in current view. This will load OSM data in the same layer with addresses. To check if address is not there already, is it outside of building etc.
- If area is too large, zoom to smaller pieces and download OSM data until you cover all addresses
- In Review window, click "Start review". All addresses will show up. This serves to check if we reviewed them all. When you click on some address, it will be zoomed. With double-click or Space key, address will be marker as reviewed
- Once we review all addresses, upload all changes with File->Upload data. Comment it as you wish, but keep "data source" as "RGZ_AR_Import".
All addresses should be mostly OK, here are some potential problems:
- Address have street name with wrong caps. You should change all loaded addresses, look at tips below to see how to change them all at once
- Someone already added same address in similar location. Just merge them (or delete newly added, or move one to another holding Ctrl key)
- Building already drawn. The minimal thing to do is to move address to be inside the building. You can put address to building, look at tips below
- Address in on grass, there is no building. This is perfectly fine, we agreed we will add these addresses too
Tips:
- If you download plugin "mapwithai", it has the ability to merge address with building way. Download it, set shortcut (Edit->Preferences->Keyboard Shortcuts, and look for "Data: Merge address points")
- In Find dialogue (Ctrl+F), you can search for new objects only, type "new". This will allow you to see newly added addresses in different colour
- To rename a lot of addresses, in Find dialogue (Ctrl+F) you can type something like
new "addr:street"="Јувелирска"
and get to select all addresses with this street name, and in object window you can change street name for all addresses at once with double-click
To reference existing, 100% matched addresses
This method will add ref:RS:kucni_broj=* tag to existing addresses.
- Click button "100% poklopljene adrese". New pane will open. Here are all addresses that are perfectly matching between OSM and RGZ
- Open JOSM (it has to be started before this)
- Turn some layer to look at map (Imagery menu, and choose Maxar for example)
- Click on some of the files. New layer in JOSM will show up with up to 100 addresses.
- Click on shortcut "1" (View->Zoom to data). This will zoom to all loaded addresses
- If you click Selection->Select All (Ctrl+A), you will see a list of all addresses on the right side. Here you can do quick overview if street names are OK before you proceed further
- Click File->Download in current view. This will load OSM data in the same layer with addresses. To check if address is not there already, is it outside of building etc.
- If area is too large, zoom to smaller pieces and download OSM data until you cover all addresses
- In Review window, click "Start review". All addresses will show up. This serves to check if we reviewed them all. When you click on some address, it will be zoomed. With double-click or Space key, address will be marker as reviewed
- Once we review all addresses, upload all changes with File->Upload data. Comment it as you wish, but keep "data source" as "RGZ_AR_Import".
To solve other cases (addresses are not matching perfectly)
This is the hardest case
- If address do not exist in OSM, simply add it as it is in RGZ. Watch for typos and grammar for street names. It is enough to add addr:street=* (Cyrillic) and addr:housenumber=* (Latin) and once you add these, on refreshed report tomorrow it will be there as 100%, so you can match it with RGZ later.
- If address is on building that already have number, we should probably move address from building to separate node and keep both address as nodes. For example, building have number "11", and we are adding "11a". We should move "11" from building and add two nodes - "11" and "11a" that are attached to building way.
- If address exists in OSM, we should think through how to proceed depending on what is not matching between OSM and RGZ:
- If street name is not matching, check surrounding street and see if it is typo/grammar in OSM or RGZ. If error is in RGZ, add "addr:street" tag as correct street name (as it is in OSM). If error is in OSM (trust OSM, but sometimes error is obvious), fix street name in OSM (or add note at least), and for addr:street=* tag add value from RGZ.
- If house number is not matching, check if it is error in OSM (numbers should be ordered). If it is not obvious error, try to trust OSM because it probably reflects on-the-ground truth
Technical details
Technical part of this project should ease, simplify and increase import quality. Source code is at https://gitlab.com/osm-serbia/adresniregistar.
The idea is that the project is split to smaller pipelines, where each pipeline is doing some data processing. These pipelines are self-sufficient and could be executed at any machine and to used for continuous data quality checks. Each pipeline is defined in Makefile and runs with "make some-pipeline".
Following pipelines are planned (some already done, better check at README.md):
Pipeline | Command | Note | |
---|---|---|---|
✅ | Address acquisition | download_from_rgz | At RGZ website, all addresses are by municipality. Before we do anything, we should collect them, all other processing is after that |
✅ | Name normalization | Mapping from ALL CAPS addresses to proper cases, main thread is here https://community.openstreetmap.org/t/pravilno-imenovanje-ulica/96891 | |
✅ | Analysis | analyze | From daily PBF file, we try to locate all addresses from RGZ. For each RGZ address, we check if it is conflated, can it be matched or cannot be found at all |
✅ | Reporting | report | Based on CSV, we generate static HTML and upload it. Upload is at https://dina.openstreetmap.rs/ar/ |
❌ | Automated import | If we do everything manual, no action here. If we do something automated, this will be place to do it. |
Quality assurance
During import process, we should do quality checks. Some of the errors we would like to catch and fix are:
Address is a node inside building, and it should be put on building way- Address is in OSM, and it doesn't exist in RGZ (maybe error, maybe not) - this should be added once we finish import
- Address is conflated, but RGZ reference does not exist or is wrong (house number wrong, street name different), or distance is too far away
For same ref:RS:kucni_broj=* tag, there is more than 1 entity in OSM
See also
- Import guidelines
- Addresses
- https://gitlab.com/osm-serbia/adresniregistar
- Similar imports:
- Slovenia: Slovenia Address and Building Import
- Norway: Import/Catalogue/Address import for Norway
- New Zealand: LINZ/Address Import
- Czech Republic / Czechia: Address import from RUIAN
- ...
- OSM Inspector