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

Σχετικά έγγραφα
Εισαγωγή στο PostGIS 2.x

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

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

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

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

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

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

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

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

Geographic Information System(GIS)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ο. Τροποποίηση (editing) δεδοµένων ΣΓΠ

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

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

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 6, μέρος 2 ο : Δομές ευρετηρίων για αρχεία

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

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

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

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

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

databases linux - terminal (linux / windows terminal)

Εργαστηριακές ασκήσεις µαθήµατος Εισαγωγή στο PostGIS

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

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

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

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

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

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

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

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

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

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

Μορφές των χωρικών δεδομένων

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

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

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

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Αγρονόμων & Τοπογράφων Μηχανικών ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΓΓΕΕΩΩΠΠΛΛΗΗΡΡΟΟΦΦΟΟΡΡΙ ΙΙΚΚΗΗ ΜΑΘΗΜΑ: [GEO-6671] Χωρικές Βάσεις Δεδομένων [ Άνοιξη 2008 ] Διδάσκων: Τίμος Σελλής Εισαγωγή στην PostgreSQL Spatial 8.1 Κ. Πατρούμπας kpatro@dblab.ece.ntua.gr Σχεδιασμός απλουστευμένου σχήματος χωρικών στοιχείων, υλοποίηση σε περιβάλλον PostgreSQL 8.1, ορισμός ευρετηρίων και υποβολή τυπικών χωρικών ερωτημάτων. Γενικό Πλαίσιο: Ας θεωρήσουμε ένα σύνολο γεωγραφικών οντοτήτων που περιλαμβάνουν οδικό δίκτυο (Roads), διοικητική διαίρεση (Zones) και σημεία ενδιαφέροντος (Locations), λ.χ. για την περιοχή Αθηνών: Οδηγίες εκτέλεσης: Α. ΣΥΝΔΕΣΗ ΜΕ ΤΗΝ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ Βήμα 1 ο. Συνδεθείτε στην PostgreSQL 8.1 με το συνθηματικό σας και επιλέξτε βάση δεδομένων. Η σύνδεση επιτυγχάνεται με τον ίδιο ακριβώς τρόπο όπως και στο PostGIS, το οποίο άλλωστε εκμεταλλεύεται τον μηχανισμό διαχείρισης και επεξεργασίας δεδομένων της PostgreSQL. Σημειώνεται ότι όλες οι β.δ. που δημιουργούνται, υποστηρίζουν εγγενώς όλες τις χωρικές λειτουργίες που έχουν υλοποιηθεί στην PostgreSQL (αλλά όχι αυτές του PostGIS). Βήμα 2 ο. (ΠΡΟΑΙΡΕΤΙΚΟ) Δημιουργία νέας βάσης δεδομένων με ονομασία geodata και με κωδικοσελίδα ISO_8859_7 για υποστήριξη ελληνικών. CREATE DATABASE geodata WITH OWNER = postgres ENCODING = 'ISO_8859_7' TABLESPACE = pg_default; Παρατήρηση: ΑΥΤΟ ΤΟ ΒΗΜΑ ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ ΝΑ ΤΟ ΕΚΤΕΛΕΣΕΤΕ, ΑΝ Η ΒΑΣΗ ΟΠΟΥ ΘΑ ΕΡΓΑΣΤΕΙΤΕ ΕΧΕΙ ΗΔΗ ΔΗΜΙΟΥΡΓΗΘΕΙ. Βήμα 3 ο. Δημιουργία νέου σχήματος με την ονομασία network : CREATE SCHEMA network; File: GeoDB2008_PostgreSQL_Spatial_Lab.pdf 1

