Εισαγωγή στον MS-SQL Server Express 2008 Spatial

Σχετικά έγγραφα
Εισαγωγή στην PostgreSQL Spatial 8.1

Εισαγωγή στο PostGIS 2.x

Εισαγωγή στην Oracle Spatial 10g

Θεματολογία. Χωρικά στοιχεία σε βάσεις δεδομένων. Υποδομή για χωρικά δεδομένα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

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

databases linux - terminal (linux / windows terminal)

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Geographic Information System(GIS)

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αναλυτικές λειτουργίες ΣΓΠ

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Κεφάλαιο 1. Εγκατάσταση και Περιβάλλον του SQL Server 2014

Διαχείριση Πολιτισμικών Δεδομένων

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Επιλογές σύμφωνα με τις σχέσεις των θέσεων των οντοτήτων στο Χώρο 1

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Oracle Map Viewer. Θεματολογία. Χαρτογραφική απεικόνιση από β.δ.

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Προσοµοίωση τροχιάς σε Oracle Spatial 8i DBMS

Τεχνολογία Πολιτισμικού Λογισμικού

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Εργαστήριο Βάσεων Δεδομένων

2 ο Μάθημα. Χωρικές Βάσεις Δεδομένων και Γεωγραφικά Πληροφοριακά Συστήματα

Ηλεκτρονικοί Υπολογιστές II

Εισαγωγή στη PostgreSQL - PostGIS

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

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


Τμήμα Πληροφορικής ΑΠΘ

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

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

Εισαγωγή στην πληροφορική

Τμήμα Διοίκησης Επιχειρήσεων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL


Έννοιες Διαχείρισης Βάσεων Δεδομένων και Αρχιτεκτονική

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Τμήμα Πληροφορικής ΑΠΘ

Εγκατάσταση Microsoft SQL Server

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

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

Εργαστήριο Βάσεων Δεδομένων

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΗΥ460) Χειμερινό εξάμηνο 2017

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

MS SQL 2012 Express (Εγκατάσταση με Advanced Services)

Βάσεις Περιβαλλοντικών Δεδομένων

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 4ο Μάθημα: SQL - Παράδειγμα. Δρ. Κωνσταντίνος Χ.

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

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

Το σχεσιακό μοντέλο βάσεων δεδομένων

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ανάκτηση Δεδομένων (Information Retrieval)

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

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Θέμα: Versioning σε γεωγραφικές βάσεις δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Ηλεκτρονικοί Υπολογιστές II

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

Ανοικτά Ακαδημαϊκά Μαθήματα

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

2. Για να δημιουργήσουμε το πρώτο ή κάθε νέο Backup set πατάμε στο εικονίδιο και εμφανίζεται ο Wizard του Backup set

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Τεχνολογία Πολιτισμικού Λογισμικού

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Διαχείριση χρηστών και δικαιωμάτων

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

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Ο ΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ. MS SQL Server 2005 Για τις ανάγκες των εφαρµογών της SingularLogic

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

MS SQL 2005 Standard (Εγκατάσταση)

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Οι διαθέσιμες μέθοδοι σε γενικές γραμμές είναι:

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Αγρονόμων & Τοπογράφων Μηχανικών ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΓΓΕΕΩΩΠΠΛΛΗΗΡΡΟΟΦΦΟΟΡΡΙ ΙΙΚΚΗΗ ΜΑΘΗΜΑ: [GEO-6671] Χωρικές Βάσεις Δεδομένων [ Άνοιξη 2008 ] Διδάσκων: Τίμος Σελλής Εισαγωγή στον MS-SQL Server Express 2008 Spatial Κ. Πατρούμπας kpatro@dblab.ece.ntua.gr Σχεδιασμός απλουστευμένου σχήματος χωρικών στοιχείων, υλοποίηση σε περιβάλλον MS-SQL Server Spatial 2008 Express, ορισμός ευρετηρίων και υποβολή τυπικών ερωτημάτων. Γενικό Πλαίσιο: Ας θεωρήσουμε ένα σύνολο γεωγραφικών οντοτήτων που περιλαμβάνουν οδικό δίκτυο (Roads), διοικητική διαίρεση (Zones) και σημεία ενδιαφέροντος (Locations), λ.χ. για την περιοχή Αθηνών: Οδηγίες εκτέλεσης: Α. ΣΥΝΔΕΣΗ ΜΕ ΤΗΝ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ Βήμα 1 ο. Σύνδεση με το περιβάλλον MS-SQL Server. Εφόσον κατά την εγκατάσταση του SQL Server έχετε επιλέξει η σύνδεση να γίνεται μέσω Windows authentication (ή mixed authentication), θεωρείται ότι οι χρήστες των Windows έχουν δικαίωμα σύνδεσης με την βάση δεδομένων, οπότε δεν χρειάζεται να δοθεί όνομα και συνθηματικό (password). Αυτό γίνεται από την γραμμή εντολών (Command Prompt) εκτελώντας μια εντολή της μορφής: sqlcmd -S myserver\instancename Αντικαταστήστε το myserver με το όνομα του υπολογιστή σας και το instancename με το στιγμιότυπο (instance) του SQL Server με τον οποίο θέλετε να συνδεθείτε. Σημειώστε ότι αν έχετε εγκατεστημένη την έκδοση SQL Server Express, τότε το instancename είναι sqlexpress. Για παράδειγμα, αν ο υπολογιστής ονομάζεται SIRIUS, τότε πρέπει να εκτελεστεί η εντολή sqlcmd -S SIRIUS\SQLEXPRESS Τα σχετικά στιγμιότυπα που είναι ενεργά φαίνονται στην εφαρμογή SQL Server Service Manager (υπάρχει και ως εικονίδιο [ενεργό] ή [ανενεργό] στο κάτω μέρος της οθόνης). File: GeoDB2008_SQL_Server_Lab.pdf 1

