ΜΟΝΑΔΕΣ ΑΡΙΣΤΕΙΑΣ ΑΝΟΙΧΤΟΥ ΛΟΓΙΣΜΙΚΟΥ Συστήματα γεωγραφικών πληροφοριών 1 ος Κύκλος Εκπαίδευσης ο σεμινάριο Ιουνίου 0
Δρομολόγηση Η δρομολόγηση (rouing) είναι η διαδικασία εύρεσης των «καλύτερων» μονοπατιών σε δίκτυα μεταξύ σημείων αφετηρίας και σημείων προορισμού. Χρησιμοποιείται τόσο σε τηλεπικοινωνιακά δίκτυα (τηλεφωνικά, δεδομένων) όσο και σε δίκτυα μεταφορών.
Δρομολόγηση Η δρομολόγηση εκτελείται πάνω σε ένα δίκτυο (π.χ. οδικό) που αποτελείται από: κόμβους (π.χ. σημεία διασταύρωσης δρόμων) και ακμές (π.χ. μεμονωμένα τμήματα του οδικού δικτύου όπου τα άκρα τους είναι κόμβοι όπου δεν υπάρχει η επιλογή αλλαγής κατεύθυνσης μεταξύ αυτών)
Δρομολόγηση
Αλγόριθμοι Δρομολόγησης Για τη δρομολόγηση χρησιμοποιούνται αλγόριθμοι δρομολόγησης όπως οι: Dijkra Bellman-Ford Floyd-Warhall A-ar Shooing Sar Οι αλγόριθμοι αυτοί θεωρούν ένα δίκτυο από κόμβους (ή από ακμές) στο οποίο κάποιος μπορεί να μεταβεί από τον έναν στον αλλά αρκεί να έχουν μια κοινή ακμή (ή κοινό κόμβο) Στις αποφάσεις επιλογής μονοπατιού σημασία έχουν «βάρη» που αποδίδονται σε ακμές ή κόμβους. Τα βάρη αντιπροσωπεύουν το κόστος διάσχισης μιας πλευράς ή κόμβου. Στα δίκτυα μεταφορών βάρος μπορεί να αποτελεί π.χ. το μήκος μιας ακμής, ο χρόνος διάσχισης που απαιτείται, το χρηματικό αντίτιμο για τη διάσχισή της κλπ.
Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra 1 0 0 1 1
Ελάχιστη απόσταση 0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = { } PQ = {,,,,,,, } 0 0 1 1 Απόσταση
0 Ανανέωση απόστασης 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = { } PQ = {,,,,,, } 0 0 1 1 8 Απόσταση 1
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = { } PQ = {,,,,,,, } Ελάχιστη απόσταση 0 0 1 1 Απόσταση 1
S = {, } PQ = {,,,,, } 0 1 0 0 1 1 10 1
Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {, } PQ = {,,,,, } Ενημέρωση απόστασης X 0 1 0 0 1 1 1
Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {, } PQ = {,,,,, } X 0 1 0 0 Ελάχιστη απόσταση 1 1 1 1
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,, } PQ = {,,,, } 0 0 X 1 X X 1 1 1
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,, } PQ = {,,,, } 0 0 X 1 X X 1 1 Ελάχιστη απόσταση
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,, } PQ = {,,, } 0 0 X 1 X X 1 1 1 X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,, } PQ = {,,, } 0 0 X 1 Ελάχιστη απόσταση X X 1 1 1 X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,,, } PQ = {,, } 0 0 X X 1 X X 1 1 1 1 X X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra 1 S = {,,,, } PQ = {,, } 0 0 X X Ελάχιστη απόσταση 1 1 X X 1 X X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,,,, } PQ = {, } 0 0 X X 1 X X 1 1 1 0 1 X X X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,,,, } PQ = {, } 0 0 X X 1 Ελάχιστη απόσταση X X 1 0 1 0 1 X X X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,,,,, } PQ = { } 0 0 X X 1 X X 1 1 1 0 1 X X X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,,,,, } PQ = { } 0 0 X X 1 X X 1 1 Ελάχιστη απόσταση 0 1 X X X
0 1 Εύρεση του συντομότερου μονοπατιού με τον αλγόριθμο Dijkra S = {,,,,,,, } PQ = {} 0 0 X X 1 X X 1 1 0 1 X X X
pgrouing Το pgrouing είναι λογισμικό ΕΛΛΑΚ το επεκτείνει την γεωχωρική βάση δεδομένων PoGIS/PogreSQL δίνοντας τη δυνατότητα εκτέλεσης ερωτημάτων δρομολόγησης. Το μεταφορικό δίκτυο αποθηκεύεται σε βάση PogreSQL. Αυτό δίνει τα παρακάτω πλεονεκτήματα: Τα δεδομένα μπορούν να τροποποιηθούν από πολλά λογισμικά GIS όπως το QGIS, και το udig. Οι τροποποιήσει μπορεί να γίνονται είτε από PC είτε από φορητές συσκευές. Οι αλλαγές στα δεδομένα αποτυπώνονται απευθείας χωρίς να απαιτείται προεπεξεργασία. Τα βάρη μπορούν να υπολογίζονται δυναμικά με SQL ερωτήματα συνυπολογίζοντας τιμές από διαφορετικές στήλες ή/και πίνακες. Το pgrouing είναι λογισμικό ΕΛ/ΛΑΚ και διατίθεται με την άδεια GPLv
Εισαγωγή δεδομένων και επεξεργασία Σημαντικές πηγές δεδομένων: OpenSreeMap Για τη χρήση OSM δεδομένων χρησιμοποιείται το λογισμικό OSMOSIS το οποίο μπορεί να προεπεξεργαστεί τα OSM δεδομένα (π.χ. περικοπή δεδομένων) Τα OSM δεδομένα εισάγονται με το ompgrouing. Τα είδη του οδικού δικτύου που θα επιλεγούν καθορίζονται από το αρχείο config.xml.
Υποστηριζόμενοι Αλγόριθμοι Dijkra Υπολογίζει το συντομότερο μονοπάτι από έναν κόμβο αφετηρία προς όλους τους άλλους (και προς τον κόμβο στόχο). CREATE OR REPLACE FUNCTION hore_pah( ql ex, ource_id ineger, arge_id ineger, direced boolean, ha_revere_co boolean) RETURNS SETOF pah_reul To ερώτημα SQL πρέπει να επιστρέψει τα παρακάτω: id, ource, arge, co
Υποστηριζόμενοι Αλγόριθμοι Dijkra id: an in idenifier of he edge ource: an in idenifier of he ource verex arge: an in idenifier of he arge verex co: an floa8 value, of he edge raveral co. (a negaive co will preven he edge from being inered in he graph). revere_co (opional): he co for he revere raveral of he edge. Thi i only ued when he direced and ha_revere_co parameer are rue (ee he above remark abou negaive co).
Παράδειγμα SELECT verex_id, edge_id, co, he_geom FROM hore_pah(' 1, 1, fale, SELECT gid AS id, ource, arge, FROM way', o_co AS co fale) AS foo, way WHERE edge_id=gid;
Υποστηριζόμενοι Αλγόριθμοι A Sar Υπολογίζει το συντομότερο μονοπάτι από έναν κόμβο αφετηρία προς όλους τον κόμβο προορισμό. Σε κάθε αναζήτηση επιδιώκει να μειώσει τόσο το συνολικό μήκος του μονοπατιού που έχει ακολουθηθεί μέχρι στιγμής όσο και την απόσταση του ενδιάμεσου κόμβου από τον προορισμό. CREATE OR REPLACE FUNCTION hore_pah_aar( RETURNS SETOF pah_reul ql ex, ource_id ineger, arge_id ineger, direced boolean, ha_revere_co boolean) To ερώτημα SQL πρέπει να επιστρέψει τα παρακάτω: id, ource, arge, co, x1, y1, x, y
Υποστηριζόμενοι Αλγόριθμοι A Sar id: an in idenifier of he edge ource: an in idenifier of he ource verex arge: an in idenifier of he arge verex co: an floa8 value, of he edge raveral co. (a negaive co will preven he edge from being inered in he graph). x1: x coordinae of he ar poin of he edge y1: y coordinae of he ar poin of he edge x: y coordinae of he end poin of he edge y: y coordinae of he end poin of he edge revere_co (opional): he co for he revere raveral of he edge. Thi i only ued when he direced and ha_revere_co parameer are rue (ee he above remark abou negaive co).
Υποστηριζόμενοι Αλγόριθμοι Shooing Sar Υπολογίζει το συντομότερο μονοπάτι από έναν κόμβο αφετηρία προς όλους τον κόμβο προορισμό. Δρομολογεί από ακμή σε ακμή (αντί από κόμβο σε κόμβο) επιτρέποντας την υλοποίηση πολύπλοκων πολιτικών περιορισμών (π.χ. «απαγορεύεται η στροφή δεξιά») CREATE OR REPLACE FUNCTION hore_pah_hooing_ar( ql ex, ource_id ineger, arge_id ineger, direced boolean, ha_revere_co boolean) RETURNS SETOF pah_reul To ερώτημα SQL πρέπει να επιστρέψει τα παρακάτω: id, ource, arge, co, x1, y1, x, y, rule, o_co
Υποστηριζόμενοι Αλγόριθμοι Shooing Sar id: an in idenifier of he edge ource: an in idenifier of he ource verex arge: an in idenifier of he arge verex co: double preciion value of he edge raveral co. (a negaive co will preven he edge from being inered in he graph). revere_co (opional): he co for he revere raveral of he edge. Thi i only ued when he direced and ha_revere_co parameer are rue (ee he above remark abou negaive co). direced: rue if he graph i direced ha_revere_co: if rue, he revere_co column of he SQL generaed e of row will be ued for he co of he raveral of he edge in he oppoie direcion. x1: double preciion value of x coordinae for edge ar verex y1: double preciion value of y coordinae for edge ar verex x: double preciion value of x coordinae for edge end verex y: double preciion value of y coordinae for edge end verex rule: a ring wih a comma eparaed li of edge id which decribe a rule for urning rericion (if you came along hee edge, you can pa hrough he curren one only wih he co aed in o_co column) o_co: a co of rericed paage (can be very high in a cae of urn rericion or comparable wih an edge co in a cae of raffic ligh)