Χωρικές Βάσεις Δεδομένων. Βήμα 4 ο. Ορισμός του πίνακα σημειακών θέσεων: CREATE TABLE network.locations( pos POINT, location_id INTEGER PRIMARY KEY, location_name VARCHAR(30) ); Βήμα 5 ο. Ορισμός του πίνακα γραμμικών αξόνων: CREATE TABLE network.links( segment PATH, link_id INTEGER PRIMARY KEY, roadname_gr VARCHAR(50), roadname_lt VARCHAR(50), weight FLOAT ); Βήμα 6 ο. Δημιουργία δείκτη R-tree για τους γραμμικούς άξονες, αλλά αφού προηγουμένως "μεταλλαχθούν" σε κλειστά πολύγωνα (με χρήση της συνάρτησης pclose). ΠΡΟΣΟΧΗ: Στην PostgreSQL μπορούν να δημιουργηθούν R-trees ΜΟΝΟ για πολύγωνα!!! CREATE INDEX links_idx ON network.links USING RTREE (polygon(pclose(segment))); Βήμα 7 ο. Δημιουργία πίνακα πολυγωνικών περιοχών: CREATE TABLE network.zones( sector POLYGON, zone_id INTEGER PRIMARY KEY, zone_name VARCHAR(30) ); Βήμα 8 ο. Κατασκευή δεικτών για τα πολύγωνα με δύο εναλλακτικούς τρόπους: (α) είτε με R-δένδρα CREATE INDEX zones_idx ON network.zones USING RTREE (sector); (β) είτε με γενικευμένα δένδρα αναζήτησης (GiST) CREATE INDEX zones_idx ON network.zones USING GIST (sector); Β. ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ με εντολές INSERT [1 ος τρόπος] Tα γεωμετρικά στοιχεία εισάγονται με ειδική μορφή, αναγνωρίσιμη μόνο απ την PostgreSQL. Παρατηρήστε ότι οι συντεταγμένες που ορίζονται είναι καρτεσιανές (δεν υποστηρίζονται SRID). Βήμα 9 ο. Εισαγωγή στοιχείων στον πίνακα των σημείων. INSERT INTO network.locations VALUES ('(476654,4202904)'::point, 301, 'ΣΥΝΤΑΓΜΑ'); INSERT INTO network.locations VALUES ('(476021,4203771)'::point,302,'ΟΜΟΝΟΙΑ'); INSERT INTO network.locations VALUES ('(478878,4204071)'::point, 303, 'ΑΜΠΕΛΟΚΗΠΟΙ'); INSERT INTO network.locations VALUES ('(475687,4201381)'::point,304,'ΦΙΞ'); INSERT INTO network.locations VALUES ('(470229,4199447)'::point, 305, 'ΣΤΑΔΙΟ ΚΑΡΑΪΣΚΑΚΗ'); INSERT INTO network.locations VALUES ('(481094,4208546)'::point, 306,'ΟΛΥΜΠΙΑΚΟ ΣΤΑΔΙΟ'); INSERT INTO network.locations VALUES ('(477963,4203061)'::point,307, 'ΕΥΑΓΓΕΛΙΣΜΟΣ'); File: GeoDB2008_PostgreSQL_Spatial_Lab.pdf 2