Χωρικές Βάσεις Δεδομένων. Βήμα 2 ο. (ΕΝΑΛΛΑΚΤΙΚΟ) Σύνδεση με τον MS-SQL Server χρησιμοποιώντας λογαριασμό χρήστη της β.δ. (SQL Server Authentication). Στην περίπτωση αυτή, και πάλι από το Command Prompt δίνετε μιαν εντολή της μορφής sqlcmd -S myserver\instancename -U username P password Για παράδειγμα, ο διαχειριστής της β.δ. ονομάζεται συνήθως sa και το συνθηματικό έχει δοθεί κατά την εγκατάσταση του λογισμικού. Με την αποκατάσταση σύνδεσης, εμφανίζεται στην οθόνη μια γραμμή 1) η οποία αυξάνεται όταν δίνεται μια εντολή SQL και επανέρχεται στην μονάδα όταν η σχετική εντολή εκτελεστεί. Για να κλείσετε την σύνδεσή σας με τον SQL-Server, απλώς γράφετε exit στην γραμμή εντολών. ΠΡΟΣΟΧΗ!!! Επειδή ο SQL-Server υλοποιεί μια ειδική μορφή της SQL, την Transact-SQL, κάθε φορά που ολοκληρώνετε την σύνταξη μιας εντολής SQL θα πρέπει να γράφετε ώστε να αποσταλεί στο σύστημα προς εκτέλεση και να λάβετε αποτελέσματα. ΣΗΜΕΙΩΣΗ: Η σύνδεση με την β.δ. είναι εφικτή και με την εφαρμογή Microsoft SQL Server Management Studio, η οποία φυσικά λειτουργεί σε παραθυρικό περιβάλλον. Επειδή προς το παρόν (Μάρτιος 2008) ο MS-SQL Server Express 2008 διατίθεται μόνο για δοκιμαστική χρήση, η συγκεκριμένη εφαρμογή δεν συμπεριλαμβάνεται στο εγκαθιστούμενο λογισμικό της έκδοσης Express. Περιλαμβάνεται όμως στην πλήρη Developer Edition του λογισμικού. Βήμα 3 ο. (ΠΡΟΑΙΡΕΤΙΚΟ) Δημιουργία βάσης δεδομένων. Αυτό γίνεται με την εντολή: CREATE DATABASE geodb COLLATE SQL_Latin1_General_CP1253_CI_AI; Το όνομα της νέας β.δ. είναι geodb, ενώ ο κωδικός μετά το COLLATE καθορίζει την κωδικοσελίδα με υποστήριξη για ελληνικούς χαρακτήρες. Τα ονόματα των β. δ. που έχουν ήδη δημιουργηθεί στον SQL Server προκύπτουν απ την εντολή: SELECT name FROM sys.databases; Κάθε φορά που επιχειρείται σύνδεση με τον SQL Server, θα πρέπει να προσδιορίζεται μια υπαρκτή βάση δεδομένων (λ.χ.geodb) όπου ακολούθως θα γίνει η διαχείριση των δεδομένων: USE geodb; Αν δεν προσδιοριστεί β.δ., τότε εξ ορισμού θεωρείται ότι χώρος εργασίας είναι η β.δ. master. Σημειώνεται ότι όλες οι β.δ. που δημιουργούνται στον MS-SQL Server υποστηρίζουν εγγενώς την διαχείριση χωρικών δεδομένων, χωρίς καμιά περαιτέρω ρύθμιση. Βήμα 4 ο. Μαζική εκτέλεση πολλαπλών εντολών SQL. Σε περιβάλλον SQL Server γράφετε: :r filename όπου filename είναι το πλήρες μονοπάτι (λ.χ. d:\temp\sql_insertions.txt) όπου είναι αποθηκευμένο το αρχείο με τις εντολές SQL. Αυτή η λειτουργία μπορεί να φανεί ιδιαίτερα χρήσιμη π.χ. κατά την εισαγωγή μεγάλου όγκου δεδομένων στο σύστημα. Οι εντολές δημιουργίας των πινάκων και εισαγωγής δεδομένων μπορεί να έχουν προκύψει από κάποιο άλλο σύστημα (λ.χ. με μια λειτουργία export). Εφόσον η σύνταξη των εντολών είναι συμβατή με τα ισχύοντα στον SQL Server, τότε η εκτέλεση των εντολών γίνεται αυτόματα μετά από εντολή. Βήμα 5 ο. Δημιουργία νέου σχήματος με την ονομασία network : CREATE SCHEMA network; File: GeoDB2008_SQL_Server_Lab.pdf 2

