Δημιουργία ενός Γεωγραφικού Mashup χρησιμοποιώντας το Microsoft Bing Maps και τη PostgreSQL - PostGIS



Σχετικά έγγραφα
Εισαγωγή στη PostgreSQL - PostGIS

Η εκπόνηση της εργασίας θα γίνει σε ομάδες των 2-3 ατόμων

ΤΕΙ Ιονίων Νήσων Εργαστηριακές Ασκήσεις στα Γεωγραφικά Συστήματα Πληροφοριών

Πως θα κατασκευάσω το πρώτο πρόγραμμα;

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Ανάπτυξη εφαρμογής Input-Output

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

2 η Εργαστηριακή Άσκηση

4 η Εργαστηριακή Άσκηση

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

GET SDI PORTAL v1. Οδηγός Βοήθειας

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

Περιεχόμενα ΓΕΩΠΥΛΗ ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΚΕΝΤΡΙΚΟ SITE. ΧΑΡΤΗΣ... 2 Είσοδος στην εφαρμογή «Χάρτης»... 2 Λειτουργίες εφαρμογής «Χάρτης»...

Ανάπτυξη εφαρμογής Input-Output

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Eισαγωγή στο λογισμικό QGis

Ο ArcCatalog χρησιμοποιείται για την πλοήγηση / διαχείριση χωρικών δεδοµένων.

Πώς εκτυπώνουμε μία λίστα από εγγραφές μίας Access database

Διαδικτυακές Υπηρεσίες Αναζήτησης, Απεικόνισης και Απευθείας Πρόσβασης στα δεδομένα ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Έκδοση 0.1.

Εισαγωγή στην PostgreSQL Spatial 8.1

ΔΟΡΥΦΟΡΙΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ ΚΑΙ ΕΦΑΡΜΟΓΕΣ - ΕΡΓΑΣΤΗΡΙΟ ΤΡΟΧΙΕΣ ΔΟΡΥΦΟΡΩΝ ΜΕ ΤΗ ΧΡΗΣΗ ΤΟΥ STK 10

Συνοπτικός Οδηγός Χρήσης του MySQL Workbench

SPSS Statistical Package for the Social Sciences

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

ΔΗ Μ Ι Ο ΥΡ Γ Ι Α W I K I με τ η χρήση τ η ς υπ ηρεσίας h t t p : / id ot.com /

Πανεπιστήμιο Πειραιώς Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική»

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ GRS-1

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Δραστηριότητα 3: Ρυθμίσεις Oικιακής Ομάδας Τοπικού Δικτύου Η/Υ σε WINDOWS 7 & 8

Using Custom Python Expression Functions

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Εισαγωγή 3D αντικειµένων. 'Εκδοση 7

Εθνική Υποδομή ΓΕωχωρικών Πληροφοριών

Σχεδιασμός Βάσεων Δεδομένων

ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΝΤΟΥΛΑΚΗΣ - ΜΕΝΙΟΥΔΑΚΗΣ ΕΠΑ.Λ ΕΛ. ΒΕΝΙΖΕΛΟΥ

Εγχειρίδιο Χρήσης Εφαρμογής Οδηγός Πόλης City guide

Σύμβαση 457 ΟΠΣ Πολιτικής Προστασίας. Εγχειρίδιο Χρήσης Εφαρμογής Γεωγραφικής Απεικόνισης (Version: 1.0)

Geographic Information System(GIS)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Οδηγίες Χρήσης της MySQL

Πώς μπορούμε να δημιουργούμε γεωμετρικά σχέδια με τη Logo;

Γ3.3.Μ7 ΕΠΑΝΆΛΗΨΗ ΜΈΡΟΣ Α: ΈΝΝΟΙΕΣ ΤΙ ΕΊΝΑΙ Η VISUAL BASIC ΤΙ ΜΠΟΡΟΎΜΕ ΝΑ ΚΆΝΟΥΜΕ ΜΕ ΤΗ VISUAL BASIC ΑΝΤΙΚΕΊΜΕΝΑ: ΦΌΡΜΑ ΚΑΙ ΧΕΙΡΙΣΤΉΡΙΑ ΕΤΙΚΈΤΑ LABEL

Δημιουργία ανάγλυφου στο QGIS

Δημιουργία μιας εφαρμογής Java με το NetBeans

Searching and Downloading OpenStreetMap Data

ΤΕΙ Ιονίων Νήσων Εργαστηριακές Ασκήσεις στα Γεωγραφικά Συστήματα Πληροφοριών

Εκπαιδευτικό Ρομπότ ΝΧΤ (REM Bot)

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Η λειτουργία της πλατφόρµας οπτικοποίησης πληροφοριών σεισµικής τρωτότητας απαιτεί την χρήση της έκδοσης 9.2 του λογισµικού Arcmap της ESRI.

Performing Spatial Queries

2.1 Σύνδεση Εξωτερικής Συσκευής στο IDE

ΜICROSOFT VISUAL STUDIO Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging. Εισαγωγή

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΣΥΝΟΠΤΙΚΕΣ Ο ΗΓΙΕΣ ΚΑΤΑΓΡΑΦΗΣ ΙΑΝΥΣΜΑΤΙΚΩΝ Ε ΟΜΕΝΩΝ ΣΤΟ ARCPAD. Ρύθµιση ενσωµατωµένου GPS του MobileMapper CE για λειτουργία µε το ArcPAD.