Εισαγωγή στην PostgreSQL Spatial 8.1 Βήμα 10 ο. Εισαγωγή στοιχείων στον πίνακα των γραμμικών αξόνων. INSERT INTO network.links VALUES ('[(476259,4204638),(478895,4204061)]'::path, 101,'ΑΛΕΞΑΝΔΡΑΣ ΛΕΩΦ.','ALEXANDRAS',18.25); INSERT INTO network.links VALUES ('[(476638,4202908),(477354,4202809),(477997, 4203023),(478895,4204061)]'::path,102,'ΒΑΣ. ΣΟΦΙΑΣ ΛΕΩΦ.','VAS. SOFIAS',24.69); INSERT INTO network.links VALUES ('[(476638,4202908),(476152,4203748),(475995, 4203798)]'::path, 103,'ΠΑΝΕΠΙΣΤΗΜΙΟΥ','PANEPISTIMIOU',12.87); INSERT INTO network.links VALUES ('[(475995,4203798),(476259,4204638)]'::path, 104, 'ΠΑΤΗΣΙΩΝ','PATISSION',18.3); INSERT INTO network.links VALUES ('[(476638,4202908),(476598,4202603), (476269,4202197),(476250,4202037)]'::path,105,'ΑΜΑΛΙΑΣ ΛΕΩΦ.','AMALIAS',26.86); INSERT INTO network.links VALUES ('[(476250,4202037),(472967,4198790)]'::path, 106,'ΣΥΓΓΡΟΥ ΛΕΩΦ.','SYNGROU',62.34); INSERT INTO network.links VALUES ('[(478895,4204061),(479267,4204500),(479641, 4205387), (481368,4208164)]'::path,107,'ΚΗΦΙΣΙΑΣ ΛΕΩΦ.','KIFISSIAS',29.51); INSERT INTO network.links VALUES ('[(476259,4204638),(476560,4206110),(476677, 4208157),(476330,4208395),(476072,4208960)]'::path,108,'ΠΑΤΗΣΙΩΝ', 'PATISSION', 13.67); INSERT INTO network.links VALUES ('[(472967,4198790),(472674,4198735),(471857, 4199295),(470188,4199388),(469418,4199867)]'::path,109,'ΠΟΣΕΙΔΩΝΟΣ ΛΕΩΦ.', 'POSEIDONOS',56.8); INSERT INTO network.links VALUES ('[(476250,4202037),(476437,4201916),(476546, 4200848),(477056,4199017),(477407,4198197)]'::path,110,'ΒΟΥΛΙΑΓΜΕΝΗΣ ΛΕΩΦ.','VOULIAGMENIS',51.72); INSERT INTO network.links VALUES ('[(475995,4203798),(475346,4203934), (474764,4203806)]'::path,111,'ΑΓ. ΚΩΝΣΤΑΝΤΙΝΟΥ','AG. KONSTANTINOU',14.5); INSERT INTO network.links VALUES ('[(474764,4203806),(474314,4204006),(473014, 4205166)]'::path,112,'ΙΕΡΑ ΟΔΟΣ','IERA ODOS',34.85); INSERT INTO network.links VALUES ('[(475995,4203798),(474926,4203181),(473432, 4202084),(472569,4201162),(471193,4200596)]'::path,113,'ΠΕΙΡΑΙΩΣ','PIREOS', 29.92); INSERT INTO network.links VALUES ('[(471193,4200596),(469418,4199867)]'::path, 114,'ΠΕΙΡΑΙΩΣ','PIREOS',25.61); INSERT INTO network.links VALUES ('[(471193,4200596),(471592,4201833),(471313, 4202478),(472323,4204393),(473014,4205166)]'::path,115,'ΚΗΦΙΣΟΥ ΛΕΩΦ.', 'KIFISSOU', 45.82); INSERT INTO network.links VALUES ('[(473014,4205166),(473991,4205758),(475051, 4206700),(475170,4207275),(476072,4208960)]'::path,116,'ΚΗΦΙΣΟΥ ΛΕΩΦ.', 'KIFISSOU',39.63); INSERT INTO network.links VALUES ('[(478895,4204061),(479161,4203999),(479518, 4204319),(480144,4204811),(481909,4206175),(484065,4207065)]'::path,117,'ΜΕΣΟΓΕ ΙΩΝ','MESOGEION',41.76); Βήμα 11 ο. Εισαγωγή στοιχείων στον πίνακα των πολυγωνικών περιοχών. INSERT INTO network.zones VALUES ('((473569,4202148),(474778,4201575),(474825, 4201525),(475240,4201082),(474794,4200604),(475644,4200030),(478264,4201782),(4 78582,4203294),(481256,4203453),(481511,4204933),(479426,4205618),(477229,42066 52),(478216,4208546),(476688,4208753),(475176,4207305),(475065,4206668),(473091,4205172),(472423,4203103),(473569,4202148))'::polygon,501,'ΑΘΗΝΑ'); File: GeoDB2008_PostgreSQL_Spatial_Lab.pdf 3