Εισαγωγή στον SQL Server Spatial 10 Ο SQL Server Spatial 2008 (έκδοση 10) υποστηρίζει δύο τύπους χωρικών δεδομένων: Ο τύπος δεδομένων GEOGRAPHY μπορεί να αναπαραστήσει σημεία, γραμμές, πολύγωνα ή συλλογές χωρικών οντοτήτων με συντεταγμένες που αντιστοιχούν σε ένα επιλεγμένο ελλειψοειδές (λ.χ. σε σύστημα WGS84 με γεωγραφικά μήκη και πλάτη). Συνεπώς, για κάθε χωρική οντότητα πρέπει να δηλώνεται το σύστημα αναφοράς της (SRID). Οι σχετικοί χωρικοί τελεστές (λ.χ. απόσταση, τομή) χρησιμοποιούν την πληροφορία του γεωειδούς κατά τους γεωμετρικούς υπολογισμούς. Ο τύπος δεδομένων GEOMETRY αναφέρεται σε γεωμετρικά σχήματα στο επίπεδο και είναι πλήρως συμβατός με τις προδιαγραφές του OGC. Προφανώς όλοι οι υπολογισμοί γίνονται με καρτεσιανές συντεταγμένες, ενώ το σύστημα αναφοράς για κάθε γεωμετρία πρέπει να είναι 0 (UNSPECIFIED). Ο MS-SQL Server Spatial 2008 πρόκειται να υποστηρίζει αρκετά συστήματα αναφοράς σύμφωνα με τις προδιαγραφές του OGC (κατάλογος EPSG). Προς το παρόν, το ΕΓΣΑ 87 δεν μπορεί να δηλωθεί για γεωγραφικά δεδομένα, μολονότι συμπεριλαμβάνεται στα υποστηριζόμενα συστήματα (όπως προκύπτει απ τον σχετικό πίνακα του συστήματος SYS.SPATIAL_REFERENCE_SYSTEMS). Οι πιο χρήσιμοι κωδικοί συστημάτων αναφοράς είναι: Κωδικός Σύστημα αναφοράς 0 UNSPECIFIED (μη προσδιορισμένο) GEOMETRY 4326 WGS'84 GEOGRAPHY 4121 ΕΓΣΑ'87 (GCS_GGRS_1987) GEOGRAPHY Υπάρχουν κάποιες διαφορές στην σύνταξη των εντολών SQL για τον ορισμό και την επεξεργασία γεωγραφικών και γεωμετρικών δεδομένων, οι οποίες διευκρινίζονται ακολούθως χρησιμοποιώντας το ίδιο παράδειγμα (με πλήρη αντιστοιχία των σχετικών βημάτων). Β. ΧΕΙΡΙΣΜΟΣ ΓΕΩΓΡΑΦΙΚΩΝ ΔΕΔΟΜΕΝΩΝ Βήμα 6 ο. Ορισμός του πίνακα σημειακών θέσεων: CREATE TABLE network.locations ( pos GEOGRAPHY, location_id INTEGER NOT NULL PRIMARY KEY, location_name VARCHAR(30) ); Βήμα 7 ο. Ορισμός του πίνακα γραμμικών αξόνων: CREATE TABLE network.links ( segment GEOGRAPHY, link_id INTEGER NOT NULL PRIMARY KEY, roadname_gr VARCHAR(50), roadname_lt VARCHAR(50), weight FLOAT ); Βήμα 8 ο. Δημιουργία πίνακα πολυγωνικών περιοχών: CREATE TABLE network.zones ( sector GEOGRAPHY, zone_id INTEGER NOT NULL PRIMARY KEY, zone_name VARCHAR(30) ); Βήμα 9 ο. Εισαγωγή στοιχείων στον πίνακα των σημείων, με προσδιορισμό συστήματος αναφοράς (4326 > WGS84), χρησιμοποιώντας το γνωστό WKT format κατά τις προδιαγραφές OGC: INSERT INTO network.locations VALUES (geography::stpointfromtext('point (23.7358855946042 37.9760592921476)', 4326), 301, 'ΣΥΝΤΑΓΜΑ'); File: GeoDB2008_SQL_Server_Lab.pdf 3

Χωρικές Βάσεις Δεδομένων. INSERT INTO network.locations VALUES (geography::stpointfromtext('point (23.7286422265202 37.9838577135777)', 4326), 302, 'ΟΜΟΝΟΙΑ'); INSERT INTO network.locations VALUES (geography::stpointfromtext('point (23.7611659189788 37.9866334048257)', 4326), 303, 'ΑΜΠΕΛΟΚΗΠΟΙ'); INSERT INTO network.locations VALUES (geography::stpointfromtext('point (23.7249250618439 37.9623079666386)', 4326), 304, 'ΦΙΞ'); INSERT INTO network.locations VALUES (geography::stgeomfromtext('point (23.6628698225084 37.9447132062281)', 4326), 305, 'ΣΤΑΔΙΟ ΚΑΡΑΪΣΚΑΚΗ'); INSERT INTO network.locations VALUES (geography::stgeomfromtext('point (23.7862940624972 38.027016765328)', 4326), 306, 'ΟΛΥΜΠΙΑΚΟ ΣΤΑΔΙΟ'); INSERT INTO network.locations VALUES (geography::stgeomfromtext('point (23.7507869639525 37.9775137584224)', 4326), 307, 'ΕΥΑΓΓΕΛΙΣΜΟΣ'); Βήμα 10 ο. Ευρετήριο με χρήση πλέγματος (grid τεσσάρων επιπέδων) για τις σημειακές θέσεις. ΠΡΟΣΟΧΗ: Ο SQL Server Spatial δεν υποστηρίζει R-trees ή Quad-trees!!! CREATE SPATIAL INDEX network_locations_idx ON network.locations(pos) WITH (GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) ); Βήμα 11 ο. Εισαγωγή στοιχείων στον πίνακα των γραμμικών αξόνων. 23.7313264721466 37.99168041801, 23.7613641603192 37.9865479886563)', 4326), 101,'ΑΛΕΞΑΝΔΡΑΣ ΛΕΩΦ.','ALEXANDRAS',18.25); 23.735697892401 37.9760986963409, 23.7438611755563 37.9752258025008, 23.7511706065745 37.9771718853678, 23.7613641603192 37.9865479886563)', 4326), 102, 'ΒΑΣ. ΣΟΦΙΑΣ ΛΕΩΦ.', 'VAS. SOFIAS', 24.69); 23.735697892401 37.9760986963409, 23.7301362480137 37.9836591489621, 23.7283523149463 37.9841005177353)', 4326), 103, 'ΠΑΝΕΠΙΣΤΗΜΙΟΥ', 'PANEPISTIMIOU', 12.87); 23.7283523149463 37.9841005177353, 23.7313264721466 37.99168041801)', 4326), 104,'ΠΑΤΗΣΙΩΝ','PATISSION',18.3); 23.735697892401 37.9760986963409, 23.7352595189433 37.9733481409965, 23.7315271778728 37.9696769122108, 23.7313120986938 37.9682374751145)', 4326), 105,'ΑΜΑΛΙΑΣ ΛΕΩΦ.','AMALIAS',26.86); 23.7313120986938 37.9682374751145, 23.6940538159079 37.9388824075288)', 4326), 106,'ΣΥΓΓΡΟΥ ΛΕΩΦ.','SYNGROU',62.34); 23.7613641603192 37.9865479886563, 23.7655901891781 37.9905065368091, 23.7698180014957 37.9985084876123, 23.7894177185057 38.0235777432242)', 4326), 107,'ΚΗΦΙΣΙΑΣ ΛΕΩΦ.','KIFISSIAS',29.51); 23.7313264721466 37.99168041801, 23.7347052406557 38.0049556114184, 23.7359738283759 38.0234077365602, 23.7320135327457 38.0255427698101, 23.7290585634994 38.0306279758707)', 4326), 108,'ΠΑΤΗΣΙΩΝ','PATISSION',13.67); 23.6940538159079 37.9388824075288, 23.6907201862809 37.9383749079485, File: GeoDB2008_SQL_Server_Lab.pdf 4