(3) Από την εργαλειοθήκη επιλέξτε το εργαλείο «ετικέτας (Label)». Δημιουργήστε μια ετικέτα στην φόρμα σας.

ΠΛΗΡΟΦΟΡΙΚΗ Ι Εργαστήριο 1 MATLAB ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στο MATLAB και στο Octave

Εισαγωγή WMS στο QGIS

Διαχείριση Έργων Πληροφορικής Εργαστήριο

Η εργασία που επέλεξες θα σου δώσει τη δυνατότητα να συνεργαστείς με συμμαθητές σου και να σχεδιάσετε μια εικονική εκδρομή με το Google Earth.

Πώς εκτυπώνουμε μία λίστα εγγραφών από μία Access database (γενικός τρόπος)

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΓΕΩΓΡΑΦΙΑΣ. Καθηγητής : Π.Μ. Δελλαδέτσιμας Υπ. Διδάκτορας : Γ. Τσεβά, Α. Ξυνός

Αντικειμενοστρεφής Προγραμματισμός

Οδηγίες Χρήσης. Εισαγωγή. Δεδομένα του Συστήματος

ΟΔΗΓΙΕΣ ΔΗΜΙΟΥΡΓΙΑΣ ΕΦΑΡΜΟΓΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΑΜΕΣΟΥ ΑΡΧΕΙΟΥ ΣΕ ΠΕΡΙΒΑΛΛΟΝ VISUAL STUDIO NET

ΣΗΜΕΙΩΣΕΙΣ. στη γλώσσα προγραμματισμού. Γκέτσιος Βασίλειος

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ

Λειτουργικά Συστήματα

Stellarium Εγχειρίδιο Οδηγιών

Σχεδιασμός Βάσεων Δεδομένων

Σχεδιασμός Βάσεων Δεδομένων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Ο Προγραμματισμός στην Πράξη

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ: Εντολές κίνησης και στροφής στο προγραμματιστικό περιβάλλον Scratch. ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Υπηρεσία διαμοιρασμού αρχείων

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

ΟΔΗΓΙΕΣ ΚΑΤΕΒΑΣΜΑΤΟΣ ΤΡΑΓΟΥΔΙΩΝ ΑΠΟ YOUTUBE ΚΑΙ ΕΓΓΡΑΦΗ ΣΕ CD-ROM. Στάδιο 1: Κατέβασμα τραγουδιών από το YouTube στον υπολογιστή μας σε μορφή mp3.

Οδηγία INSPIRE, μεταδεδομένα και GIS

Σύντοµο Εγχειρίδιο Χρήσης. του Λογισµικού Στατιστικής Επεξεργασίας. SPSS for Windows v. 8.0

Εγχειρίδιο Χρήσης του «Μαθη.Συ.»

ΔΙΑΔΙΚΑΣΙA ΜΕΤΑΦΟΡΑΣ ΥΛΙΚΟΥ ΜΑΘΗΜΑΤΟΣ ΑΠΟ BLACKBOARD VISTA ΣΕ MOODLE

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

Δημιουργία καννάβου στο QGIS

Όλοι οι χρήστες του Turnitin πρέπει να δημιουργήσουν ένα προφίλ χρήστη.

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΓΕΩΓΡΑΦΙΑΣ ΜΑΘΗΜΑ: ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ Ι

Κέντρο υποστήριξης HP. Εισαγωγή. Τι χρειάζεται να γνωρίζετε. Λήψη και εγκατάσταση της λύσης Vista στα Windows 8. 1 of 5 1/7/2014 2:09 μμ

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

ΜΑΘΗΜΑ 10 Ο ΟΡΓΑΝΩΣΗ ΤΗΣ Β ΓΙΑ ΧΡΗΣΤΕΣ (NON-EXPERTS) Α. ΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΠΙΛΟΓΩΝ 1. TOOLS DATA UTILITIES SWITCHBOARD MANAGER YES

Οδηγίες Χρήσης της MySQL

11/4/2014 ΤΕΙ Ιονίων Νήσων Πλατφόρµα Ασύγχρονησ Τηλεκπαίδευσησ eclass s ηµιο ι υρ υ γ ρ ία ί Μ αθήµατο τ σ 1

Ερωτήσεις και απαντήσεις για το e-tutoring 1

Γρήγορη Εκκίνηση. Όταν ξεκινήσετε το GeoGebra, εμφανίζεται το παρακάτω παράθυρο:

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου


