Ostatnio zauważyłem, że styl OSM Americana nie wyświetla w szczególny sposób numerów dróg wojewódzkich, w przeciwieństwie do dróg krajowych, w tym dróg ekspresowych i autostrad, co zgadza się z definicją, a raczej jej brakiem. Na podstawie opisu jednego z pull requestów w repozytorium tego stylu wywnioskowałem, że generator opiera się na tagu network w celu wywnioskowania kategorii.
Postanowiłem więc sprawdzić, jaka wartość tagu network jest wykorzystywana do oznaczania dróg wojewódzkich. Szybka kwerenda, wykonana przy użyciu głównej strony OSM, Overpass API i Taginfo doprowadziła mnie do wniosku, że drogi te oznacza się tagiem network=pl:regional.
Postanowiłem również sprawdzić, jak oznacza się drogi powiatowe i gminne. Jako że w artykule wiki o tagu network tego nie określono, postanowiłem dokonać samodzielnej analizy. W tym celu napisałem skrypt Pythona, który odpytuje server Overpass i wykorzystuje bibliotekę pandas w celu wygodnego przetwarzania tych danych.
Parametry wejściowe
Zapytanie do serwera Overpass miało następującą postać:
[out:csv(::id,name,ref,unsigned_ref,network)];
area(3600049715)->.pl;
rel(area.pl)[type=route][route=road][network~"pl:.*",i];
out geom;
Najistotniejszymi tagami branymi pod uwagę w tej analizie są network, ref i unsigned_ref (ostatni z nich wzięty pod uwagę ze względu na sposób użycia w relacjach analogiczny do tego na liniach). Numer relacji i tag name są wykorzystywane w celu ręcznej weryfikacji zarówno wyników analizy, jak i samych relacji, a ponadto numer relacji służy jako indeks dla tabel biblioteki pandas.
Wyrażenia regularne dla numerów poszczególnych dróg wyglądały następująco:
- autostrady:
^A[0-9]{1,2}$ - drogi ekspresowe:
^S[0-9]{1,2}$ - pozostałe drogi krajowe:
^[0-9]{1,2}$ - drogi wojewódzkie:
^[0-9]{3}$ - drogi powiatowe:
^[0-9]{4}[ ]?[BCDEFGKLNOPRSTWZ]$ - drogi gminne:
^[0-9]{6}[ ]?[BCDEFGKLNOPRSTWZ]$