Εισαγωγή στον SQL Server Spatial 10 23.6814020547515 37.9433986760943, 23.6624058516941 37.9441871467978, 23.6536198247272 37.9484739738526)', 4326), 109, 'ΠΟΣΕΙΔΩΝΟΣ ΛΕΩΦ.', 'POSEIDONOS', 56.8); 23.7313120986938 37.9682374751145, 23.7334452619478 37.9671533858865, 23.7347154738309 37.9575274048542, 23.7405821610559 37.9410379180804, 23.7446083444345 37.9336540189973)', 4326), 110, 'ΒΟΥΛΙΑΓΜΕΝΗΣ ΛΕΩΦ.', 'VOULIAGMENIS',51.72); 23.7283523149463 37.9841005177353, 23.7209596304497 37.9853080721949, 23.714337084011 37.9841448088012)', 4326), 111, 'ΑΓ. ΚΩΝΣΤΑΝΤΙΝΟΥ', 'AG. KONSTANTINOU', 14.5); 23.714337084011 37.9841448088012, 23.7092044861072 37.9859352369975, 23.6943538431428 37.9963468035772)', 4326), 112,'ΙΕΡΑ ΟΔΟΣ','IERA ODOS',34.85); 23.7283523149463 37.9841005177353, 23.7161974233466 37.9785125008382, 23.699229461387 37.9685834965232, 23.6894328677147 37.9602488753407, 23.6737915198556 37.9551079889574)', 4326), 113,'ΠΕΙΡΑΙΩΣ','PIREOS',29.92); 23.6737915198556 37.9551079889574, 23.6536198247272 37.9484739738526)', 4326), 114,'ΠΕΙΡΑΙΩΣ','PIREOS',25.61); INSERT INTO network.links VALUES (geography::stlinefromtext('linestring( 23.6737915198556 37.9551079889574, 23.6782890293648 37.9662671821744, 23.6750913731007 37.9720657187087, 23.6865175922988 37.9893617096306, 23.6943538431428 37.9963468035772)', 4326), 115, 'ΚΗΦΙΣΟΥ ΛΕΩΦ.', 'KIFISSOU', 45.82); INSERT INTO network.links VALUES (geography::stlinefromtext('linestring( 23.6943538431428 37.9963468035772, 23.7054568452539 38.0017166378004, 23.7175040249571 38.0102328508952, 23.7188391299675 38.0154173734266, 23.7290585634994 38.0306279758707)', 4326), 116, 'ΚΗΦΙΣΟΥ ΛΕΩΦ.', 'KIFISSOU', 39.63); INSERT INTO network.links VALUES (geography::stlinefromtext('linestring( 23.7613641603192 37.9865479886563, 23.7643956347509 37.9859891484948, 23.768457339847 37.9888854524889, 23.775569358251 37.993334709522, 23.7956320820152 38.005663860506, 23.8201692388079 38.0137216784641)', 4326), 117, 'ΜΕΣΟΓΕΙΩΝ','MESOGEION',41.76); Βήμα 12 ο. Δημιουργία ευρετηρίου με πλέγμα (grid τεσσάρων επιπέδων) για γραμμικούς άξονες: CREATE SPATIAL INDEX network_links_idx ON network.links(segment) WITH ( GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) ); Βήμα 13 ο. Εισαγωγή στοιχείων στον πίνακα των πολυγωνικών περιοχών. INSERT INTO network.zones VALUES (geography::stgeomfromtext('polyn(( 23.7007807055584 37.9691632153706, 23.6876976166347 37.9777362022154, 23.6952319090743 37.9964044015643, 23.7176577510143 38.0099445982422, 23.7189049685071 38.0156855447292, 23.7360833900768 38.0287791915574, 23.7534993121144 38.0269521584964, 23.7423156205151 38.0098577627673, 23.7673650756768 38.0005857778246, 23.791130482597 37.9944620540446, 23.7882685552432 37.9811161087586, 23.757826011315 37.9796228762554, 23.7542468488234 37.9659876986151, 23.724478946001 37.9501344256025, 23.7147871920335 37.9552833368972, 23.7198435925684 37.9595989951906, 23.7151003856018 37.9635889773284, 23.7145721602422 37.9640332812509, 23.7007807055584 37.9691632153706))', 4326), 501,'ΑΘΗΝΑ'); File: GeoDB2008_SQL_Server_Lab.pdf 5

