Proposed import of Croatia HZ station codes

Croatian Railways Station Codes

Hello, I am proposing to add ref:HZ identifier codes to Croatian railway location nodes in OpenStreetMap, sourced from HŽ Infrastruktura via the Croatian government open data portal and the HŽ Network Statement 2026 (Izvjesce o mrezi, Annex 2.13).

The ref:HZ code is a unique station identifier from the EU Register of Infrastructure (RINF). Adding these codes bridges OSM with official railway operational data used for routing, delay tracking, and data exchange.

Documentation

Wiki page: Import/Croatian Railways Station Codes - OpenStreetMap Wiki
Source dataset (RINF): Registar infrastrukture - Skup podataka - CKAN
All prepared files and map preview: HŽ Railway Stations

License

Published under Croatia’s National Open Data License (Otvorena dozvola / OD) on data.gov.hr. Compatible with ODbL.

Abstract

Dataset: 591 railway locations across Croatia (457 passenger stops, 75 stations, 36 freight terminals, 17 border points, 7 junctions). Sources: RINF registry (primary, verified coordinates) and HŽ Network Statement 2026 Annex 2.13 (secondary, km-marker positions).

Changes to OSM:

  • 499 existing OSM nodes: add ref:HZ tag, correct coordinates to RINF positions
  • 83 new nodes: created at RINF-verified coordinates where no OSM node exists
  • 9 new nodes: created from km-marker interpolation with OSM track geometry snap

Tags on all objects:
ref:HZ = 5-digit code
operator = HŽ Infrastruktura
operator:wikidata = Q6519835
network = HZ
railway = station|halt|yard|junction
name = official name
border = yes (border points only)
public_transport = station|stop_position

Method: stations matched to existing OSM railway nodes by name and proximity (4-pass matching: exact name, proximity within 200m, old osm_id fallback, proximity within 100m). For matched nodes, ref:HZ tag added and coordinates corrected. Unmatched stations created as new nodes. Upload via OSM API, single-node changesets.

Conflation: name and proximity-based. Where an OSM node matches, only tags and coordinates change. No duplicate nodes created.

Quality assurance: coordinates verified against RINF registry (2026-04-15). Interpolated stations snapped to OSM track geometry within 500m. Full dataset on interactive map with live OSM overlay for visual verification. Border points verified against OSM Croatia border geometry.

Import account: Digital39999
Script: hzpp-uploader (Python), source on wiki page
Changeset size: 1 node per changeset
Revert plan: individual changesets can be reverted

I don’t have an opinion on substance of the import, but typos in the above tags are not exactly encouraging. This should read:

operator = HŽ Infrastruktura
operator:wikidata = Q102035872
network = HŽ

1 Like

Agreed, needs to be changed, always when I global replace, it strips them down.

There already exists ref:EU:PLC which seems to be used for same purpose; so perhaps it would be better to use that ?

i.e. instead of ref:HZ=76318 use ref:EU:PLC=HR76318

Primary Location Codes can also be searched by name of the station at https://teleref.era.europa.eu/

P.S. ovdje u na forumu možemo na hrvatskom, ima translate gumb…

Hm, znači nedostaje nam 83(+) željeznička objekta u OSM-u?

Možeš li to podkategorizirati, koliko je nedostajućih postaja, koliko mjesta za ukrcavanje, koliko granica itd ?

Skupa sa ona 83 gore, mislim da bi za njih bilo bolje ručno pogledati po karti da li odgovaraju i imaju smisla, a ne da završe unutar zgrada ili s krive strane ili sl (v. sliku na Tag:railway=halt - OpenStreetMap Wiki kako treba izgledati ispravno umapirano).

Toga nema tako puno, ispod 100 komada sve skupa, za sat vremena se to provjere i namjeste svi ručno…

“correct coordinates to RINF positions” - misliš mijenjati koodrinate postojećih objekata uzimajući RINF kao referentan?

To je suprotno od onog što piše na wikiju, tamo piše “For matched nodes, only tags are added or updated - no geometry is modified” – što mi osobno ima i više smisla; nisam uvjeren da je točnost RINF podataka preciznija od izmjere na licu mjesta GPSom.

(da ne govorimo o kompleksnosti pomicanja node-a ako je on dio nekog way-a itd)

Gdje točno? na Import/Croatian Railways Station Codes - OpenStreetMap Wiki vidim isto samo da spominje “Tool: hzpp-uploader (Python). Source code available at the wiki page” ali ne vidim link na python source (niti je jasno zašto wiki stranica referencira samu sebe rekurzivno)?

Brine me kako točno je matchirano, prati li samo koordinate?

Ili matchira tip podatka koji je u OSM-u u odnosu na taj u bazi - railway=station vs. railway=halt (ili public_transport=stop_position? ili oboje? što točno radi kada postoje i public_transport=stop_position i railway=halt, možda na različitim OSM elementima?)

Ne bih želio da PLC/RINF kodovi završe na krivim nodeovima.

U ovom postu nisi naveo drugi izvor podataka, a kojeg ima na wikiju, ali sa potrganim URL-om: Data source site: https://www.hŽinfra.hr/wp-content/uploads/2025/05/2026_I_IOM.pdf

(Kada pretvorim “Ž” u “z” onda radi…)

Također, wiki se za njega poziva na:

Data license: Public Sector Information (Croatian Copyright Act, Art. 8)

Međutim, članak 8. Zakona o autorskom pravu i srodnim pravima definira pojam “stranca - autora”, a ne govori ništa o infomacijama iz javnog sektora.

Općenito, mislim da bi trebalo:

  • popraviti sve te probleme spomenute ranije u ovoj poruci kao i u prethodnim porukama
  • dati nam da vidimo taj python kod i podatke koje conflatea pa da potvrdimo da ima smisla prije početka uploada
  • ograničiti upload prvo na jednu reprezentativnu županiju (koja ima sve tipove izmjena i dodavanja, ali da nije prevelika), pa vidjeti kako je tamo ispalo; pa tek onda ako sve izgleda OK, onda tek nastaviti s ostatkom.