Χωρικές Βάσεις Δεδομένων. INSERT INTO network.zones VALUES ('((471076,4199236),(471214,4200607),(469779, 4201255),(467282,4201563),(467133,4200192),(465815,4199650),(466591,4198927),(4 67611,4199129),(467930,4199841),(468377,4199863),(468302,4199225),(468005,41986 83),(467314,4198874),(466602,4198534),(467165,4197780),(467867,4197376),(468876,4197843),(468759,4198534),(469004,4198821),(469131,4198279),(469790,4198417),( 470279,4198927),(470353,4199310),(471076,4199236))'::polygon,502,'ΠΕΙΡΑΙΑΣ'); INSERT INTO network.zones VALUES ('((481370,4208169),(481865,4209231),(484259, 4209302),(485009,4210321),(484882,4212389),(482517,4213012),(481696,4211100),(4 81002,4211171),(480166,4210180),(480662,4208820),(481370,4208169))'::polygon,50 3,'ΜΑΡΟΥΣΙ'); INSERT INTO network.zones VALUES('((472852,4205012),(473091,4205172),(475065, 4206668),(475176,4207305),(474036,4207759),(472534,4208716),(470864,4209475),(4 70424,4208412),(471228,4207198),(471000,4206393),(472852,4205012))'::polygon,50 4,'ΠΕΡΙΣΤΕΡΙ'); INSERT INTO network.zones VALUES ('((473437,4199247),(474141,4198830),(473993, 4198470),(474818,4197856),(475453,4198957),(476003,4199327),(475644,4200030),(4 74794,4200604),(473437,4199247))'::polygon,505,'ΝΕΑ ΣΜΥΡΝΗ'); INSERT INTO network.zones VALUES ('((472678,4198742),(472971,4198796),(473437, 4199247),(474794,4200604),(475240,4201082),(474825,4201525),(474491,4201444),(4 74020,4201570),(473001,4201386),(473043,4200819),(472363,4200196),(471939,41992 62),(472462,4198894),(472533,4198844),(472678,4198742))'::polygon,506,'ΚΑΛΛΙΘΕΑ '); Γ. ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ με μαζική εισαγωγή από ASCII αρχείο [2 ος τρόπος] Στην περίπτωση αυτή, υποτίθεται ότι τα στοιχεία υπάρχουν σε κατάλληλη ASCII μορφή. Λ.χ. το υποτιθέμενο αρχείο post_links.txt στον κατάλογο c:/temp έχει τα εξής περιεχόμενα: [(483636.848474107,4217084.39725221),(483630.878693778,4217100.81414811)];118;Α ΚΑΔΗΜΙΑΣ;AKADIMIAS;28.51 [(483044.0625,4213701.5),(483046.75,4213717)];119;ΔΡΑΓΟΥΜΗ ΣΤΕΦ.;DRAGOUMI STEF.;22.67 [(482951.09375,4213353),(482942,4213370.5)];120;ΠΑΤΡΙΑΡΧΟΥ ΒΕΝΕΔΙΚΤΟΥ;PATRIARCHOU VENEDIKTOU;35.45 [(482674.21875,4211729.5),(482681.46875,4211718)];121;ΛΕΚΚΑ;LEKKA;41.28 [(477607.28125,4211644.5),(477603.875,4211648),(477591.75,4211653.5),(477585,42 11655.5)];122;ΑΝΑΓΕΝΝΗΣΕΩΣ;ANAGENNISEOS;31.3 Παρατηρήστε ότι στον προσδιορισμό της γεωμετρίας δεν απαιτείται πλέον να υπάρχει χαρακτηρισμός του τύπου της (λ.χ. point, path, polygon), όπως συνέβαινε στις εντολές INSERT. Βήμα 9 ο. Προσδιορισμός της κωδικοσελίδας για υποστήριξη ελληνικών (εφόσον τα δεδομένα έχουν ελληνικούς χαρακτήρες). SET CLIENT_ENCODING TO 'ISO_8859_7'; SHOW client_encoding; Βήμα 10 ο. Αντιγραφή των δεδομένων από το ASCII αρχείο στον πίνακα των γραμμικών αξόνων: COPY network.links FROM 'c:/temp/post_links.txt' WITH DELIMITER ';' ; ΠΡΟΣΟΧΗ: θα πρέπει να υπάρχει αντιστοιχία στα πεδία μεταξύ του αρχείου και του πίνακα! Βήμα 11 ο. Επαναφορά της ισχύουσας κωδικοσελίδας και έλεγχος αν τα στοιχεία έχουν εισαχθεί: RESET CLIENT_ENCODING; SELECT * FROM network.links; File: GeoDB2008_PostgreSQL_Spatial_Lab.pdf 4