Χωρικές Βάσεις Δεδομένων. INSERT INTO network.zones VALUES (geography::stgeomfromtext('polyn(( 23.6725182113872 37.9428400074272, 23.6642908343268 37.9434872965995, 23.6634599294468 37.9400367712948, 23.6579179374206 37.9354232527334, 23.6504259472517 37.9341560686129, 23.6489515381986 37.9390365637952, 23.646182326351 37.9364421555798, 23.6475423393641 37.9302204007647, 23.6360752400878 37.9259710840192, 23.6280763272315 37.9295857983343, 23.6216325184325 37.9363657814189, 23.6297197785873 37.9394565295939, 23.6375893461122 37.9377569536187, 23.640951827782 37.9426521413085, 23.6417705472971 37.9484015493818, 23.6366913916659 37.9481944127084, 23.6330946706383 37.9417658673195, 23.6214934106757 37.939909266083, 23.6126305675881 37.9463935894122, 23.6276038665511 37.9513268012476, 23.629235194753 37.9636877860156, 23.6576783751012 37.9609963169307, 23.6740359275704 37.9552000868147, 23.6725182113872 37.9428400074272 ))', 4326), 502,'ΠΕΙΡΑΙΑΣ'); INSERT INTO network.zones VALUES (geography::stgeomfromtext('polyn(( 23.7894421218102 38.0236212355017, 23.7813575198031 38.0294775224191, 23.7756726972887 38.0417194019487, 23.7851681791902 38.050671299571, 23.7930786999899 38.050047334785, 23.8023936491267 38.0672935013235, 23.8293670615162 38.0617200054426, 23.8308627878328 38.0430880619863, 23.8223315194285 38.0338860367882, 23.7950624716806 38.0332035138444, 23.7894421218102 38.0236212355017 ))', 4326), 503,'ΜΑΡΟΥΣΙ'); INSERT INTO network.zones VALUES (geography::stpolyfromtext('polyn(( 23.6925188861217 37.9949528969958, 23.6713714742347 38.0073459327964, 23.6739330551211 38.0146042787367, 23.6647179010051 38.0255235788215, 23.6696906190487 38.0351146976546, 23.6887472021967 38.028325940865, 23.7059049761738 38.0197507496128, 23.7189049685071 38.0156855447292, 23.7176577510143 38.0099445982422, 23.6952319090743 37.9964044015643, 23.6925188861217 37.9949528969958 ))', 4326), 504,'ΠΕΡΙΣΤΕΡΙ'); INSERT INTO network.zones VALUES (geography::stpolyfromtext('polyn(( 23.699392973902 37.9430173463914, 23.7147871920335 37.9552833368972, 23.724478946001 37.9501344256025, 23.7285942350891 37.9438059551803, 23.7223453722202 37.9404538669697, 23.7151592594245 37.9305195113442, 23.7057467891319 37.9360270892692, 23.7074195246667 37.9392734134121, 23.699392973902 37.9430173463914 ))', 4326), 505,'ΝΕΑ ΣΜΥΡΝΗ'); INSERT INTO network.zones VALUES (geography::stpolyfromtext('polyn(( 23.6907699455909 37.9384387032706, 23.6891118863809 37.9393562463829, 23.6883094122685 37.9397995744465, 23.6823344238338 37.9431001244842, 23.6871336769447 37.9515367488469, 23.6948472870942 37.9571728449748, 23.6943425403661 37.9622768376307, 23.7059428848945 37.9639656262274, 23.7113115532887 37.9628415847563, 23.7151003856018 37.9635889773284, 23.7198435925684 37.9595989951906, 23.7147871920335 37.9552833368972, 23.699392973902 37.9430173463914, 23.694106920847 37.9389326417614, 23.6907699455909 37.9384387032706 ))', 4326), 506,'ΚΑΛΛΙΘΕΑ'); Βήμα 14 ο. Κατασκευή ευρετηρίου με χρήση πλέγματος (grid τεσσάρων επιπέδων) για πολύγωνα: CREATE SPATIAL INDEX network_zones_idx ON network.zones(sector) WITH ( GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) ); Γ. ΧΕΙΡΙΣΜΟΣ ΓΕΩΜΕΤΡΙΚΩΝ ΔΕΔΟΜΕΝΩΝ Βήμα 6 ο. Ορισμός του πίνακα σημειακών θέσεων: CREATE TABLE network.locations ( pos GEOMETRY, location_id INTEGER NOT NULL PRIMARY KEY, location_name VARCHAR(30) ); File: GeoDB2008_SQL_Server_Lab.pdf 6

Εισαγωγή στον SQL Server Spatial 10 Βήμα 7 ο. Ορισμός του πίνακα γραμμικών αξόνων: CREATE TABLE network.links ( segment GEOMETRY, link_id INTEGER NOT NULL PRIMARY KEY, roadname_gr VARCHAR(50), roadname_lt VARCHAR(50), weight FLOAT ); Βήμα 8 ο. Δημιουργία πίνακα πολυγωνικών περιοχών: CREATE TABLE network.zones ( sector GEOMETRY, zone_id INTEGER NOT NULL PRIMARY KEY, zone_name VARCHAR(30) ); Στην συνέχεια, όλα τα στοιχεία εισάγονται χωρίς προσδιορισμό συστήματος αναφοράς (0 UNSPECIFIED), οπότε υπονοούνται καρτεσιανές συντεταγμένες. Και πάλι η γεωμετρία δηλώνεται σε WKT format. Βήμα 9 ο. Εισαγωγή στοιχείων στον πίνακα των σημείων. INSERT INTO network.locations VALUES (geometry::stpointfromtext('point(476654 4202904)',0), 301, 'ΣΥΝΤΑΓΜΑ'); INSERT INTO network.locations VALUES (geometry::stpointfromtext('point(476021 4203771)',0), 302, 'ΟΜΟΝΟΙΑ'); INSERT INTO network.locations VALUES (geometry::stpointfromtext('point(478878 4204071)',0), 303, 'ΑΜΠΕΛΟΚΗΠΟΙ'); INSERT INTO network.locations VALUES (geometry::stpointfromtext('point(475687 4201381)',0), 304, 'ΦΙΞ'); INSERT INTO network.locations VALUES (geometry::stgeomfromtext('point(470229 4199447)',0), 305, 'ΣΤΑΔΙΟ ΚΑΡΑΪΣΚΑΚΗ'); INSERT INTO network.locations VALUES (geometry::stgeomfromtext('point(481094 4208546)',0), 306, 'ΟΛΥΜΠΙΑΚΟ ΣΤΑΔΙΟ'); INSERT INTO network.locations VALUES (geometry::stgeomfromtext('point(477963 4203061)',0), 307, 'ΕΥΑΓΓΕΛΙΣΜΟΣ'); Βήμα 10 ο. Ευρετήριο με χρήση πλέγματος (grid τεσσάρων επιπέδων) για τις σημειακές θέσεις. ΠΡΟΣΟΧΗ: Η (προαιρετική) παράμετρος BOUNDING_BOX του ευρετηρίου για το περιβάλλον ορθογώνιο των οντοτήτων δηλώνεται μόνο σε περίπτωση γεωμετρικών στοιχείων!!! CREATE SPATIAL INDEX network_locations_idx ON network.locations(pos) WITH ( BOUNDING_BOX = ( 465000, 4195000, 486000, 4215000 ), GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) ); Βήμα 11 ο. Εισαγωγή στοιχείων στον πίνακα των γραμμικών αξόνων. INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476259 4204638, 478895 4204061)', 0), 101,'ΑΛΕΞΑΝΔΡΑΣ ΛΕΩΦ.','ALEXANDRAS',18.25); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476638 4202908, 477354 4202809, 477997 4203023, 478895 4204061)', 0),102,'ΒΑΣ. ΣΟΦΙΑΣ ΛΕΩΦ.', 'VAS. SOFIAS', 24.69); File: GeoDB2008_SQL_Server_Lab.pdf 7

