Tutorial IV – Restricții de circulație

Un element pe care nu l-am prezentat până acum, dar care este din ce în ce mai prezent în cadrul proiectului OSM este relația. Folossind o relație poți defini o serie de elemente interesante ca de exemplu:
– grupări de elemente (de exemplu avem o stradă care la un moment dat are un pod, deci a fost nevoie să formăm cel puțin 3 elemente cu același nume).
– definirea de clădiri ce au o curte interioară (relații de tip multipoligon)
– restricții de circulație (de exemplu semnul obligatoriu la dreapta înainte de o intersecție). Despre acestea vom vorbi în continuare.

În general relaţiile au mai mulţi membri (care pot fi noduri sau drumuri  în funcţie de nevoi), fiecare nod având un rol bine determinat. În cazul  restricţiilor de circulaţie avem următorii membri:

1. „from” – este strada de pe care se vine atunci când intri în  intersecţie, sau altfel spus strada pe care te afli când vezi semnul de  circulaţie
2. „to” – este strada pe care doreşti să intri şi care are respectiva  restricţie
3. „via” – pot exista exista mai mulţi membri cu acest rol, minim unul.  Pot fi noduri sau drumuri (ways). În cele mai multe cazuri va fi nodul  care este centrul intersecţiei şi care face legătura între cele 2 străzi.
4. „location_hint” – este opţional şi va fi un nod. Este folosit pentru  a oferi unui motor de rendering o locaţie unde poate fi afişat semnul de  circulaţie corespunzător. Se poate crea un nod nod, alăturat străzii care apare cu rolul „from” cu câţiva metri înainte de intersecţie.

Pe lângă membri relaţia mai are şi anumite atribute:

1. „type” – în cazul nostru tipul va fi „restriction”
2. „restriction” – tipul de restricţie, va fi ales din următoarele:  no_right_turn / no_left_turn / no_u_turn / no_straight_on /  only_right_turn / only_left_turn / only_straight_on. Sper că sunt  suficient de clare şi nu necesită traducere.
3. „except” – categoria de vehicule pentru care nu se aplică restricţia  (poate conţine mai multe categorii): psv / bicycle / hgv / motorcar
4. „day_on”, „day_off” – zilele între care este impusă restricţia:  day_on=Monday;day_off=Friday
5. „hour_on”, „hour_off” – orele între care este impusă restricţia:  hour_on=07:30;hour_off=09:30 şi posibil alte atribute în funcţie de necesităţi.

Un lucru interesant e faptul că o restricţie de tipul „obligatoriu înainte sau la dreapta” este dificil de reprezentat în momentul de faţă, ea trebuind să fie probabil înlocuită cu o restricţie de tipul „interzis
la stânga”, altfel utilizarea a 2 relaţii ( una de tipul  „only_right_turn” şi una de tipul „only_straight_on”) poate crea  confuzie prin utilizarea termenului „only”. Pentru mine cazul acesta rămâne deschis, e posibil să fie destul de rar întâlnit.

Şi am să încerc să dau şi un exemplu:

Exemplul 1

Exemplul 1

În figura de mai sus să presupunem că suntem pe way1 în partea de jos şi  avem interzis la dreapta pe way2. Membrii relaţii vor fi:
1. „from” = way1
2. „to” = way2
3. „via” = node1
4. „location_hint” = node2

Un exemplu în care avem un drum folosit ca membru cu rolul „via” este cazul străzilor în care sensurile sunt despărţite printr-un scuar. În acest caz dacă avem un drum de legătură între cele 2 sensuri pe care este de exemplu interzisă întoarcerea, această legătură va avea rolul de  „via”, iar membrii vor fi:
1. „from” – un sens al străzii
2. „to” – celalat sens
3. „via” – drumul de legătură
4. „location_hint” – un nod aflat probabil între cele 2 sensuri

Lasă un comentariu