Εισαγωγή στην PostgreSQL Spatial 8.1 Δ. ΔΙΑΤΥΠΩΣΗ ΕΡΩΤΗΜΑΤΩΝ ΜΕ ΧΩΡΙΚΟΥΣ ΤΕΛΕΣΤΕΣ Βήμα 12 ο. Ερώτημα σημείου (point query): --Βρες τις ζώνες που περιλαμβάνουν μια συγκεκριμένη θέση ενδιαφέροντος SELECT zone_id, zone_name FROM network.zones WHERE ((Point'(482000,4210000)') @ sector)=true; Βήμα 13 ο. Ερώτημα απόστασης από σημείο (distance query): --Βρες τα σημεία ενδιαφέροντος βρίσκονται εντός απόστασης 200 μέτρων από συγκεκριμένη θέση SELECT location_id, (pos<->point '(476500,4202800)') AS distance WHERE (pos <-> Point '(476500,4202800)' )<=200; Βήμα 14 ο. Ερώτημα περιοχής (range query): --Βρες ποια σημεία βρίσκονται εντός συγκεκριμένης περιοχής ενδιαφέροντος: (α) περιοχή ως ορθογώνιο SELECT location_id, location_name WHERE (pos @ box'(475000,4202000,480000,4206000)')=true; (β) περιοχή ως πολύγωνο SELECT location_id, location_name WHERE (pos @ polygon'((475000,4202000),(480000,4202000),(480000,4206000), (475000,4206000),(475000,4202000))')=TRUE; Βήμα 15 ο. Ερώτημα εγκλεισμού (containment query): --Βρες ποια σημεία ενδιαφέροντος βρίσκονται εντός του δήμου Αθηναίων: SELECT location_id, location_name WHERE (pos @ (SELECT sector FROM network.zones WHERE zone_name='αθηνα')); Βήμα 16 ο. Ερώτημα περίφραξης (enclosure query): --Βρες ποια ζώνη περικλείει το κτίριο ΦΙΞ SELECT zone_name FROM network.zones WHERE (sector ~ (SELECT pos WHERE location_name='φιξ')); Βήμα 17 ο. Ερωτήματα χωρικής σύνδεσης (α) με εγκλεισμό (spatial containment join) --Βρες τα σημεία ενδιαφέροντος και τις ζώνες όπου ανήκουν SELECT location_id, location_name, zone_id, zone_name, network.zones WHERE (pos @ sector); (β) με περίφραξη (spatial enclosure join) --Βρες τα σημεία ενδιαφέροντος και τις ζώνες που τα περικλείουν File: GeoDB2008_PostgreSQL_Spatial_Lab.pdf 5

Χωρικές Βάσεις Δεδομένων. SELECT location_id, location_name, zone_id, zone_name, network.zones WHERE (sector ~ pos); (γ) με επικάλυψη (overlap join, αλλά ΠΡΟΣΕΓΓΙΣΤΙΚΑ ΜΕ bounding boxes!) --Βρες σε ποιες ζώνες ανήκει κάθε δρόμος SELECT roadname_gr, zone_name FROM network.links, network.zones WHERE box(polygon(pclose(segment))) && box(sector); Βήμα 18 ο. Ερώτημα χωρικής (αυτο-)σύνδεσης με βάση την απόσταση (distance self-join): --Βρες όλα τα ζεύγη σημείων ενδιαφέροντος που απέχουν μεταξύ τους απόσταση μικρότερη από 2000 μέτρα SELECT L1.location_name AS loc1, L2.location_name AS loc2, (L1.pos <-> L2.pos) AS distance L1, network.locations L2 WHERE (L1.pos <-> L2.pos)<=2000 AND L1.location_id < L2.location_id; Βήμα 19 ο. Γεωμετρικές συναρτήσεις. (α) Εμβαδόν πολυγωνικής περιοχής --ΠΡΟΣΟΧΗ: το πολύγωνο πρέπει να μετατραπεί πρώτα σε κλειστό μονοπάτι! SELECT zone_name, area(path(sector)) AS calc_area FROM network.zones ORDER BY calc_area DESC; (β) Μήκος γραμμικών αξόνων SELECT roadname_gr, SUM(length(segment)) AS calc_length FROM network.links GROUP by roadname_gr ORDER BY calc_length DESC; (γ) Πλήθος κορυφών ανά πολύγωνο SELECT zone_id, zone_name, npoints(sector) AS vertex_count FROM network.zones; Βήμα 20 ο. Διαγραφή όλων των πινάκων και των δεικτών από την βάση δεδομένων: DROP TABLE network.locations CASCADE; DROP INDEX links_idx; DROP TABLE network.links CASCADE; DROP INDEX zones_idx; DROP TABLE network.zones CASCADE; DROP SCHEMA network; Παραπομπές PostgreSQL documentation & software: http://www.postgresql.org/ File: GeoDB2008_PostgreSQL_Spatial_Lab.pdf 6