Χωρικές Βάσεις Δεδομένων. INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476638 4202908, 476152 4203748, 475995 4203798)', 0), 103,'ΠΑΝΕΠΙΣΤΗΜΙΟΥ', 'PANEPISTIMIOU', 12.87); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 475995 4203798, 476259 4204638)', 0), 104,'ΠΑΤΗΣΙΩΝ','PATISSION',18.3); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476638 4202908, 476598 4202603, 476269 4202197, 476250 4202037)', 0), 105,'ΑΜΑΛΙΑΣ ΛΕΩΦ.','AMALIAS',26.86); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476250 4202037, 472967 4198790)', 0), 106,'ΣΥΓΓΡΟΥ ΛΕΩΦ.','SYNGROU',62.34); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 478895 4204061, 479267 4204500, 479641 4205387, 481368 4208164)', 0), 107,'ΚΗΦΙΣΙΑΣ ΛΕΩΦ.','KIFISSIAS',29.51); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476259 4204638, 476560 4206110, 476677 4208157, 476330 4208395, 476072 4208960)', 0), 108,'ΠΑΤΗΣΙΩΝ','PATISSION',13.67); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 472967 4198790, 472674 4198735, 471857 4199295, 470188 4199388, 469418 4199867)', 0), 109,'ΠΟΣΕΙΔΩΝΟΣ ΛΕΩΦ.','POSEIDONOS',56.8); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 476250 4202037, 476437 4201916, 476546 4200848, 477056 4199017, 477407 4198197)', 0), 110,'ΒΟΥΛΙΑΓΜΕΝΗΣ ΛΕΩΦ.','VOULIAGMENIS',51.72); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 475995 4203798, 475346 4203934, 474764 4203806)',0),111,'ΑΓ. ΚΩΝΣΤΑΝΤΙΝΟΥ','AG. KONSTANTINOU', 14.5); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 474764 4203806, 474314 4204006, 473014 4205166)', 0), 112,'ΙΕΡΑ ΟΔΟΣ','IERA ODOS',34.85); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 475995 4203798, 474926 4203181, 473432 4202084, 472569 4201162, 471193 4200596)', 0), 113,'ΠΕΙΡΑΙΩΣ','PIREOS',29.92); INSERT INTO network.links VALUES (geometry::stgeomfromtext('linestring( 471193 4200596, 469418 4199867)',0), 114,'ΠΕΙΡΑΙΩΣ','PIREOS',25.61); INSERT INTO network.links VALUES (geometry::stlinefromtext('linestring( 471193 4200596, 471592 4201833, 471313 4202478, 472323 4204393, 473014 4205166)', 0), 115,'ΚΗΦΙΣΟΥ ΛΕΩΦ.','KIFISSOU',45.82); INSERT INTO network.links VALUES (geometry::stlinefromtext('linestring( 473014 4205166, 473991 4205758, 475051 4206700, 475170 4207275, 476072 4208960)', 0), 116,'ΚΗΦΙΣΟΥ ΛΕΩΦ.','KIFISSOU',39.63); INSERT INTO network.links VALUES (geometry::stlinefromtext('linestring( 478895 4204061, 479161 4203999, 479518 4204319, 480144 4204811, 481909 4206175, 484065 4207065)', 0), 117,'ΜΕΣΟΓΕΙΩΝ','MESOGEION',41.76); Βήμα 12 ο. Δημιουργία ευρετηρίου με grid τεσσάρων επιπέδων για τους γραμμικούς άξονες. CREATE SPATIAL INDEX network_links_idx ON network.links(segment) WITH ( BOUNDING_BOX = ( 465000, 4195000, 486000, 4215000 ), GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) ); File: GeoDB2008_SQL_Server_Lab.pdf 8

