Εφαρµογές πλοήγησης για φορητές συσκευές µε τη χρήση Web Services Γεώργιος Σταυρουλάκης gstavr@dblab.ece.ntua.gr ιπλωµατική εργασία στο Εργαστήριο Συστηµάτων Βάσεων Γνώσεων και εδοµένων Επιβλέπων: Καθηγητής Ι. Βασιλείου 1 Γενικό πλαίσιο Περίληψη Σκοπός της συγκεκριµένης εργασίας είναι ο σχεδιασµός και η ανάπτυξη εφαρµογής πλοήγησης για φορητές συσκευές µε χρήση διαδικτυακών υπηρεσιών. Παραδοσιακά, οι διάφορες εφαρµογές πλοήγησης διατίθενται είτε ως µέρος εξειδικευµένου υλικού µε ενσωµατωµένο δέκτη GPS είτε ως ανεξάρτητο λογισµικό διαφορετικές εκδόσεις του οποίου µπορούν να εγκατασταθούν σε µια πλειάδα συσκευών όπως PC, laptop, PDA, κινητά τηλέφωνα. Και στις δύο παραπάνω περιπτώσεις πάντως, η συσκευή έχει αποθηκευµένους τους χάρτες των περιοχών οι οποίες ενδιαφέρουν το χρήστη, τα διάφορα σηµεία ενδιαφέροντος καθώς και οποιαδήποτε άλλη γεωγραφική πληροφορία. Με την παρούσα εργασία αναπτύσσουµε ουσιαστικά ένα εναλλακτικό µοντέλο για την κατασκευή συστηµάτων πλοήγησης. Συγκεκριµένα, αναπτύσσονται αρχικά διαδικτυακές υπηρεσίες οι οποίες σκοπό έχουν την παροχή γεωγραφικών πληροφοριών. Στη συνέχεια αναπτύσσεται συνοδευτική εφαρµογή client η οποία εγκαθίσταται σε φορητές συσκευές και καταναλώνει τις παραπάνω υπηρεσίες µε σκοπό την παροχή υπηρεσιών πλοήγησης στον τελικό χρήστη. Έτσι η φορητή συσκευή δεν χρειάζεται να ενσωµατώνει χάρτες ή άλλα γεωγραφικά δεδοµένα καθώς οτιδήποτε χρειάζεται το λαµβάνει από το server µε κλήσεις στις διαδικτυακές υπηρεσίες. 2 Θεωρητική Μελέτη Για την υλοποίηση του συστήµατος πλοήγησης µελετήσαµε τα ακόλουθα θέµατα: Αρχικά, µελετήσαµε τα υφιστάµενα πρότυπα για τη διάθεση χωρικών πληροφοριών. Συγκεκριµένα έγινε µελέτη στα πρότυπα που δίνονται από τους οργανισµούς προτυποποίησης Open Geospatial Consortium (OGC) και International Organization for Standardization (ISO). Από την αποτίµηση των προτύπων που µελετήσαµε επιλέχθηκε ως βασικό πρότυπο της εφαρµογής µας το πρότυπο OpenGIS Location Services (OpenLS). Το πρότυπο αυτό είναι γνωστό επίσης ως GeoMobility Server (GMS), µια ανοικτή πλατφόρµα για εφαρµογές υπηρεσιών βασισµένων σε τοποθεσία.
Εικόνα 1: The GeoMobility Server Ουσιαστικά οι υπηρεσίες OpenLS έχουν στόχο τον καθορισµό πρόσβασης σε υπηρεσίες πυρήνα (βασικές υπηρεσίες) και στους αφηρηµένους τύπους δεδοµένων που περιέχει ο GeoMobility Server. Οι βασικές υπηρεσίες που παρέχονται από τον GMS είναι οι εξής: Directory Service, Gateway Service, Location Utility Service (Geocoder/Reverse Geocoder), Presentation Service, Route Service. Στη συνέχεια µελετήθηκαν εµπορικά διαθέσιµες διαδικτυακές υπηρεσίες (web services) που υπάρχουν σήµερα για τη διάθεση χωρικής πληροφορίας. Μελετήθηκαν οι υπηρεσίες που παρέχονται από τη Michelin (viamichelin), τη Microsoft (MapPoint) και τη Google (Maps). ιαπιστώθηκε ότι οι υπηρεσίες αυτές είχαν πολλά κοινά στοιχεία µε τις υπηρεσίες που δίνονται στο πρότυπο του OGC που περιγράψαµε παραπάνω, ορισµένες δε είναι πανοµοιότυπες. Εκτός από τα παραπάνω, αναζητήσαµε διάφορες υπάρχουσες εφαρµογές πλοήγησης για φορητές συσκευές και συγκεκριµένα για Pocket PCs και κινητά τηλέφωνα. Καταγράψαµε έτσι και συγκρίναµε τα διάφορα χαρακτηριστικά τους (χρέωση, χαρακτηριστικά, χρόνοι απόκρισης, ευχρηστία, GUI). Η µελέτη έγινε στα λογισµικά συστήµατα CoPilot, Pocket Streets, Destinator, και TomTom. Τέλος, έγινε αποτίµηση εναλλακτικών µεθόδων για τη διάθεση εικόνων (χαρτών, κτλ) όπως είναι οι vector, raster µέθοδοι, µελετήθηκαν διάφορα προφίλ χρηστών (οδηγός, πεζός, κτλ), µέθοδοι για το authentication των χρηστών και πιθανά µοντέλα χρέωσης των υπηρεσιών που αναπτύχθηκαν. 3 Σχεδίαση και Υλοποίηση Σε γενικές γραµµές, το σύστηµα το οποίο υλοποιήσαµε είχε τα ακόλουθα χαρακτηριστικά. Από πλευράς server, αποφασίσαµε να υλοποιήσουµε τις βασικές υπηρεσίες (core services) τις οποίες περιγράφει το πρότυπο OpenLS του OGC και υπάρχουν στις περισσότερες εµπορικές διαδικτυακές υπηρεσίες που µελετήσαµε. Έτσι τα web services µας είναι τα εξής:
Directory Service: Υπηρεσία που παρέχει τα διάφορα σηµεία ενδιαφέροντος Gateway Service: Υπηρεσία προσδιορισµού θέσης του κινητού τηλεφώνου ή κινητών τηλεφώνων φίλων του χρήστη από το δίκτυο της κινητής τηλεφωνίας Location Utility Service (Geocoder/Reverse Geocoder): Υπηρεσία γεωκωδικοποίησης για την εύρεση συντεταγµένων µιας διεύθυνσης και το αντίστροφο Presentation Service: Υπηρεσία παροχής χαρτών και διαφόρων layers. Route Service: Υπηρεσία υπολογισµού µιας διαδροµής µε αφετηρία, προορισµό και πιθανές ενδιάµεσες στάσεις. Αποφασίστηκε επίσης οι υπηρεσίες αυτές να αναπτυχθούν ως SOAP/XML Web Services ώστε να εξασφαλίσουµε αυξηµένα χαρακτηριστικά διαλειτουργικότητας µε άλλα πληροφοριακά συστήµατα, αλλά και για να υποστηρίζονται οι διαθέσιµες επεκτάσεις για security και encryption. Επιπλέον, αποφασίστηκε ότι ως µέθοδος για τη διάθεση των χαρτών θα χρησιµοποιηθεί το πρότυπο JPEG, ως πιο ώριµο σε σχέση µε το σχετικά νέο SVG (Scalable Vector Graphics) format. Τέλος, τα γεωγραφικά δεδοµένα τα οποία θα επιστρέφει ο server µέσω των παραπάνω services δεν θα είναι κατ ανάγκη αποθηκευµένα στον ίδιο το server. Μπορεί να είναι αποθηκευµένα σε εξωτερικό GIS server και να τα λαµβάνει από εκεί. Εικόνα 2: Μορφή του συστήµατός µας Από πλευράς client αποφασίστηκε η εφαρµογή να έχει τα ακόλουθα χαρακτηριστικά: Πλοήγηση σε προορισµό της επιλογής του χρήστη Γραπτές οδηγίες «Στροφή-στροφή» Φωνητικές οδηγίες Απεικόνιση πυξίδας Περιήγηση σε σηµεία ενδιαφέροντος Περιήγηση σε διευθύνσεις επιλογής του χρήστη υνατότητα σύνδεσης µε Bluetooth GPS Receiver που υποστηρίζει το πρωτόκολλο NMEA. Εύχρηστο µενού επιλογών (λίγα κλικ για τις βασικές υπηρεσίες) Γραφικό περιβάλλον, φιλικό προς το χρήστη
Για την υλοποίηση του συστήµατος επιλέχθηκε η γλώσσα προγραµµατισµού Java (Standard Edition για τα web services και Mobile Edition για τον client). Με τον τρόπο αυτό το σύστηµά µας αποκτά ανεξαρτησία πλατφόρµας και λειτουργικού συστήµατος. Επιπλέον, για την εφαρµογή client χρησιµοποιήθηκαν ορισµένα προαιρετικά πακέτα όπως το JSR 082 για Bluetooth, το JSR 172 για web services και το JSR 135 για τα Media. Επειδή πολλά κινητά δεν υποστηρίζουν το JSR 172 κατασκευάσαµε και δεύτερη έκδοση του client η οποία καλεί τα web services µέσω του ksoap και κάνει xml parsing µέσω του kxml. Τα δύο αυτά APIs είναι όπως αποδείχθηκε σχετικά πιο ώριµες τεχνολογίες από το JSR 172. Στο σχήµα που ακολουθεί φαίνεται µια γενική εικόνα του υλοποιηµένου συστήµατός µας στην οποία απεικονίζεται σε γενικές γραµµές η ροή που ακολουθείται κατά την κλήση ενός web service από τον client και η απάντηση που δέχεται από το server. 4 Συµπεράσµατα Εικόνα 3: Το σύστηµά µας Κατά τη σχεδίαση του συστήµατος παρουσιάστηκαν διάφορα προβλήµατα κυρίως στον client. Για τον server τα βασικότερα προβλήµατα που εµφανίστηκαν ήταν το ότι δεν µπορούσε να γίνει αυτόµατο data binding στα XML Schemas του OGC µέσω του framework Castor καθώς και η µεταφορά εικόνων (χαρτών) µέσω web services. Και τα δύο όµως λύθηκαν, το πρώτο απλά µε µη αυτόµατη δηµιουργία των κλάσεων και το δεύτερο µε µετατροπή των JPEG εικόνων σε Strings µε κωδικοποίηση base64. Σε γενικές γραµµές οι τεχνολογίες που χρησιµοποιήθηκαν για το server χαρακτηρίζονται ως ώριµες. Αντίθετα, ο client είχε περισσότερα προβλήµατα ορισµένα εκ των οποίων δεν µπορούσαν να λυθούν. Τα βασικότερα από αυτά είναι: Πολλές φορητές συσκευές δεν υποστηρίζουν τα διάφορα προαιρετικά πακέτα που χρησιµοποιήθηκαν (JSRs 082,172,135) και έτσι έπρεπε να βρεθεί εναλλακτική λύση. Εκτός από τα παραπάνω, τα JVMs (Java Virtual Machines) των φορητών συσκευών στις οποίες
δοκιµάσαµε την εφαρµογή φαίνεται να µην αντέχουν τις επαναληπτικές κλήσεις web services το οποίο συµβαίνει στις περιπτώσεις πλοήγησης µε πυξίδα και πλοήγησης µε χάρτη και η εφαρµογή τερµατίζεται απότοµα. Φαίνεται δηλαδή πως οι διαδικτυακές υπηρεσίες δεν αποτελούν ακόµη ώριµη τεχνολογία για τις υπάρχουσες φορητές συσκευές. Παρόλα τα παραπάνω, η εφαρµογή λειτούργησε ικανοποιητικά στον emulator έστω και µε πειραµατικά γεωγραφικά δεδοµένα, καθώς δεν υπήρχε έτοιµος GIS server συµβατός µε το πρότυπο του OGC που χρησιµοποιήσαµε για να γίνει δοκιµή. Για να µην υπάρχουν τα παραπάνω προβλήµατα στον client αρκεί να ωριµάσουν περισσότερο οι τεχνολογίες που αφορούν στις φορητές συσκευές. Στο µέλλον υπάρχουν πολλές επεκτάσεις που µπορούν να γίνουν ώστε να βελτιωθεί το παρόν σύστηµα και να ξεπεραστούν ορισµένα προβλήµατα. Χαρακτηριστικά αναφέρουµε κάποιες από τις σηµαντικότερες: ιαχείριση δεδοµένων και ιδίως χαρτών σε φορητές συσκευές (caching µέσω RMS) Pre-fetching χαρτών Υποστήριξη vector format (π.χ. SVG) Υλοποίηση ορισµένων από τα προφίλ χρηστών που έχουν µελετηθεί Υλοποίηση κάποιου µοντέλου χρέωσης για τις υπηρεσίες. Επέκταση των features του client Πρόβλεψη ενεργειών από πλευράς εφαρµογής client στην περίπτωση που έχουµε εισερχόµενη κλήση κατά τη διάρκεια για παράδειγµα µίας πλοήγησης.