Μετατροπή Συντεταγμένων σε δορυφορικές εικόνες Reproject Images

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Καθορισμός μεταβλητών και εισαγωγή δεδομένων

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΣΥΣΤΗΜΑΤΑ ΓΕΩΓΡΑΦΙΚΩΝ ΠΛΗΡΟΦΟΡΙΩΝ (8 ο εξ. Προπτυχιακού εαρινό εξάμηνο 2009-2010) Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής, Διδάσκοντες: Αν. Καθ. Γιάννης Θεοδωρίδης Δρ. Νίκος Πελέκης Υπεύθυνος Εργαστηρίων: Δρ. Ηλίας Φρέντζος Δημιουργία ενός Γεωγραφικού Mashup χρησιμοποιώντας το Microsoft Bing Maps και τη PostgreSQL - PostGIS Δρ. Ηλίας Φρέντζος 1. Γενικά Σκοπός του εργαστηρίου είναι η εξοικείωση των σπουδαστών την υπηρεσία Bing Maps της Microsoft και του αντίστοιχου Software Development Kit (SDK), σε συνδυασμό με τη βάση δεδομένων ανοικτού PostgreSQL και την επέκταση PostGIS για υποστήριξη χωρικών λειτουργιών. Το εργαστήριο έχει σαν στόχο την παρουσίαση των δυνατοτήτων του Bing Maps SDK, αλλά και την εξοικείωση των σπουδαστών με τις σύγχρονες τάσεις δημοσίευσης χωρικών δεδομένων στο web και δημιουργίας γεωγραφικών mashup. Συγκεκριμένα, θα υλοποιήσουμε μία υβριδική εφαρμογή στο web που χρησιμοποιεί δεδομένα από δύο πηγές το Bing Maps και μία τοπική βάση δεδομένων - σε μία ολοκληρωμένη εφαρμογή. Για την εκτέλεση των εργασιών του εργαστηρίου είναι απαραίτητη η εγκατάσταση του παρακάτω λογισμικού στον υπολογιστή σας τα οποία μπορείτε να αποκτήσετε είτε χρησιμοποιώντας το MSDNA λογαριασμό σας είτε διατίθενται ελεύθερα για κατέβασμα: - Microsoft Visual Studio 2008 (MSDNAΑ) - Simplovation Web Maps VE (http://simplovation.com/) - PotgreSQL 8.2 ή ανώτερη (http://www.postgresql.org/ - PostGIS 1.3.1 ή ανώτερο (http://postgis.refractions.net/) - ODBC Driver για τη PostgreSQL (http://www.postgresql.org/ftp/odbc/versions/msi/) - ODBC Driver για.net: http://www.microsoft.com/downloads/details.aspx?familyid=6ccd8427-1017-4f33-a062-d165078e32b1&displaylang=en Λίγα λόγια για το λογισμικό που θα χρησιμοποιηθεί: Microsoft Visual Studio: Είναι το βασικό ολοκληρωμένο περιβάλλον ανάπτυξης λογισμικού (IDE) της Microsoft. Το Visual Studio υποστηρίζει γλώσσες προγραμματισμού όπως C/C++, VB.NET, C#, HTML/XHTML, και JavaScript. Ο κώδικας του εργαστηρίου έχει γραφτεί σε VB.NET, αλλά μπορεί εύκολα να μεταφραστεί σε C#. Microsoft Bing Maps: Όπως περιγράφεται από την Microsoft στην αρχική σελίδα του αντίστοιχου Software Development Kit (http://www.microsoft.com/maps/isdk/ajax/), το Microsoft Bing Maps είναι ένα σύνολο υπηρεσιών βασισμένων στο διαδίκτυο που δίνουν τη δυνατότητα στους χρήστες τους προγραμματιστές να δώσουν στις εφαρμογές τους ένα ολοκληρωμένο τρόπο θέασης της χωρικής υπόστασης των δεδομένων τους και να αναπτύξουν σελίδες που αλληλεπιδρούν με τους τελικούς χρήστες μέσα από ένα πλούσιο γεω-χωρικό περιβάλλον. Το βασικό πλεονέκτημα του Microsoft Bing Maps, όπως και του Google Maps, είναι ότι παρέχουν ένα πλήρες μοντέλο δεδομένων που μπορεί να διαχειριστεί / οπτικοποιήσει χωρικά δεδομένα, κάτω από ένα ενιαίο, πλούσιο χωρικό υπόβαθρο που αποτελείται από διανυσματικά δεδομένα (δρόμοι, ακτογραμμές, διοικητικά όρια), ψηφιακά μοντέλα εδάφους, και ορθοανηγμένα raster δεδομένα όπως δορυφορικοί ορθοφωτοχάρτες (aerial και hybrid view) και αεροφωτογραφίες Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 1

μεγάλης κλίμακας (bird s eye). Το μοντέλο δεδομένων που παρέχεται μπορεί να χρησιμοποιηθεί για να διαχειριστεί τον τρόπο θέασης του χάρτη, τον τρόπο που εμφανίζονται τα επιπλέον δεδομένα που «τοποθετεί» ο χρήστης επάνω στο διατιθέμενο υπόβαθρο, καθώς και να εκτελέσει πιο προηγμένες λειτουργίες, όπως γεωκωδικοποίηση (δηλαδή υπολογισμός των συντεταγμένων μίας γεωγραφικής διεύθυνσης), αντίστροφη γεωκωδικοποίηση, δρομολόγηση κ.α. Ένα γρήγορο και απλό παράδειγμα των δυνατοτήτων που παρέχονται από το Microsoft Bing Maps SDK μπορεί να βρεθεί στο URL: http://isl.cs.unipi.gr/courses/gis/lab/bm_lab_data.zip (το αρχείο bing_maps_demo.html). Ο κώδικας τοποθετεί επάνω στο χάρτη τρεις εκκλησίες, και δημιουργεί ένα τρίγωνο με τις κορυφές του επάνω σε αυτές. Simplavation Web Maps VE: Τα Simplovation Web Maps επιτρέπουν στον προγραμματιστή να αναπτύξει Web εφαρμογές που ενσωματώνουν το Microsoft Bing Maps, χωρίς να γράψει ούτε μία γραμμή κώδικα JavaScript, αλλά να χρησιμοποιήσει το γραφικό περιβάλλον του Visual Studio και τη γλώσσα προγραμματισμού της αρεσκείας του (π.χ. VB.NET ή C#). PostgreSQL και PostGIS: Βλέπε σημειώσεις εργαστηρίου «Εισαγωγή στη PostgreSQL PostGIS» ODBC Driver για τη PostgreSQL και για.net: Οδηγός ODBC για τη PostgreSQL και το Visual Studio.ΝΕΤ. Το ODBC λειτουργεί ως ενδιάμεσος μεταξύ της γλώσσας προγραμματισμού και της Βάσης Δεδομένων και παρέχει ένα πρότυπο API για τη προσπέλαση δεδομένων που βρίσκονται σε Συστήματα Διαχείρισης Βάσεων Δεδομένων. Το ODBC είναι ανεξάρτητο από τη γλώσσα προγραμματισμού, από το ΣΔΒΔ και το λειτουργικό σύστημα που χρησιμοποιείται. Αντικείμενο της άσκησης είναι η σύνταξη ενός mashup με δεδομένα από το Bing Maps και από τη τοπική βάση PortgreSQL. Τα δεδομένα για την εκτέλεση της άσκησης μπορούν αν βρεθούν στο παρακάτω URL: http://isl.cs.unipi.gr/courses/gis/lab/data/bm_lab_data.zip, τα οποία πρέπει να αποσυμπιέσετε στο P:\ (ή σε έναν άλλο τοπικό φάκελο). 1. Δημιουργία της Βάσης Δεδομένων Πριν ξεκινήσουμε την υλοποίηση της εφαρμογής, θα πρέπει να δημιουργήσουμε τη βάση δεδομένων των χωρικών δεδομένων που θα περιέχει τις ζώνες (zones), τα οικοδομικά τετράγωνα (parcels), τους άξονες των οδών (roads) και τα σημεία ενδιαφέροντος (landmarks). Οι πίνακες αυτοί θα πρέπει να έχουν ήδη δημιουργηθεί σε περίπτωση που έχουμε εκτελέσει τις ασκήσεις του εργαστηρίου «Εισαγωγή στη PostgreSQL PostGIS». Σε αντίθετη περίπτωση, ή αν δεν είμαστε σίγουροι ότι η βάση δεδομένων lab_spatial_db περιέχει τα σωστά και ολοκληρωμένα δεδομένα, πρέπει να διαγράψουμε την υπάρχουσα βάση δεδομένων lab_spatial_db και να εκτελέσουμε τα παρακάτω βήματα: Βήμα 1 ο : Θα ξεκινήσουμε από το command prompt για να δημιουργήσουμε μία καινούργια βάση δεδομένων. Επιλέξτε Start > Programs > PostgreSQL 8.2 > command prompt πληκτρολογήστε createdb -T template_postgis -E UTF8 lab_spatial_db Εναλλακτικά μπορείτε να δημιουργήσετε τη βάση μέσω sql. Επιλέξτε Start > Programs > PostgreSQL 8.2 > Psql to postgres και πληκτρολογήστε SET ROLE postgres; CREATE DATABASE lab_spatial_db TEMPLATE=template_postgis ENCODING='UTF8' TABLESPACE=pg_default; Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 2

Βήμα 2 ο : Δημιουργία του σχήματος της βάσης δεδομένων και εισαγωγή των δεδομένων στους αντίστοιχους πίνακες από ASCII αρχείο sql. Ανοίξτε το αρχείο create_spatial_db.sql με έναν editor (π.χ. notepad) και παρατηρείστε τα περιεχόμενά του. Για να εισάγουμε τα δεδομένα στη PostgrSQL θα χρησιμοποιήσουμε την παρακάτω εντολή που πρέπει να εκτελεστεί από το command prompt: psql -d [database] -f [filename] Επομένως, στην περίπτωσή μας έχουμε: psql -d lab_spatial_db -f P:\bm_lab_data\create_spatial_db.sql 2. Ρύθμιση του περιβάλλοντος ανάπτυξης Βήμα 3ο: Ανοίξτε το Visual Studio 2008 και ανοίξτε το Project LabBM που βρίσκεται μέσα στο φάκελο P:\bm_lab_data\LabBM. Το project περιέχει μόνο τη μορφή της σελίδας με τη θέση των αντικειμένων. Η σελίδα αυτή μπορεί να δημιουργηθεί χωρίς να έχουμε γράψουμε καθόλου κώδικα Βήμα 4 ο : Θα πρέπει να προσθέσουμε τα αναγκαία References. Αυτό γίνεται από το μενού Project -> AddRefernce και στο παράθυρο που εμφανίζεται θα διαλέξουμε στο Tab.NET, το Microsoft.Data.Odbc το οποίο περιέχει τα απαραίτητα αντικείμενα για την προσπέλαση του odbc από τη γλώσσα προγραμματισμού. Βήμα 5 ο : Ανοίξτε τον κώδικα της σελίδας Default.aspx (π.χ. δεξί κλικ επάνω στο Default.aspx και επιλογή View Code). Στον κώδικα θα πρέπει καταρχήν να εισάγουμε τα Namespace elements System.Data, Microsoft.Data.Odbc και Simplovation.Web.Maps.VE. Αυτό γίνεται εισάγοντας την εντολή Imports που καθορίζεται στο επίπεδο του αρχείου (δηλαδή πριν από τον καθορισμό της κλάσης) Imports System.Data Imports Microsoft.Data.Odbc Imports Simplovation.Web.Maps.VE Partial Public Class _Default Inherits System.Web.UI.Page 3. Ανάπτυξη κώδικα Βήμα 6 ο : Σύνδεση με τη βάση δεδομένων. Αυτό γίνεται με ένα connection και το κατάλληλο Connection String (μεταβλητή szconnect). Προσοχή πρέπει να δοθεί για να μπει το σωστό password. ' Το Connection String έχει τη παρακάτω σύνταξη Dim szconnect As String = "DRIVER={PostgreSQL ODBC " & _ Driver(UNICODE)};database=lab_spatial_db;server=localhost;" & _ "port=5432;uid=postgres;pwd=postgres" ' ηµιουργία του ODBC Connection σύµφωνα µε το παραπάνω Connection String Dim cndb As OdbcConnection = New OdbcConnection(szConnect) Βήμα 7 ο : Βασικές έννοιες του Bing Maps Data Model. Η πρόσβαση στο χάρτη γίνεται μέσω ενός αντικειμένου τύπου Map (Map1 στη δικιά μας περίπτωση). Το αντικείμενο Map παρέχει την πλήρη λειτουργικότητα που απαιτούμε για την εφαρμογή μας. Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 3

Το αντικείμενο Map μπορεί να περιέχει απευθείας σχήματα (Shapes) τα οποία προστίθενται στο χάρτη με τη μέθοδο AddShape. Τα Shapes μπορεί να είναι σημειακά, γραμμικά ή πολυγωνικά, και κάθε ένα τους συνοδεύεται και από ένα description. Η θέση των Shapes (αλλά και γενικά η θέση του π.χ. κέντρου του χάρτη) δίνεται από αντικείμενα του τύπου LatLong, με λίγα λόγια, από το γεωγραφικό μήκος (Long) και πλάτος (Lat) του κάθε σημείου. Εξ ου και προκύπτει η ανάγκη οι συντεταγμένες να γράφονται σε μοίρες που αναφέρονται σε γεωγραφικό μήκος και πλάτος (και επομένως στο σύστημα συντεταγμένων WGS84). Επίσης, ο χάρτης μπορεί να έχει διάφορα Layers, κάθε ένα από τα οποία μπορεί να λειτουργήσει ως συλλογή από Shapes με κοινή ιδιότητα (π.χ. όλοι οι δρόμοι σε ένα Layer). Δεν υπάρχει περιορισμός ως προς το είδος των αντικειμένων που μπορεί να έχει ένα Layer (π.χ. μπορεί να περιέχει συγχρόνως γραμμές και πολύγωνα) Βήμα 8 ο : Ενέργειες που γίνονται στο φόρτωμα της σελίδας. Στο φόρτωμα της σελίδας, θα πρέπει να ανοίγει η σύνδεση με τη βάση δεδομένων, ο χάρτης να κεντράρεται στην περιοχή ενδιαφέροντος και να προστίθενται τα κατάλληλα Layers. Αυτό θα πρέπει να γίνεται μόνο στο αρχικό φόρτωμα της σελίδας (δηλαδή, όταν δεν γίνεται postback). ' έλεγχος αν η σελίδα φορτώνεται από postback If Not IsPostBack Then 'Άνοιγµα του Connection cndb.open() 'Κεντράρισµα του χάρτη στην περιοχή που µας ενδιαφέρει SetMapCenter() 'Προσθήκη του Layer των οικοδοµικών τετραγώνων AddParcels() End If Οι μέθοδοι SetMapCenter και AddParcels θα δείξουμε πως συντάσσονται στα επόμενα βήματα Βήμα 9 ο : Κεντράρισμα του χάρτη στην περιοχή ενδιαφέροντος. Η ιδέα για το κεντράρισμα του χάρτη είναι να πάμε στη Β.Δ. και να βρω τα όρια των δεδομένων που καλύπτουν την περιοχή που μας ενδιαφέρει. Αυτό θα γίνει εκτελώντας ένα query. Στη συνέχεια θα πρέπει να δηλώσουμε το νέο κέντρο στο χάρτη. Private Sub SetMapCenter() ' ηµιουργούµε το string που θα περιέχει την SQL εντολή που θα ' τρέξουµε ' Η εντολή ζητάει το κέντρο της συλλογής που περιέχει όλους τους ' δρόµους Η συνάρτηση Transform πραγµατοποιεί αλλαγή συντεταγµένων από ' το SRID=2100 (ΕΓΣΑ'87) που βρίσκονται τα δεδοµένα στο SRID=4326 ' (WGS84) στο οποίο θέλουµε να µεταβούµε Dim strsql As String = "SELECT center(collect(transform(road_geometry,4326))) FROM lab.roads " ' ηµιουργία ενός DataAtapter που θα εκτελέσει την SQL ερώτηση επάνω ' στο Connection Dim addb As OdbcDataAdapter = New OdbcDataAdapter(strSQL, cndb) ' ηµιουργούµε ένα καινούργιο dataset στο οποίο θα εισάγουµε τα ' αποτελέσµατα του παραπάνω query Dim dsdb As DataSet = New DataSet() ' Γεµίζουµε το dataset µε τα αποτελέσµατα του query addb.fill(dsdb) ' Ξέρουµε ότι το query που εκτελέσαµε επιστρέφει µόνο έναν πίνακα ο Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 4