Εισαγωγή στον SQL Server Spatial 10 Βήμα 13 ο. Εισαγωγή στοιχείων στον πίνακα των πολυγωνικών περιοχών. INSERT INTO network.zones VALUES (geometry::stgeomfromtext('polyn(( 473569 4202148, 474778 4201575, 474825 4201525, 475240 4201082, 474794 4200604, 475644 4200030, 478264 4201782, 478582 4203294, 481256 4203453, 481511 4204933, 479426 4205618, 477229 4206652, 478216 4208546, 476688 4208753, 475176 4207305, 475065 4206668, 473091 4205172, 472423 4203103, 473569 4202148 ))', 0), 501,'ΑΘΗΝΑ'); INSERT INTO network.zones VALUES (geometry::stgeomfromtext('polyn(( 471076 4199236, 471214 4200607, 469779 4201255, 467282 4201563, 467133 4200192, 465815 4199650, 466591 4198927, 467611 4199129, 467930 4199841, 468377 4199863, 468302 4199225, 468005 4198683, 467314 4198874, 466602 4198534, 467165 4197780, 467867 4197376, 468876 4197843, 468759 4198534, 469004 4198821, 469131 4198279, 469790 4198417, 470279 4198927, 470353 4199310, 471076 4199236 ))',0), 502,'ΠΕΙΡΑΙΑΣ'); INSERT INTO network.zones VALUES (geometry::stgeomfromtext('polyn(( 481370 4208169, 481865 4209231, 484259 4209302, 485009 4210321, 484882 4212389, 482517 4213012, 481696 4211100, 481002 4211171, 480166 4210180, 480662 4208820, 481370 4208169 ))', 0), 503,'ΜΑΡΟΥΣΙ'); INSERT INTO network.zones VALUES (geometry::stpolyfromtext('polyn(( 472852 4205012, 473091 4205172, 475065 4206668, 475176 4207305, 474036 4207759, 472534 4208716, 470864 4209475, 470424 4208412, 471228 4207198, 471000 4206393, 472852 4205012 ))', 0), 504,'ΠΕΡΙΣΤΕΡΙ'); INSERT INTO network.zones VALUES (geometry::stpolyfromtext('polyn(( 473437 4199247, 474141 4198830, 473993 4198470, 474818 4197856, 475453 4198957, 476003 4199327, 475644 4200030, 474794 4200604, 473437 4199247 ))', 0), 505,'ΝΕΑ ΣΜΥΡΝΗ'); INSERT INTO network.zones VALUES (geometry::stpolyfromtext('polyn(( 472678 4198742, 472971 4198796, 473437 4199247, 474794 4200604, 475240 4201082, 474825 4201525, 474491 4201444, 474020 4201570, 473001 4201386, 473043 4200819, 472363 4200196, 471939 4199262, 472462 4198894, 472533 4198844, 472678 4198742 ))', 0), 506,'ΚΑΛΛΙΘΕΑ'); Βήμα 14 ο. Κατασκευή ευρετηρίου με πλέγμα (grid τεσσάρων επιπέδων) για τα πολύγωνα: CREATE SPATIAL INDEX network_zones_idx ON network.zones(sector) WITH ( BOUNDING_BOX = ( 465000, 4195000, 486000, 4215000 ), GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) ); Δ. ΔΙΑΤΥΠΩΣΗ ΕΡΩΤΗΜΑΤΩΝ ΜΕ ΧΩΡΙΚΟΥΣ ΤΕΛΕΣΤΕΣ Παρατηρήστε ότι στον SQL Server είναι σχεδόν πάντοτε αναγκαία η δήλωση προσωρινών μεταβλητών για χωρικά δεδομένα. Η δήλωση γίνεται με την εντολή DECLARE και η ανάθεση τιμής με την εντολή SET. Οι μεταβλητές φέρουν το πρόθεμα @ και χρησιμοποιούνται στους χωρικούς τελεστές. Είτε πρόκειται για γεωμετρικές (geometry) είτε για γεωγραφικές (geography) οντότητες, θα πρέπει να δηλώνεται ο τύπος τους (στο DECLARE) κι η ερμηνεία των συντεταγμένων (στο SET). Βήμα 15 ο. Ερώτημα σημείου (point query): --Βρες τις ζώνες που περιλαμβάνουν μια συγκεκριμένη θέση ενδιαφέροντος (με ορισμού παραμέτρου). ΠΡΟΣΟΧΗ: Ο τελεστής STWithin δεν υποστηρίζεται για γεωγραφικά στοιχεία!!! DECLARE @g geography; SET @g = geography::stgeomfromtext('point (23.724 37.962)', 4326); File: GeoDB2008_SQL_Server_Lab.pdf 9

Χωρικές Βάσεις Δεδομένων. SELECT zone_id, zone_name FROM network.zones WHERE @g.stintersects(sector)=1; DECLARE @g geometry; SET @g = geometry::stgeomfromtext('point (482000 4210000)',0); SELECT zone_id, zone_name FROM network.zones WHERE @g.stwithin(sector)=1; Βήμα 16 ο. Ερώτημα απόστασης από σημείο (distance query): --Βρες τα σημεία ενδιαφέροντος βρίσκονται εντός απόστασης 200 μέτρων από συγκεκριμένη θέση DECLARE @ p geography; SET @p = geography::stgeomfromtext('point (23.724 37.962)', 4326); SELECT location_id, location_name, @p.stdistance(pos) AS distance FROM network.locations WHERE @p.stdistance(pos)<=200; DECLARE @p geometry; SET @p = geometry::stgeomfromtext('point (476500 4202800)',0); SELECT location_id, location_name, @p.stdistance(pos) AS distance FROM network.locations WHERE @p.stdistance(pos)<=200; Βήμα 17 ο. Ερώτημα περιοχής (range query): --Βρες ποιοι δρόμοι βρίσκονται εντός συγκεκριμένης περιοχής ενδιαφέροντος (πολύγωνο) DECLARE @p geography; SET @p = geography::stpolyfromtext('polyn((23.71765 38.00994, 23.75349 38.02695, 23.791130 37.99446, 23.7542468 37.96597, 23.71765 38.00994))', 4326); SELECT link_id, roadname_gr FROM network.links WHERE segment.stintersects(@p)=1; DECLARE @p geometry; SET @p = geometry::stpolyfromtext('polyn(( 475000 4202000, 480000 4202000, 480000 4206000, 475000 4206000, 475000 4202000 ))',0); SELECT link_id, roadname_gr FROM network.links WHERE segment.stintersects(@p)=1; Βήμα 18 ο. Ερώτημα εγκλεισμού (containment query): --Βρες ποια σημεία ενδιαφέροντος βρίσκονται εντός του δήμου Αθηναίων: --ΠΡΟΣΟΧΗ: Ο τελεστής STWithin δεν ισχύει για γεωγραφικές οντότητες!!! DECLARE @p geography; SELECT @p = sector FROM network.zones WHERE zone_name='αθηνα'; File: GeoDB2008_SQL_Server_Lab.pdf 10

Εισαγωγή στον SQL Server Spatial 10 SELECT location_id, location_name FROM network.locations WHERE pos.stintersects(@p)=1; DECLARE @p geometry; SELECT @p = sector FROM network.zones WHERE zone_name='αθηνα'; SELECT location_id, location_name FROM network.locations WHERE pos.stwithin(@p)=1; Βήμα 19 ο. Ερώτημα περίφραξης (enclosure query): --Βρες ποια ζώνη περικλείει το κτίριο ΦΙΞ. --ΠΡΟΣΟΧΗ: Ο τελεστής STContains δεν ισχύει για γεωγραφικές οντότητες!!! DECLARE @p geography; SELECT @p = pos FROM network.locations WHERE location_name='φιξ'; SELECT zone_name FROM network.zones WHERE sector.stintersects(@p)=1; DECLARE @p geometry; SELECT @p = pos FROM network.locations WHERE location_name='φιξ'; SELECT zone_name FROM network.zones WHERE sector.stcontains(@p)=1; Βήμα 20 ο. Ερωτήματα χωρικής σύνδεσης. Εκφράζονται με τον τελεστή τομής STIntersects (α) με εγκλεισμό (spatial containment join). Το STWithin δεν ισχύει για γεωγραφικές οντότητες!!! --Βρες τα σημεία ενδιαφέροντος και τις ζώνες όπου ανήκουν SELECT location_id, location_name, zone_id, zone_name FROM network.locations, network.zones WHERE pos.stintersects(sector)=1; SELECT location_id, location_name, zone_id, zone_name FROM network.locations, network.zones WHERE pos.stwithin(sector)=1; (β) με περίφραξη (spatial enclosure join). Το STContains δεν ισχύει για γεωγραφικές οντότητες!!! --Βρες τα σημεία ενδιαφέροντος και τις ζώνες που τα περικλείουν SELECT zone_id, zone_name, location_id, location_name FROM network.zones, network.locations WHERE sector.stintersects(pos)=1; SELECT zone_id, zone_name, location_id, location_name FROM network.zones, network.locations WHERE sector.stcontains(pos)=1; File: GeoDB2008_SQL_Server_Lab.pdf 11

