TSM - Procesul de asigurare a calității restricțiilor din hartă utilizând query-uri SQL

Simona Pop - Map Analyst @ Telenav


Există mai multe tipuri de sisteme integrate pentru automobile, dintre care menționăm sistemul de navigație auto prin GPS. Aplicațiile de navigare GPS bazate pe OSM sunt utilizate din ce în ce mai mult deoarece reprezintă singura hartă globală îmbunătățită permanent de comunitate și gratuită. OSM este în permanență îmbunătățit de utilizatorii OSM din întreaga lume și de către analiștii de la Telenav.

Prin urmare, OSM ține permanent pasul cu schimbările din realitate. Chiar dacă există mai multe map feature-uri care pot fi utilizate la cartografiere, unele din ele sunt specifice pentru rutare. Drept exemple de map feature-uri ce pot influența major rutarea, menționăm restricțiile din intersecții, drumurile cu sens unic, geometria și numele drumurilor.

Dacă vrem ca software-ul de rutare să funcționeze bine, datele OSM trebuie să fie de înaltă calitate. Aceasta înseamnă că map feature-urile din cadrul OSM care influențează foarte mult rutarea trebuie adăugate corect în hartă. Concret, un drum care poate fi folosit într-o singură direcție trebuie să fie etichetat cu tagul de oneway, restricțiile trebuie să fie corect cartografiate, geometria drumurilor trebuie să fie în conformitate cu realitatea și așa mai departe. Calitatea acestor atribute este asigurată de un proces de asigurare a calității (Quality Assurance - QA) în care se utilizează mai multe instrumente. Unul dintre ele, pgAdmin, ne permite să manipulăm baze de date relaționale și să rulăm query-uri SQL pentru a verifica, de exemplu, corectitudinea restricțiilor.

Query-uri pentru restricțiile existente în hartă

Dat fiind numărul mare de utilizatori și editări, este inevitabil ca unele map feature-uri să nu fie deteriorate. Unele restricții existente deja în hartă au fost adăugate cu mai mulți sau mai puțini membri fiind necesară reeditarea lor după structura corectă. O restricție corectă se formează din trei membri: way-ul de pe care începe restricția (from), un nod, un way sau mai multe way-uri care conectează începutul și sfârșitul restricției (via) și way-ul pe care se termină restricția (to). Pentru identificarea restricțiilor cu un număr neobișnuit de membri, a fost creat query-ul de mai jos care scoate din baza de date toate way-urile cu restricții de viraj și le șterge pe cele cu trei membri, rămânând astfel doar restricțiile cu un număr incorect. După ce creăm tabelul cu aceste restricții, selectăm toate relation_id-urile, le descărcăm în format .csv. Din fișierul creat copiem toate id-urile relațiilor, deschidem editorul Java OpenStreetMap (JOSM) și le descărcăm cu ajutorul toolului de Download object, fiind atenți să selectăm Object type: relation.

Fig.1 Identificarea restricțiilor cu număr incorect de membri

Fig.2 Selectarea relation id-urilor în pgAdmin

Există taguri mai vechi în OpenStreetMap care trebuie aduse la zi după noua schemă pentru a putea fi procesate de aplicația de rutare. Să luăm spre exemplu restricțiile condiționale. O restricție condițională se prezintă printr-o structură diferită față de cea a unei restricții obișnuite, fiind definit un interval orar, săptămânal sau lunar în timpul căruia se interzice o anumită manevră. Query-ul de mai jos a fost conceput pentru a selecta toate way-urile cu restricție condițională care au fost adăugate după formatul vechi (Fig.5). După crearea tabelului, urmează extragerea lor din baza de date și în final editarea efectivă în JOSM pentru corectarea lor (Fig.6).

Fig.4 Query pentru identificarea restricțiilor condiționale în format vechi

Fig.5 Restricție condițională în format vechi

Fig.6 Restricție condițională în format nou

În concluzie, query-urile SQL sunt foarte eficiente pentru identificarea diferitelor erori din hartă privind restricțiile. Eficiența lor se datorează posibilității de a interoga o bază de date foarte mare precum și timpului scurt de obținere a rezultatelor comparativ cu alte metode.