End Sub Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής, ' οποίος λόγω του Collect περιέχει µόνο µία εγγραφή (λειτουργεί σαν ' aggregation) και µόνο µία στήλη (το κέντρο της συλλογής), η οποία ' έχει τη µορφή (Long,Lat) ' Εποµένως δηµιουργούµε ένα datarow και σε αυτό αναθέτουµε την πρώτη ' εγγραφή του πρώτου πίνακα του dataset Dim dtr As DataRow = dsdb.tables(0).rows.item(0) ' Παίρνουµε το string που έχει η πρώτη στήλη της εγγραφής Dim astr As String = dtr.item(0).tostring ' διώχνουµε την αριστερή και δεξιά παρένθεση astr = astr.replace("(", "") astr = astr.replace(")", "") ' σπάµε το string ώστε να πάρουµε το Χ και Υ µόνα τους Dim vls As String() = astr.split(",") ' ίνουµε το κέντρο του χάρτη Me.Map1.Latitude = Val(vls(1)) Me.Map1.Longitude = Val(vls(0)) ' καθορίζουµε το επίπεδο του Zoom. Όσο µεγαλύτερος ο αριθµός τόσο ' µεγαλύτερο το Zoom Me.Map1.Zoom = 14 Βήμα 10 ο : Φόρτωμα των δεδομένων των οικοδομικών τετραγώνων. Η ιδέα πάλι είναι να πάρουμε τα δεδομένα που καλύπτουν την περιοχή που μας ενδιαφέρει εκτελώντας ένα query. Αφού πάρουμε τα δεδομένα, θα πρέπει - Να δημιουργήσουμε ένα ShapeLayer (δηλαδή, ένα Layer που θα περιέχει διάφορα shapes και επομένως θα λειτουργεί ως συλλογή από Shapes), έστω Parcels - Να προσθέσουμε στο Layer Parcels ένα shape για κάθε εγγραφή του query που εκτελέσαμε. Αναλυτικά: Private Sub AddParcels() ' ηµιουργούµε ένω Layer Roads από τον χάρτη Parcels = New ShapeLayer Map1.Layers.Add(Parcels) ' ηµιουργώ ένα καινούργιο dataset στο οποίο θα εισάγω τους δρόµους της περιοχής ενδιαφεροντος Dim dsdb As DataSet = New DataSet() ' ηµιουργώ το string που θα περιέχει την SQL εντολή που θα τρέξω ' Η εντολή ζητάει το σύνολο των δρόµων που βρίσκονται στη β.δ. ' Η εντολή transform πραγµατοποιεί αλλαγή συντεταγµένων από το SRID=2100 (ΕΓΣΑ'87) που βρίσκονται τα δεδοµένα ' στο SRID=4326 (WGS84) στο οποίο θέλουµε να µεταβούµε Dim strsql As String = _ "SELECT *, AsText(Transform(parcel_geometry,4326)) FROM lab.parcels" ' ηµιουργία ενός DataAtapter που θα εκτελέσει την SQL ερώτηση _ επάνω στο Connection Dim addb As OdbcDataAdapter = New OdbcDataAdapter(strSQL, cndb) ' Γεµίζουµε το dataset µε τα αποτελέσµατα του query addb.fill(dsdb) ' Στη γενική περίπτωση το query θα επιστρέψει έναν πίνακα µε _ πολλές εγγραφές (rows) ' οι οποίες περιέχουν τους δρόµους που θέλουµε να εµφανίσουµε _ στον χάρτη ' Άρα θα πρέπει να κάνουµε επαναλήψεις µέσα στις εγγραφές (Rows) _ του dataset Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 5

For Each dtr As DataRow In dsdb.tables(0).rows Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής, ' Το WKT του parcel βρίσκεται στο 4 πεδίο του dataset Dim astr As String = dtr.item(3).tostring ' και έχει τη µορφή π.χ. " MULTIPOLYGON(23.6458233025054 _ ' 37.9396383673635,23.6462226488666 37.9394232589026, )" ' άρα θα κόψω το " MULTIPOLYGON(" στην αρχή και το ")" _ ' στο τέλος astr = astr.substring(15, astr.length - 18) ' παίρνω τα σηµεία της γραµµής (χωρίζονται µε ",") Dim vls As String() = astr.split(",") ' δηµιουργώ ένα collection από LatLong το οποίο θα περιέχει _ ' όλα τα σηµεία του MULTIPOLYGON Dim ccol As New Generic.List(Of LatLong) For i As Long = 0 To vls.count - 1 Dim vvls As String() = vls(i).split(" ") Dim VEPoint As LatLong = New LatLong(Val(vvls(1)), _ Val(vvls(0))) ccol.add(vepoint) Next ' ηµιουργώ ένα νέο Shape, τύπου polygon, µε τις κορυφές του _ ' MULTIPOLYGON όπως έχουν γεµίσει το collection Dim shp As Shape = New Shape(ShapeType.Polyline, ccol) ' Κρύβω το εικονίδιο shp.showicon = False ' Γράφω την περιγραφή του (το όνοµά του, το οποίο _ ' βρίσκεται στο 2o πεδίο του dataset) shp.description = dtr.item(1).tostring ' προσθέτω το shape στο Layer Parcels Parcels.Shapes.Add(shp) Next End Sub Βήμα 11 ο : Εκτέλεση της εφαρμογής. Από το μενού Debug -> Start Debugging. Στην περίπτωση που έχουν πάει όλα καλά στο παράθυρο Output στο κάτω μέρος της οθόνης θα πρέπει να εμφανιστεί ένα μήνυμα όπως το παρακάτω: ------ Build started: Project: LabVEM10, Configuration: Debug Any CPU ----- c:\windows\microsoft.net\framework\v3.5\vbc.exe /noconfig LabVEM10 -> C:\Work\_Software\ITA\Lessons\Μ10\Data\LabVEM10\LabVE.dll ========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ========== Η εφαρμογή θα εκτελεστεί και θα εμφανίσει το παρακάτω παράθυρο. Προσοχή, ακόμα δεν έχουμε υλοποιήσει τις λειτουργίες της δεξιά γραμμής εργαλείων. Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 6