Χωρικές Βάσεις Δεδομένων. (γ) με τομή (spatial intersection join) --Βρες σε ποιες ζώνες ανήκει κάθε δρόμος SELECT roadname_gr, zone_name FROM network.links, network.zones WHERE segment.stintersects(sector)=1; Βήμα 21 ο. Ερώτημα χωρικής (αυτο-)σύνδεσης: (α) με απόσταση (distance self-join) --Βρες όλα τα ζεύγη σημείων ενδιαφέροντος που απέχουν μεταξύ τους απόσταση μικρότερη από 2000 μέτρα SELECT L1.location_name AS loc1, L2.location_name AS loc2, (L1.pos).STDistance(L2.pos) AS distance FROM network.locations L1, network.locations L2 WHERE (L1.pos).STDistance(L2.pos)<=2000 AND L1.location_id < L2.location_id; (β) με γειτνίαση (adjacency self-join) --Βρες όλα τα ζεύγη ζωνών που γειτονεύουν η μια με την άλλη. ΠΡΟΣΟΧΗ: Δεν μπορεί να εκφραστεί για γεωγραφικά στοιχεία, διότι ο τελεστής STTouches δεν υποστηρίζεται! Ισχύει όμως κανονικά μόνο για γεωμετρικά στοιχεία: SELECT Z1.zone_name, Z2.zone_name FROM network.zones Z1, network.zones Z2 WHERE (Z1.sector).STTouches(Z2.sector)=1 AND Z1.zone_id < Z2.zone_id; Βήμα 22 ο. Γεωμετρικές συναρτήσεις. (α) Εμβαδόν πολυγωνικής περιοχής SELECT zone_name, CAST(sector.STArea() AS DECIMAL(10,2)) AS calc_area FROM network.zones ORDER BY calc_area DESC; (β) Περίμετρος πολυγωνικής περιοχής SELECT zone_name, CAST(sector.STLength() AS DECIMAL(10,2)) AS calc_perimeter FROM network.zones ORDER BY calc_perimeter DESC; (γ) Μήκος γραμμικών αξόνων SELECT roadname_gr, CAST(SUM(segment. STLength()) AS DECIMAL(10,2)) AS calc_length FROM network.links GROUP by roadname_gr ORDER BY calc_length DESC; (δ) Πλήθος κορυφών ανά γραμμικό άξονα SELECT link_id, roadname_gr, segment.stnumpoints() AS vertex_count FROM network.links; File: GeoDB2008_SQL_Server_Lab.pdf 12

Εισαγωγή στον SQL Server Spatial 10 (ε) Ελάχιστα περιβάλλοντα παραλληλόγραμμα για τις περιοχές ΠΡΟΣΟΧΗ: Η συνάρτηση STEnvelope() δεν υποστηρίζεται για γεωγραφικά στοιχεία!!! Ισχύει όμως κανονικά μόνο για γεωμετρικά στοιχεία: SELECT zone_name, sector.stenvelope()as MBR_zone FROM network.zones; (στ) Κυρτό περίβλημα καθενός από τους γραμμικούς άξονες: ΠΡΟΣΟΧΗ: Η συνάρτηση STConvexHull()δεν υποστηρίζεται για γεωγραφικά στοιχεία!!! Ισχύει όμως κανονικά μόνο για γεωμετρικά στοιχεία: SELECT CAST(segment.STConvexHull().ToString() AS VARCHAR(300)) AS HULLTEXT FROM network.links; Βήμα 23 ο. Μετατροπή χωρικών δεδομένων από δυαδική (WKB) σε άλλες μορφές: (α) σε αναγνώσιμη μορφή WKT: SELECT pos.stastext() AS WKTGeom FROM network.locations; (β) σε μορφή GML με χρήση της συνάρτησης AsGml(): SELECT pos.asgml() AS GMLGeom FROM network.locations; ΠΡΟΣΟΧΗ: Σε περιπτώσεις σύνθετων γεωμετριών με πολλές κορυφές, είναι πολύ πιθανόν το παραγόμενο κείμενο XML ή WKT να περικόπτεται, επειδή περιέχει υπεράριθμους χαρακτήρες πέραν του ορίου (συνήθως 8000) που έχει τεθεί για τον τύπο VARCHAR. Βήμα 24 ο. Διαγραφή όλων των πινάκων από την βάση δεδομένων: DROP TABLE network.locations; DROP TABLE network.links; DROP TABLE network.zones; DROP SCHEMA network; Παραπομπές Spatial Data in SQL-Server: http://msdn2.microsoft.com/el-gr/library/bb933876(en-us,sql.100).aspx Usage of sqlcmd utility: http://msdn2.microsoft.com/en-us/library/ms165702.aspx SQL Server Express 2008 CTP (trial version 180 ημερών) http://go.microsoft.com/fwlink/?linkid=110789&clcid=0x409 OGC Simple Features Specification for SQL http://portal.opengeospatial.org/files/?artifact_id=829 Απεικόνιση με SQL Server 2008 Spatial Tools (unsupported freely downloadable applications): (i) http://www.sharpgis.net/page/sql-server-2008-spatial-tools.aspx (ii) http://conceptdevelopment.net/database/geoquery/ Απεικόνιση γεωμετρικών οντοτήτων: http://www.codeplex.com/spatialviewer File: GeoDB2008_SQL_Server_Lab.pdf 13