Module Géomatique et Systèmes d’Informations … · Modèle du SIG-logiciel ArcView (ESRI) Se...
Transcript of Module Géomatique et Systèmes d’Informations … · Modèle du SIG-logiciel ArcView (ESRI) Se...
Module Géomatique et Systèmes d’Informations Géographiques
Pierre Hallot & Roland BillenUnité de Géomatique ULg
Cours 1
Cours 1
Cours 2
Cours 2
TP1TP1
Cours 2
Cours 4
Cours 3
Cours 4
TP2
Cours 3
Modèle de données hybride ou dual◦ Très similaire aux solutions proposées par les logiciels de
cartographie Gestion séparée des attributs et des géométries L’identifiant géographique devient la clé entre géométries et attributs
La géométrie est toujours gérée par un système de gestion de fichiers ◦ La principale différence vient de la gestion des attributs Les attributs sont gérés par un SGBD (desktop : Access, Dbase…) Une table principale (relation) où la clé primaire = ID géographique Possibilité de joindre d’autres tables grâce à l’instruction SQL de jointure
Les transactions et les requêtes sur les attributs sont réalisées à travers une interface SQL : Si le résultat de la clause SQL contient
un ID géographique : Les géométries correspondantes
sont affichées sous la forme d’une carte
Géom Attrib
ID Géo = Clé Primaire
◦ Les géométries peuvent être en format vecteur ou maillé SIG vectoriel Les géométries sont gérées par un système de gestion de fichiers (SGF) Soit format DAO et/ou ASCII Soit, plus généralement, un format binaire propriétaire pour améliorer les
performances
Position : coordonnées géodésiques ou rectangulaires Relations logiques : Composition admise Pas de relations géométriques
SIG maillé L’information spatiale est enregistrée dans
des fichiers images Les requêtes spatiales sont réalisées
par traitement d’images
Gestion des attributs par un SGBD Les requêtes attributaires sont réalisées par des instructions SQL
Attrib
ID Géo =Pixel # = Clé primaire
Image
Modèle du SIG-logiciel ArcView (ESRI)◦ Se présente comme un SIG-logiciel léger (desktop GIS), modulaire et
hybride Les nombreux modules sont dédiés à des domaines d’application ou à des
types de données géographiques particuliers : Street Analyst, Spatial Analyst, etc.
◦ Le format natif des données géographiques dans ArcView est le Shapefile Il est constitué de 3 fichiers de même préfixe (choisi par l’utilisateur) mais de
suffixes différents : 2 pour la géométrie et 1 pour les attributs Main file (suffixe shp) : Collection de coordonnées en 2 (x, y), 3 (x, y, z/m) ou 4-D (x, y, z, m) Présentation séquentielle des entités géographiques Un type seulement de géométrie / fichier (mais nombreux types disponibles)
Index file (suffixe shx) : adresses du début de chaque entité géographique dans le fichier principal (pointeurs pour accès direct)
dBase file (suffixe dbf) : table principale des valeurs d’attributs Un tuple = une entité géographique N° séquentiel = ID géographique Transactions et requêtes : interfaces SQL interactives
En-tête de fichier (100 octets)
En-tête (4 octets) Contenu (longueur variable)
En-tête (4 octets) Contenu (longueur variable)
En-tête (4 octets) Contenu (longueur variable)
En-tête (4 octets) Contenu (longueur variable)
En-tête de fichier (100 octets)
Adresse (4 octets)
Adresse (4 octets)
Adresse (4 octets)
Adresse (4 octets) Main file (shp)
Index file (shx)
Liste de coordonnées
Formats des fichiers d’entités spatiales d’un Shapefile (ArcView)
Données relativesà une entité spatiale
◦ L’interface-utilisateur est constituée d’une vue dynamique (« View ») figurant sous forme cartographique les données spatiales et attributaires rassemblées par projets (« Projects ») Une vue définit les données géographiques (« Themes ») qui sont
utilisées et la manière de les visualiser (« Layouts »), mais elle ne contient pas les données elles-mêmes (vue externe au sens des bases de données)
Un thème correspond à une source de données spatiales : ArcView Shapefile, Arc/Info Coverage, image, fichier DXF…
Interface de requête
Vue active
Gestion.de projets
Table principale ( dbf )du Shapefile courrant
Modèle géo-relationnel◦ Limites du modèle hybride standard L’enregistrement de la géométrie est limité aux positions
(coordonnées) et aux relations de composition Réduction sensible des possibilités de requêtes spatiales
◦ La prise en compte de la topologie Les requêtes spatiales complexes doivent pouvoir exploiter les
relations topologiques Création et enregistrement de la topologie avec les autres
caractéristiques géométriques◦ Maintien d’une architecture hybride La géométrie (y compris topologie) est stockée dans un format
binaire propriétaire et gérée par un SGF Les attributs et les principales relations topologiques sont stockées
dans des tables accessibles à l’utilisateur, gérées par un SGBD
Modèle du SIG logiciel Arc Info (jusqu’à la version 7)◦ SIG d’entreprise géo-relationnel utilisant les relations topologiques,
construit selon une architecture hybride Arc : SGF responsable de la gestion de la géométrie Info : SGBD responsable des tables conservant les attributs et les
principales relations topologiques◦ Construction des géométries Primitives topologiques : arcs, points, nœuds isolés et polygones Créées et identifiées par le système
Entités géographiques : créées et identifiées par l’utilisateur, formées sur base des primitives topologiques : points, polylignes, polygones, réseaux… Les attributs sont attachés aux entités géographiques
« Coverages » : partie de l’espace définie par l’utilisateur rassemblant toutes les primitives géométriques relatives à un thème
Toutes les informations relatives aux géométries sont stockées sous forme binaire (format propriétaire) et gérées par le logiciel (partie « Arc »)
◦ Gestion des attributs À chaque type d’entité géographique est associé une table créée
par le logiciel, reprenant : L’identifiant de l’utilisateur (+ un identifiant interne) Des attributs géométriques créés automatiquement par le système
(longueurs, superficies…) Des attributs topologiques lorsque l’entité est du type « arc »
Ces attributs sont gérés par le SGBD « Info » et accessibles à l’utilisateur
Table associée aux arcs du coverage VEGdisponible dans « Info » Tous les attributs mentionnés sont générés par le système
Coverage : VEG
WORKSPACE
INFO
VEG
SOLS
HYDRO
Arc Arc
SOLS_Polygone
Hydro_Arc
VEG_Polygone
Polygone
Arc
Polygone
1 Coveragerassemblant tousles fichiersrelatifs à un thèmeen format binaire etpropriétaire
Espace de travail : rassemblant tous les coverages relatifs à une application etle répertoire INFO associé
Répertoire INFOreprenant toutes les
tables d’attributsde chaque coverage
de l’application
Les tables sont des « vues »
des fichiers binaires des coverages
Uniquement accessible au logiciel
Accessible à l’utilisateur à travers le SGBD
Mode intégré : spatialisation de tables relationnelles◦ Souhait des entreprises d’un système unique et transparent Les entreprises « n’aiment pas » le modèle hybride :
SGF = format propriétaire = boîte noire = dépendance vis-à-vis d’un fournisseur ; SGF : ne garantit pas toutes les fonctions attendues d’un SI. Un SGBD est souvent déjà présent dans les grandes entreprises pour gérer les autres
SI.
Rassembler toute l’information dans des tables gérées par un SGBD classique : Table spatiale = Identifiant + attributs + géométrie (+ topologie : récent)
◦ Conditions Dépassement du simple modèle relationnel :
Champ binaire (« BLOB ») pour stocker la géométrie. Passage au modèle objet-relationnel : nouvelles structures de données (types
abstraits), limitation des jointures, etc. Extension des capacités du langage de requête : SQL 3, SQL MM.
Normalisation des entités géométriques : Propositions de standards de l’OGC (Open Geospatial Consortium) et de l’ISO.
◦ Rôle du logiciel SIG dans une architecture intégrée Insertion dans une architecture à (2 ou) 3 strates :
SGBD + SIG + serveur de réseau. Définition du catalogue, du MCD et des métadonnées :
En mode objet : proche des préoccupations de l’utilisateur. Reprenant : les classes d’objets, leurs relations, les traitements, la documentation sur
ces éléments (métadonnées). Chargement de données :
Récupération de l’existant, contrôle de validité, etc. Applications géographiques spécialisées :
Analyse spatiale, cartographie, etc. Serveur de données spatiales (SDS)
et interface du SGBD : Spatialisation de tables si nécessaire.
◦ Rôle du SGBD Stockage, gestion de toutes les données. Extension spatiale pour la spatialisation de tables. Extension du langage SQL pour les requêtes
spatiales simples (90% des applications…).
Geo-SGBD
SIG / SDS
Internet Server
Réseau
Applicationclient
◦ Modèle du SGBD avec cartouche spatial PostGIS PostGIS est une implémentation du schéma spatial standardisé de l’OGC
(OGC Simple Features for SQL Specification) pour l’enregistrement de données géographiques au sein du SGBD relationnel « PostgreSQL ». Projet Open Source développé par Refractions Reseach (Canada).
Il est développé comme un jeu de fonctions et de types de données permettant de spatialiser les tables du SGBD relationnel PostgreSQL. Les types de géométries reconnus correspondent aux Simple Features de
l’OGC, plus les collections hétérogènes, étendus aux dimensions 3D et 4D : Point, LineString, Polygon MultiPoint, MultiString, MultiPolygon GeometryCollection Geometry (collection hétérogène)
Les fonctions spatiales comportent des fonctions topologiques, géométriques et d’interrogation des caractéristiques spatiales des entités, ainsi que des fonctions d’indexation spatiale. La définition et les changements de référentiels sont également standardisés.
Exemples de multi-polygones
Exemples de polygones à 1 et 2 rings
Linestrings uniques (ht) et multiples (bas)
SRID Auth_Name Auth_SRID SRText Proj4Text
Integer Varchar(256) Integer Varchar(2048) Varchar(2048)
Définitiondu SR enformat WKT
Possibilité dechangementde coordonnées
Organismeayant définile SR
N° du SRdonné parl’organisme
F_Table_Catalog
F_Table_Schema
F_Table_Name
F_Geometry_Column
Coord_Dimension SRID Type
Varchar(256) Varchar(256) Varchar(256) Varchar(256) Integer Integer Varchar(30)
Non utilisépar PostGIS
Par défautdans PostGIS
Nom de la tablespatialisée
Nom de lacolonne spatiale
Dimensions:2, 3 ou 4
N° duSRID
Type degéométrie
Table_Ref_Sys
Autres attributs non spatiaux Nom de la colonnespatiale
… … Coordonnées desgéométries
Table_Geometry_Column
Geometry_Column
Nom de la table spatialisée
Pour plus de détails, voir :Manuel PostGIS 1.4.0http://www.postgis.fr/node/156
SQL :◦ SQL est un langage standardisé permettant d’accéder aux
données d’une base de donnée ET de manipuler le schéma de celle-ci.
◦ Les fonctions SQL servent à interroger et à mettre à jour l’information contenue dans un SGBD.
◦ SQL fonctionne avec beaucoup de programmes comme Access, DB2, Informix, SQL Server, Oracle, PostGres,…
Malheureusement : ◦ Il existe beaucoup de versions différente de SQL… Pour respecter
la norme, les mot clés majeurs doivent être identiques◦ Chaque base de donnée à ses fonctions propres pour SQL en plus
du standard. (Comme les fonctions spatiales de PostGis).
Une base de donnée contient le plus souvent une ou plusieurs tables (relation). Chaque table est identifiée par son nom (“Clients”, “Commandes”,…).
Les tables contiennent des tuples (rows) qui représentent les données.
Ci-dessous un exemple d’une « Personnes » :
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
Avec SQL, il est possible d’interroger la BD et d’obtenir un ensemble de résultat.
Une requête se présente sous la forme suivante : ◦ SELECET LastName FROM Personnes
Le résultat de cette requête est :
LastName
Hansen
Svendson
Pettersen
SQL (Structured Query Language) est une syntaxe pour exécuter des requêtes. Mais le SQL inclut également un syntaxe qui permet la mise à jour, l’insertion et la suppression de tuples (row).
Ces commandes de requêtes et de mise à jour forment ce qui est appelé le langage de manipulation de données (Data Manipulation Language DML) :
◦ SELECT – extrait des données d’une table de BD◦ UPDATE – met à jour des données d’une table de BD◦ DELETE – supprimer des données d’une table de BD◦ INSERT INTO – insère de nouvelle données d’une table de BD
Le langage de définition de donnée (Data definition LanguageDDL) est une autre partie du langage SQL. Celle-ci permet la création et la supression des tables de la base de donnée. Il permet également la définition d’indexes (key), de spécifier des liens entre tables, et d’imposer des contraintes sur des tables de la base de donnée.
Les fonctions les plus importantes du DDL en SQL sont:
◦ CREATE TABLE – crée une nouvelle table dans la BD◦ ALTER TABLE – alters (modifie) une table dans la BD◦ DROP TABLE – supprime une table dans la BD◦ CREATE INDEX – crée un indexe sur une table (search key) ◦ DROP INDEX - supprime un indexe
La clause SELECT est utilisée pour sélectionner des données hors d’une table. Le résultat est proposé sous forme de tableau appelé « result-set ».
Sélectionner uniquement les noms et les prénoms des personnes
Syntaxe◦ SELECT column_name(s)◦ FROM table_name
SELECT LastName, FirstName FROM Persons
Persons
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
RESULT
LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Pettersen Kari Storgt 20 Stavanger
Pour sélectionner toutes les colonnes d’une relation, on peut utiliser l’opérateur *.
SELECT * FROM Persons
Le point virgue est le moyen standard de séparer les requeêtes SQL dans un SGBD.Ceci permet d’envoyer plusieurs requêtes successives au serveur de BD.
Dans certains cas, il n’est pas nécessaire d’utiliser le point virgule notamment lorsque les requêtes sont effectuées à partir d’un logiciel type MS Access ou pgAdmin.
Le mot clé DISTINCT est utilisé pour retourner uniquement les valeurs distinctes d’une requête.
La clause SELECT retourne toute les tuples. Si l’ont veut uniquement les tuples distincts, il faut ajouter le mot clé DISTINCT
◦ Syntaxe
◦ SELECT DISTINCT column_name(s)
◦ FROM table_name
SELECT Company FROM Orders
Orders
Company OrderNumber
Sega 3412
W3Schools 2312
Trio 4678
W3Schools 6798
Company
Sega
W3Schools
Trio
W3Schools
Company
Sega
W3Schools
Trio
SELECT DISTINCT Company FROM Orders
La clause WHERE est utilisée pour spécifier un critère de sélection.
Pour conditionner la sélection de certaines données, une clause WHERE est ajoutée à la clause SELECT.
◦ Syntaxe◦ SELECT column FROM table◦ WHERE column operator value
Operator Description
= Equal
<> ou != Not equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
BETWEEN Between an inclusive range
LIKE Search for a pattern
La clause WHERE peut être utilisée avec les opérateurs suivants :
Pour sélectionner uniquement les personnes qui viventdans la ville de “Sandnes” :◦ SELECT * FROM Persons◦ WHERE City='Sandnes'
LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Pettersen Kari Storgt 20 Stavanger 1960
LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Notez que nous utilisons des guillemets simples autours les valeurs conditionnelles.
SQL utilise des guillemets simples autours des valeurs textuelles (bien que les doubles sont souvent acceptés). Les valeurs numériques ne doivent pas être insérée entre guillemets.
Pour des valeurs textuelles : ◦ Correct: SELECT * FROM Persons WHERE FirstName='Tove'
◦ Incorrect: SELECT * FROM Persons WHERE FirstName=Tove
La condition LIKE est utilisée pour spécifier un motif à rechercher dans une colonne.
◦ Syntaxe◦ SELECT column FROM table◦ WHERE column LIKE pattern
Un "%" peut être utilisé pour définir des données manquantes dans le motif à rechercher avant ou après le pattern.
La requête suivante va retourner les noms de personnes commençant par un ‘O’:◦ SELECT * FROM Persons◦ WHERE FirstName LIKE 'O%'
La requête suivante va retourner les prénoms se terminant par la lettre 'a':◦ SELECT * FROM Persons◦ WHERE FirstName LIKE '%a'
Idem pour les prénoms contenant un ‘la’ :
◦ SELECT * FROM Persons
◦ WHERE FirstName LIKE '%la%'
La clause INSERT INTO est utilisée pour insérer des données dans une relation : ◦ Syntaxe◦ INSERT INTO table_name◦ VALUES (value1, value2,....)
Il est possible de spécifier les colonnes dans lesquelles on souhaite insérer des données :◦ INSERT INTO table_name (column1, column2,...)◦ VALUES (value1, value2,....)
Requête SQL :◦ INSERT INTO Persons◦ VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')
LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes
Requête SQL:◦ INSERT INTO Persons (LastName, Address)◦ VALUES ('Rasmussen', 'Storgt 67')
LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes
LastName FirstName Address City
Pettersen Kari Storgt 20 Stavanger
Hetland Camilla Hagabakka 24 Sandnes
Rasmussen Storgt 67
La clause UPDATE est utilisée pour mettre à jour des données dans une table.◦ Syntaxe◦ UPDATE table_name◦ SET column_name = new_value◦ WHERE column_name = some_value
Exemple d’ajout d’un prénom à la personne appelée "Rasmussen":
◦ UPDATE Person SET FirstName = 'Nina'◦ WHERE LastName = 'Rasmussen
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Storgt 67
Nous souhaitons mettre à jour l’adresse ET la ville pour une personne spécifique (Rasmussen) :
◦ UPDATE Person
◦ SET Address = 'Stien 12', City = 'Stavanger'
◦ WHERE LastName = 'Rasmussen'
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67
La clause DELETE est utilisée pour supprimer un tuple.◦ Syntaxe◦ DELETE FROM table_name◦ WHERE column_name = some_value
"Nina Rasmussen" va être supprimée:
◦ DELETE FROM Person WHERE LastName = 'Rasmussen'
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Il est possible de supprimer tous les enregistrements d’une relation en une fois sans pour autant supprimer la structure de la table (Vider la table). Cela signifie que la structure, les attributs, les contraintes et les indexes resteront inchangés.◦ DELETE FROM table_name◦ Or◦ DELETE * FROM table_name
Jointure interne
SELECT ... FROM <table gauche> [INNER]JOIN <table droite> ON <condition de jointure>
Jointure externe
SELECT ... FROM <table gauche> LEFT | RIGHT | FULL OUTER JOIN <table droite> ON condition de jointure
id_client nom adresse carburant
1 Toto Rue machin GAZOIL
2 Tutu Rue bidule GAZOIL
3 Tata Rue truc GAZ
4 Titi Rue bazar GAZ
id_fournisseur nom telephone carburant
1 Marcel 043665751 GAZOIL
2 Henry 043663639 GAZ
id_client nom carburant id_fournisseur nom_1 telephone type1 Toto GAZ 2 Henry 1 GAZ2 Tutu GAZOIL 1 Marcel 0 GAZOIL3 Tata PELLETS 3 Jules 2 PELLETS4 Titi BOIS 4 Hubert 3 BOIS5 Tete BOIS 4 Hubert 3 BOIS6 Tyty GAZ 2 Henry 1 GAZ
id_client nom carburant1 Toto GAZ2 Tutu GAZOIL3 Tata PELLETS4 Titi BOIS5 Tete BOIS6 Tyty GAZ
id_fournisseur nom telephone type1 Marcel 0 GAZOIL2 Henry 1 GAZ3 Jules 2 PELLETS4 Hubert 3 BOIS
SELECT *FROM
clientINNER JOIN fournisseur ON (client.carburant = fournisseur.type)
id_client nom carburant1 Toto GAZ2 Tutu GAZOIL3 Tata PELLETS4 Titi BOIS5 Tete BOIS6 Tyty GAZ
id_fournisseur nom telephone type5 Napoléon 3 GAZ1 Marcel 0 GAZOIL2 Henry 1 GAZ3 Jules 2 PELLETS4 Hubert 3 BOIS
SELECT *FROM
clientJOIN fournisseur ON (client.carburant = fournisseur.type)
id_client nom carburant id_fournisseur nom_1 telephone type1 Toto GAZ 5 Napoléon 3 GAZ1 Toto GAZ 2 Henry 1 GAZ2 Tutu GAZOIL 1 Marcel 0 GAZOIL3 Tata PELLETS 3 Jules 2 PELLETS4 Titi BOIS 4 Hubert 3 BOIS5 Tete BOIS 4 Hubert 3 BOIS6 Tyty GAZ 5 Napoléon 3 GAZ6 Tyty GAZ 2 Henry 1 GAZ
id_client nom carburant id_fournisseur nom_1 telephone type1 Toto GAZ 2 Henry 1 GAZ2 Tutu GAZOIL 1 Marcel 0 GAZOIL3 Tata PELLETS 3 Jules 2 PELLETS4 Titi BOIS 4 Hubert 3 BOIS5 Tete BOIS 4 Hubert 3 BOIS
id_client nom carburant1 Toto GAZ2 Tutu GAZOIL3 Tata PELLETS4 Titi BOIS5 Tete BOIS6 Tyty
id_fournisseur nom telephone type1 Marcel 0 GAZOIL2 Henry 1 GAZ3 Jules 2 PELLETS4 Hubert 3 BOIS
SELECT *FROM
clientINNER JOIN fournisseur ON (client.carburant = fournisseur.type)
id_client nom carburant id_fournisseur nom_1 telephone type1 Toto GAZ 2 Henry 1 GAZ2 Tutu GAZOIL 1 Marcel 0 GAZOIL3 Tata PELLETS 3 Jules 2 PELLETS4 Titi BOIS 4 Hubert 3 BOIS5 Tete BOIS 4 Hubert 3 BOIS6 Tyty
id_client nom carburant1 Toto GAZ2 Tutu GAZOIL3 Tata PELLETS4 Titi BOIS5 Tete BOIS6 Tyty
id_fournisseur nom telephone type1 Marcel 0 GAZOIL2 Henry 1 GAZ3 Jules 2 PELLETS4 Hubert 3 BOIS
SELECT *FROM
clientLEFT JOIN fournisseur ON (client.carburant = fournisseur.type)
Fonctions spatiales qui étendent le langage SQL Fonctions propre à PostGis qui ne font pas partie du
standard SQL Fonctions utilisées pour effectuer des requêtes sur la
composante géométrique des relations◦ Area2d()◦ GeometryType()◦ Distance()◦ WithIn()◦ …
SELECTSpécification des colonnes du
résultat
FROMSpécification des tables sur
lesquelles porte l'ordre
WHEREFiltre portant sur les données
(conditions à remplir pour que les lignes soient présentes dans le
résultat)
GROUP BYDéfinition d'un groupe (sous
ensemble)
ORDER BYTri des données du résultat
Comment sont stockées les données géométriques avec PostGIS? ◦ SELECT AsText(the_geom), Srid(the_geom),the_geom FROM
personnes ;
Quelles sont les aires et les périmètres des bâtiments?◦ SELECT data as batiment,
area2d(the_geom) as Aire ,perimeter(the_geom) as PerimetreFROM buildings
◦ SELECT data as batiment, cast(area2d(the_geom) as decimal(15,2))||’ m carre’ as Aire,cast(perimeter(the_geom) as decimal(15,2))||’ m’ as PerimetreFROM buildings
Qui est dans le bâtiment Résidence des Mousquetaires ?◦ select personnes.data as personnes_dans_batiment_2
from personnes,buildingswhere within(personnes.the_geom,buildings.the_geom)and buildings.data = ’Résidence des Mousquetaires’;
Quelles distances séparent les bâtiments?◦ select h.data as batiment_1,t.data as batiment_2,
Distance(t.the_geom,h.the_geom) as distance_entre_batimentfrom buildings t, buildings h where h.data!=t.data;
Combien de points composent chaque objet de la table great_roads? ◦ SELECT data,AsText(the_geom),NumPoints(the_geom) FROM
great_roads
Dans la table great_roads, quels sont les premier et dernier point de la Rue Paul Valéry? ◦ SELECT
data,AsText(the_geom),AsText(StartPoint(the_geom)),AsText(EndPoint(the_geom))FROM great_roads where data like ’%Valéry%’
Quels sont les coordonnées des centres des bâtiments (buildings)?◦ SELECT data AS "Bâtiment",AsText(Centroid(the_geom)) AS
"Centre",Distance(the_geom,Centroid (the_geom)) from buildings;
Quels sont les points d’intersection entre les petites routes (small_roads) et les grandes routes (great_roads)?◦ SELECT
s.data,g.data,AsText(Intersection(s.the_geom,g.the_geom))FROM small_roads s, great_roads gWHERE Intersects(s.the_geom,g.the_geom)
Quelle distance (relative au tracé de la rue Paul Valéry) dois-je couvrir si je pars de l’entrée de la Rue Paul Valéry (table great_roads) jusqu’à son point de rencontre (intersection) avec la rue Voltaire (table small_roads)?◦ SELECT Line_Locate_Point(the_geom,GeomFromText(’SRID=-
1;POINT(60 25)’))*length2d(the_geom) FROM great_roadsWHERE data = ’Rue Paul Valéry’;
Quelles sont les personnes proches de la rivière dans un rayon de 5 mètres?◦ select p.data from personnes p,rivers
where contains(buffer(rivers.the_geom,5),p.the_geom);
Préparation du travail à réaliser