Αλλάξτε την εμφάνιση του χάρτη σε Aerial / Road /Bird s Eye και πλοηγηθείτε μέσα στην περιοχή ενδιαφέροντος. Βήμα 12 ο : Φόρτωμα των δεδομένων των σημείων ενδιαφέροντος. Η ιδέα πάλι είναι να πάρουμε τα δεδομένα που καλύπτουν την περιοχή που μας ενδιαφέρει εκτελώντας ένα query. Αφού πάρουμε τα δεδομένα, θα πρέπει - Να δημιουργήσουμε ένα ShapeLayer (δηλαδή, ένα Layer που θα περιέχει διάφορα shapes και επομένως θα λειτουργεί ως συλλογή από Shapes), έστω Landmarks - Να προσθέσουμε στο Layer Landmarks ένα shape για κάθε εγγραφή του query που εκτελέσαμε. Αναλυτικά: Private Sub AddLandmarks() Landmarks = GetLayer("Landmarks") Dim dsdb As DataSet = New DataSet() Dim strsql As String = "SELECT landmark_name, " & _ "AsText(Transform(landmark_geometry,4326)) " & _ "FROM lab.landmarks" Dim addb As OdbcDataAdapter = New OdbcDataAdapter(strSQL, cndb) addb.fill(dsdb) For Each dtr As DataRow In dsdb.tables(0).rows Dim astr As String = dtr.item(1).tostring astr = astr.substring(6, astr.length - 7) Dim vls As String() = astr.split(",") For i As Long = 0 To vls.count - 1 Dim vvls As String() = vls(i).split(" ") Dim VEPoint As LatLong = New _ LatLong(Val(vvls(1)), Val(vvls(0))) Dim shp As Shape = New Shape(VEPoint) shp.description = dtr.item(0).tostring Landmarks.Shapes.Add(shp) Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 7

