Module Géomatique et Systèmes d’Informations … · Modèle du SIG-logiciel ArcView (ESRI) Se...

28
Module Géomatique et Systèmes d’Informations Géographiques Pierre Hallot & Roland Billen Unité de Géomatique ULg Cours 1 Cours 1 Cours 2 Cours 2 TP1 TP1 Cours 2 Cours 4 Cours 3 Cours 4 TP2 Cours 3

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

Server : 139.165.44.22 BD : TD_SQL User : postgres Password : postgres Port : 5432

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