Next Next End Sub Εκτελέστε πάλι την εφαρμογή σύμφωνα με τα όσα περιγράφονται στο βήμα 11 Βήμα 13 ο : Η εκτέλεση του κώδικα για την εισαγωγή νέων πυλώνων φωτισμού, θα πρέπει να εκκινεί όταν ο χρήστης κάνει κλικ επάνω στον χάρτη. Λόγω όμως του γεγονότος ότι, όπως και πριν, με απλό (αριστερό) κλικ, ο χάρτης υλοποιεί άλλη λειτουργικότητα (π.χ. μετακινείται), θα πρέπει να ελέγξουμε το δεξί κλικ. Επιπλέον, λόγω του γεγονότος ότι υπάρχουν διάφορες λειτουργικότητες που πρέπει να υλοποιηθούν με κλικ επάνω στο χάρτη, θα χρησιμοποιήσουμε το CheckBox με όνομα chkaddlandmarks. Έτσι, όταν ο χρήστης κάνει δεξί κλικ επάνω στο χάρτη Map1 και είναι ενεργοποιημένο το «Προσθήκη Σημείων Ενδιαφέροντος», ένας νέο Landmark θα προστίθεται στη βάση δεδομένων και το χάρτη, στο αντίστοιχο σημείο. Ο κώδικας για την προσθήκη των πυλώνων φωτισμού θα πρέπει να εκτελείται όταν ο χρήστης κάνει δεξί κλικ επάνω στο χάρτη (με όνομα Map1), χρησιμοποιώντας το αντίστοιχο συμβάν (event) του αντικειμένου. Η περιοχή Map1_click της σελίδας (στην οποία πρέπει να γραφτεί ο αντίστοιχος κώδικας), εμφανίζεται πραγματοποιώντας τις κατάλληλες επιλογές από τις αναπτυσσόμενες λίστες όπως στην παρακάτω οθόνη. Ο κώδικας που πρέπει να γραφτεί στο συγκεκριμένο συμβάν είναι όπως παρακάτω: Private Sub Map1_Click(ByVal sender As Object, ByVal e As _ Simplovation.Web.Maps.VE.AsyncMapEventArgs) Handles Map1.Click Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 8

End Sub Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής, ' ελέγχω αν γίνεται δεξί κλικ επάνω στο χάρτη ' για αυτό το λόγο χρησιµοποιώ το αντικείµενο e ' που περιέχει τα ορίσµατα που συνοδεύουν το event If e.rightmousebutton Then End If ' παίρνω το αντικείµενο LatLong που συνοδεύει το κλικ ' δηλαδή, το σηµείο στο οποίο βρισκόταν το ποντίκι ' τη στιγµή που έγινε το κλικ Dim LL As LatLong = e.latlong ' αν έχει επιλεχθεί να προστίθεται νέο σηµείο If chkaddlandmarks.checked Then ' εκτέλεσε την αντίστοιχη µέθοδο AddLandmarkInDB(LL) End If Η συνάρτηση που προσθέτει τα δεδομένα στη βάση και τον χάρτη, θα χρησιμοποιεί μία εντολή INSERT σε συνδυασμό με την GeomFromText ώστε να δημιουργήσουμε την απαραίτητη γεωμετρία (τη θέση δηλαδή) του πυλώνα φωτισμού. Το SQL Query που θα χρησιμοποιηθεί, μετατρέπει σε WKT τη γεωμετρία ενός αντικειμένου που προκύπτει από τα LatLong του χάρτη. Χρησιμοποιεί επίσης εμφωλιασμένες (nested) sql ερωτήσεις για τον υπολογισμό το μεγαλύτερου τρέχοντος id το οποίο αυξάνει κατά 1 και το χρησιμοποιεί σαν id του νέου αντικειμένου, καθώς και για τον καθορισμό του ονόματός του. Τυπικά, θα έχει την παρακάτω μορφή: INSERT INTO lab.landmarks (landmark_id, landmark_name, landmark_geometry) SELECT ((SELECT max(landmark_id) FROM lab.landmarks)+1), 'Point Of Interest ' ((SELECT max(landmark_id) FROM lab. landmarks)+1), GeomFromText('POINT(23.596658706665 38.4687105113576)',4326) Αφού οριστεί το SQL Query, θα πρέπει να ανοίξουμε το Connection, με τη βάση δεδομένων (μέσω του ODBC), και να εκτελέσουμε την εντολή (η οποία δεν επιστρέφει καμία απάντηση). Τέλος θα πρέπει να προσθέσουμε το νέο πυλώνα φωτισμού στο Layer Lights. Αναλυτικά, πληκτρολογήστε τον παρακάτω κώδικα, στην περιοχή Declarations της κλάσης _Default, ακριβώς επάνω από την τελευταία γραμμή κώδικα της κλάσης (End Class). Public Sub AddLightInDB(ByVal LL As LatLong) ' Η ιδέα είναι να χρησιµοποιήσουµε µία εντολή INSERT σε συνάρτηση µε ' την GeomFromText ώστε να δηµιουργήσουµε την απαραίτητη γεµετρία ' (τη θέση) του πυλώνα φωτισµού ' ηµιουργώ το string που θα περιέχει την SQL εντολή που θα τρέξω Dim sqladdlight As String ' Το SQL Query µετατρέπει σε WKT τη γεωµετρία ενός αντικειµένου που ' προκύπτει από τα LatLong του χάρτη ' Χρησιµοποιεί επίσης εµφωλιασµένες (nested) sql ερωτήσεις τον τον ' υπολογισµό το µεγαλύτερου τρέχοντος id το οποίο αυξάνει κατά 1 και ' το χρησιµοποιεί σαν id του νέου αντικειµένου, καθώς και για τον ' καθορισµό του ονόµατός του. sqladdlight = "INSERT INTO lab.landmarks " & _ "(landmark_id, landmark _name, landmark _geometry) " & _ "SELECT ((SELECT max(landmark _id) FROM lab. landmarks)+1), " & _ "POI ' ((SELECT max(landmark_id) FROM lights)+1), " & _ "GeomFromText('POINT(" & LL.Longitude.ToString.Replace(",", ".") & _ Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 9

" " & LL.Latitude.ToString.Replace(",", ".") & ")',4326)" ' ανοίγω το connection ώστε να πραγµατοποιηθεί η εντολή INSERT ' ανοίγω το connection ώστε να πραγµατοποιηθεί η εντολή INSERT cndb.open() ' ορίζω την εντολή Dim CmdDb As New OdbcCommand(sqlAddLight, cndb) ' εκτελώ την εντολή CmdDb.ExecuteNonQuery() ' και κλείνω το connection cndb.close() ' ηµιουργώ ένα νέο Shape, τύπου Pushpin, στις συντεταγµένες Dim shp As Shape = New Shape(LL) ' Γράφω τον τίτλο του pushpin shp.title = "New Point of Interest" ' ανακτώ το Layer Lights Landmarks = GetLayer("Landmarks") ' και προσθέτω το shape στο Layer Lights Landmarks.Shapes.Add(shp) End Sub Εκτελέστε πάλι την εφαρμογή σύμφωνα με τα όσα περιγράφονται στο βήμα 11 4. Ολοκλήρωση Βήμα 14 ο : Ανοίξτε το Project LabBMCompleted που βρίσκεται μέσα στο φάκελο P:\bm_lab_data\LabBM και εκτελέστε το. Το project περιέχει τη τελική εφαρμογή με ολόκληρη τη λειτουργικότητα. Δοκιμάστε να ενεργοποιήσετε / απενεργοποιήσετε τα Layer και να πραγματοποιήσετε αναζητήσεις με το όνομα του δρόμου π.χ. αναζητώντας το 1120 θα βρεθεί ο δρόμος Road1120. Μελετήστε τον κώδικα. Τέλος Lab-BingMaps-2010.doc Εργαστήριο Bing Maps, Δρ. Ηλίας Φρέντζος 10