Requête

publicité
GEO6352
SIG – Aspect pratique
La gestion de base de
données, les requêtes
pseudo-SQL, l’ODBC,
les requêtes spatiales
et l’analyse spatiale
vectorielle
Ref : Fish Finder newsletter
Jean Daoust
2015-2017
Plan du cours
Le modèle relationnel
Concept de relation
Concepts de lien et de clé
Propriété des tables relationnelles
Requêtes et types de requêtes
Langage de requête SQL
Les systèmes de gestion de base de données
(SGBD)
L’ODBC
Les requêtes spatiales
L’analyse spatiale vectorielle
Copyright Jean Daoust 2015-2017
Le modèle relationnel …
Ce modèle a été développé par Codd en
1970
Les données sont stockées dans un
ensemble de tableaux appelés tables
relationnelles
Copyright Jean Daoust 2015-2017
Le modèle relationnel …
Une table relationnelle
est un fichier composé
Colonnes (champs ou variables)
d’un ensemble de
colonnes et de lignes
Les colonnes ou champ
correspondent aux
attributs des entités
Les lignes de la table
correspondent à des
enregistrements des Lignes
(enregistrements)
valeurs d’attributs
Copyright Jean Daoust 2015-2017
Table
Le modèle relationnel …
Une valeur est stockée
à chaque intersection
d’une ligne et d’une
colonne correspondant
à la valeur d’attribut
Chaque champ
(variable) possède un
type et/ou domaine qui
détermine l’étendue
des valeurs que peut
prendre un champ
Copyright Jean Daoust 2015-2017
Les types de variable
Le type d’une variable est défini en fonction
du genre d’opération que l’on peut être
appelé à effectuer sur la variable et de
l’espace mémoire que l’on réserve pour cette
variable
Généralement, on retrouve les types
suivants : texte, entier, réel, date, logique
Copyright Jean Daoust 2015-2017
Les types de variable
Type texte (text, string ou character)
S’emploi pour contenir du texte et des nombres
sur lesquels il n’y aura jamais d’opérations
arithmétiques d’effectuées (ex. Une adresse)
Le nombre maximum de caractères que peut
contenir la variable doit être spécifié. On le
trouve en comptant le nombre de caractères que
possède la chaine de caractères la plus longue
qui sera contenue dans la variable. Tout doit être
compté; y compris les espaces et apostrophes.
Copyright Jean Daoust 2015-2017
Les types de variable
Type entier (integer)
S’emploi pour contenir des nombres entiers
Ex . Une population d’étudiants
Existe généralement en deux versions :
16 bits (court) – permet de stocker des nombres
compris entre -32768 et 32767
32 bits (long) – permet de stoker des nombres
compris entre -2147483648 et 2147483647
Copyright Jean Daoust 2015-2017
Les types de variable
Type réel (float ou double)
S’emploi pour contenir des nombres possédant une
partie décimale ou de grande dimension
Ex. Une densité de population
Existe généralement en deux versions :
32 bits (float) – permet de stocker des nombres
dont l’exposant est compris dans une étendue de
10-38 à 1038
64 bits (double) – permet de stocker des nombres
dont l’exposant est compris dans une étendue de
10-308 à 10308
Copyright Jean Daoust 2015-2017
Les types de variables
Type date
S’emploi pour contenir des dates et des heures
Ex. 24 mai 2011
Type logique (logical ou boolean)
S’emploi pour contenir Vrai ou Faux (True ou
False)
Pratique pour stocker la réponse d’une requête
Copyright Jean Daoust 2015-2017
Le domaine d’une variable
Le domaine d’une variable est constitué
des valeurs permises pour cette variable
(ex. nombres entiers compris entre 5 et 18
correspondant à des mineurs d’âge
scolaire)
Copyright Jean Daoust 2015-2017
Liens entre tables
Un lien est une association entre deux tables
Ces liens sont exprimés à l’aide de clés :
primaires
étrangères
Copyright Jean Daoust 2015-2017
Clés primaires et étrangères
Une clé primaire est un champ dans une
table dont les valeurs identifient de façon
unique chaque ligne ou enregistrement de la
table
Une clé étrangère est un champ dont les
valeurs sont les mêmes que la clé primaire
d’une autre table
Copyright Jean Daoust 2015-2017
Liens entre tables …
Un lien est créé entre 2
tables relationnelles en
faisant correspondre
les valeurs de la clé
étrangère dans une
table avec celles de la
clé primaire dans l’autre
Clé étrangère
lien
Clé primaire
Copyright Jean Daoust 2015-2017
Liens entre tables …
Les clés sont fondamentales dans une base
de données relationnelles parce qu’elles
permettent de relier les tables entre elles
Copyright Jean Daoust 2015-2017
Types de lien
Il existe 3 principaux types de lien dans une base
données relationnelles:
1:m (un à plusieurs)
Dans un lien de type 1:m, un enregistrement de la table A peut
être associé à plusieurs enregistrements de la table B, mais
un enregistrement de la table B ne peut être associé qu’à un
enregistrement de la table A
m:n (plusieurs à plusieurs)
Dans un lien de type m:n, un enregistrement de la table A peut
être associé à plusieurs enregistrements de la table B et viceversa
Ce lien requiert la définition d’une troisième table dont la clé
primaire comprend 2 champs: ceux correspondant aux clés
primaires des tables A et B
1:1 (un à un)
Dans un lien de type 1:1, un enregistrement de la table A ne
peut être associé qu’à un enregistrement de la table B et viceversa
Copyright Jean Daoust 2015-2017
Propriétés des tables
relationnelles
Chaque position ligne/colonne doit avoir une seule
valeur
Les valeurs dans les colonnes doivent être de
même type (i.e. appartenir au même domaine)
Chaque ligne est unique; deux lignes ne peuvent
avoir des valeurs identiques
Chaque colonne doit avoir un nom unique
La séquence des colonnes (gauche à droite) n’a pas
d’importance (i.e. les données peuvent être
accédées dans n’importe quel ordre)
Copyright Jean Daoust 2015-2017
Règles pour assurer l’intégrité de
la base de données
La clé primaire doit toujours avoir une valeur connue
et spécifiée; les opérations dans la table
relationnelle (ajouts, changements, …) ne doivent
jamais compromettre le caractère unique de la clé
primaire
Si une table possède une clé étrangère, alors
chaque valeur de la clé étrangère doit être nulle ou
bien correspondre aux valeurs de la table dans
laquelle la clé étrangère est une clé primaire
Copyright Jean Daoust 2015-2017
Requête
Une requête est une question adressée à la
base de données pour visualiser, trier,
modifier ou analyser les données
Copyright Jean Daoust 2015-2017
Le langage de requêtes SQL
L’interface standard utilisé pour interagir avec une base de
données relationnelle est le SQL (Structured Query Language)
Il permet de gérer la base de données, d’y apporter des
modifications et de l’interroger à l’aide de requêtes
Il est basé sur l’algèbre relationnelle et permet de réaliser une
série d’opérations sur la base de données
Copyright Jean Daoust 2015-2017
Opérateurs logiques et booléens
L’algèbre relationnelle comprend 6 opérateurs
logiques :
Égal : = ou EQ
Non égal (différent) : <> ou != ou NE
Plus petit que : < ou LT
Plus grand que : > ou GT
Plus petit ou égal : <= ou LE
Plus grand ou égal : >= ou GE
Et 3 booléens :
Et : AND
Ou : OR
Non (négation) : NOT
Copyright Jean Daoust 2015-2017
Opérations mathématiques et
statistiques
Des opérations mathématiques :
Addition et soustraction
Produit et division
Exposant et racines
Fonctions trigonométriques
Et statistiques :
Somme et moyenne
Valeurs maximale et minimale
Écart-type
...
Copyright Jean Daoust 2015-2017
Opérations relationnelles …
Sélection (select)
Sélectionne certains champs des enregistrements d’une
base de données.
Projection (project)
Sélectionne certains champs dans une table et élimine les
enregistrements qui se répètent.
Union (union)
Combine tous les enregistrements de deux tables dans
une seule; les enregistrements qui se répètent sont
éliminés. Les deux tables doivent être compatibles; elles
doivent avoir le même nombre de champs et ces champs
doivent être de même type (et posséder le même
domaine).
Copyright Jean Daoust 2015-2017
Opérations relationnelles
Intersection (intersection)
Trouve tous les enregistrements identiques dans deux tables relationnelles
et produit une nouvelle table. Les deux tables doivent être compatibles.
Différence (difference)
Trouve tous les enregistrements d’une première table qui ne sont pas
contenus dans une seconde table et produit une nouvelle table qui contient
les enregistrements qui apparaissent dans la première table mais pas dans
la seconde. Les deux tables doivent être compatibles.
Produit (product)
Trouve toutes les combinaisons possibles d’enregistrements de deux tables
relationnelles.
Jointure ou fusion (join)
Fusionne deux tables sur la base de valeurs identiques contenues dans des
champs de contenus communs aux deux tables.
Copyright Jean Daoust 2015-2017
Construction d’une requête
SQL - SELECT
Permet de sélectionner des enregistrements
d’une table correspondant à une expression
conditionnelle
Syntaxe :
SELECT liste des variables
FROM nom de la table ou des tables
WHERE condition
GROUP BY liste des variables
ORDER BY liste des variables
Copyright Jean Daoust 2015-2017
Construction d’une requête
SQL – SELECT – Exemple 1
Vous disposez d’une table appelée Lot
comportant des numéros de lot (no), la valeur de
chaque lot (val) et le nom du propriétaire de
chaque lot (proprio). Vous désirez obtenir une
liste des propriétaires qui possèdent au moins
un lot dont la valeur est supérieure à $25000 et
vous désirez connaître le nombre de lots par
propriétaire.
Copyright Jean Daoust 2015-2017
SQL – SELECT – Exemple 1
Vous bâtirez la requête suivante :
SELECT proprio, Count(*) FROM Lot
WHERE val > 25000 GROUP BY proprio
Count(*) est une fonction travaillant
étroitement avec l’option GROUP BY.
Copyright Jean Daoust 2015-2017
Construction d’une requête
SQL – SELECT – Exemple 2
Dans un SIG vous pouvez utiliser une
requête SQL SELECT pour unir 2 tables;
l’une comportant les noms de MRC déjà
associés aux objets graphiques représentant
la géométrie des MRC et l’autre comportant
les noms de MRC et d’autres variables telles
que la population, le revenu moyen, etc.
Copyright Jean Daoust 2015-2017
Construction d’une requête
SQL – SELECT – Exemple 2
Si votre table comportant une composante
graphique s’appelle MRC_carte et l’autre table
s’appelle MRC_donnees et votre variable de la
première table contenant les noms des MRC
s’appelle nom et celle de la deuxième s’appelle
noms; vous pouvez combiner les 2 à l’aide de la
requête suivante :
SELECT * FROM MRC_carte,MRC_donnees
WHERE MRC_carte.nom=MRC_donnees.noms
Copyright Jean Daoust 2015-2017
Exemple de requête dans
ArcGIS
Table employée
Liste des
variables
Condition(s)
Copyright Jean Daoust 2015-2017
SQL Spatial
Le language SQL n’a pas été développé, à
l’origine, pour effectuer des opérations
spatiales.
Cependant, la plupart des SIG offrant la
possibilité de contruire des requêtes SQL
offrent également des opérateurs spatiaux.
Le logiciel MapInfo, par exemple offre, les
opérateurs suivants : Contains, Contains
Entire, Within, Entirely Within, Intersects.
Copyright Jean Daoust 2015-2017
Exemple de requête spatiale
dans MapInfo
Copyright Jean Daoust 2015-2017
Avantages du modèle relationnel
Il n’y a pas de hiérarchie entre les entités; chacune
peut avoir sa propre liste d’attributs et être associée
aux autres entités
Une recherche peut être faite à partir de n’importe
quelle table en utilisant les clés
On peut facilement ajouter autant de tables que
désiré sans modifier l’ensemble de la structure
Il offre beaucoup de flexibilité
Copyright Jean Daoust 2015-2017
Qu’est-ce qu’un SGBD ?
C’est un Système de Gestion de Base de Données
C’est un logiciel spécialisé qui permet de gérer et
réaliser des opérations sur l’ensemble des données
enregistrées dans une base de données
Il permet de manipuler, d’insérer et de mettre à jour
de grandes quantités de données de manière
concurrente (plusieurs utilisateurs simultanés) et
sûre
Copyright Jean Daoust 2015-2017
Logiciels de gestion de bases de
données et SIG
Les SIG offrent tous des fonctions minimales
permettant de gérer des données de type attribut et
d’effectuer des requêtes
Cependant, certaines applications requièrent
l’utilisation de SGBD spécialisés qui sont
généralement compatibles avec des SIG, on
retrouve par exemple les SGBD :
Oracle
MySQL
Informix
Postgres
Access
Copyright Jean Daoust 2015-2017
Open DataBase Connectivity
Logiciel qui permet de mettre en relation des
tables provenant de plusieurs SGBD
différents au moyen de requêtes SQL et de
façon dynamique.
Disponible sous la forme d’un pilote ODBC
(driver).
Les logiciels SGBD ou SIG voulant utiliser les
fonctions du pilote ODBC doivent avoir
développer une fonction de connection au
pilote ODBC.
Copyright Jean Daoust 2015-2017
Les requêtes spatiales
Les SIG offrent généralement la possibilité
de sélectionner des objets d’une couche en
se basant sur les relations spatiales qu’ils
présentent avec les objets d’une autre
couche
Copyright Jean Daoust 2015-2017
Les requêtes spatiales
Par exemple,
Arc/GIS offre la
fonction “Select By
Location”
La nouvelle sélection
peut s’effectuer à
partir de rien ou à
partir d’une sélection
existante
Copyright Jean Daoust 2015-2017
Les requêtes spatiales
Les opérations généralement effectuées
entre couches vectorielles sont :
Trouver les objets d’une couche qui intersectent
les objets d’une autre couche
Trouver les objets d’une couche qui sont
contenus dans les objets d’une autre couches
Trouver les objets d’une couche qui contiennent
les objets d’une autre couche
Trouver les objets d’une couche qui sont à une
certaine distance des objets d’une autre couche
Copyright Jean Daoust 2015-2017
L’analyse spatiale vectorielle
L’analyse spatiale vectorielle consiste
essentiellement à effectuer des analyses de
proximité, de voisinage et de superposition
d’objets
Copyright Jean Daoust 2015-2017
La création de corridors
(buffer)
Le corridor est une zone de distance
déterminée qui est construite autour des
objets sélectionnés
Lorsque la génération de corridor s’effectue à
partir d’une couche comprenant plusieurs
objets, il est généralement possible d’obtenir
un corridor pour chaque objet ou un seul
corridor résultant pour chaque ensemble de
corridors qui se touchent
Copyright Jean Daoust 2015-2017
La création de corridors
Emprise de 26 m autour
de l’axe médian de la route
Zone de coupe prohibée
de 20 m autour des plans
d’eau
Copyright Jean Daoust 2015-2017
La création de corridor
Épicentre d’un
tremblement de
terre dans une
ville avec zone
de desctruction
de 2 kms
Copyright Jean Daoust 2015-2017
Le plus proche voisin
Trouver le plus proche voisin d’un objet est
souvent très pratique.
Dans le logiciel ArcGIS, la fonction Near, utilise
2 couches vectorielles et trouve le numéro de
l’objet le plus proche de chaque objet de la
première couche dans la 2e couche et ajoute cet
information à la table d’attributs de la première
couche. La distance est également déterminée
et stockée dans la table d’attributs de la
première couche.
Copyright Jean Daoust 2015-2017
Les plus proches voisins
Trouver le plus proche voisin d’un objet est
souvent très pratique
À partir d’un ensemble de points, la recherche
du plus proche voisin s’effectue en calculant les
distances qui séparent chaque paires de points
Un tableau ou une carte de polylignes
connectées peuvent être produits. La carte ainsi
produite correspondra à ce que l’on appelle la
triangulation de Delaunay
Copyright Jean Daoust 2015-2017
Triangulation de Delaunay
Copyright Jean Daoust 2015-2017
Le plus proche voisin
Le dual de la triangulation de Delaunay
correspond à une polygonisation de Thiessen
ou chaque polygone construit représente la
zone d’influence d’un point en ne tenant
compte que de la distance qui sépare les
points
Copyright Jean Daoust 2015-2017
Les polygones de Thiessens
Copyright Jean Daoust 2015-2017
Opérations arithmétiques
entre objets vectoriels
Des opérations d’addition et de soustraction
peuvent être effectuées entre les objets
vectoriels
On retrouve essentiellement 3 opérations
L’addition (combine, union)
La soustraction (erase, clip)
L’intersection (intersect)
Copyright Jean Daoust 2015-2017
L’addition d’objets
L’addition permet de combiner deux ou
plusieurs objets pour n’en former qu’un
Le résultat d’une addition entre 2 objets
partageant une frontière commune sera un
nouvel objet ou la frontière est disparue
avant
après
Copyright Jean Daoust 2015-2017
La soustraction d’objets
La soustraction d’un ou plusieurs objets d’un
ou plusieurs autres objets doit généralement
s’effectuer en 3 étapes
D’abord sélectionner les objets desquels seront
extrait les autres objets et les définir comme cible
Ensuite sélectionner les objets dont la forme sera
extraite de la cible précédemment définie
Finalement, effectuer l’opération de soustraction
Copyright Jean Daoust 2015-2017
La soustraction d’objets
Avant
(la cible est en rouge)
Copyright Jean Daoust 2015-2017
Après
L’intersection d’objets
L’intersection permet de ne
retenir que les parties communes
à deux ou plusieurs objets.
Elle est généralement réalisée
entre 2 couches vectorielles.
avant
après
Copyright ESRI
Copyright Jean Daoust 2015-2017
L’intersection
Pour trouver les divers
ponts et ponceaux
d’une région on peut
faire l’intersection
entre une couche de
routes (polylignes) et
une couche de rivières
(polylignes). Le
résultat sera une
couche de points
correspondant aux
ponts.
Copyright Jean Daoust 2015-2017
La dissolution de frontières
La dissolution de frontières (dissolve) permet
de créer des objets plus grands par
regroupement d’objets plus petits possédant
des valeurs d’attribut identiques
Exemple : création d’une carte de MRC à partir
d’une carte de municipalités
Copyright Jean Daoust 2015-2017
Dissolution de frontières
Copyright Jean Daoust 2015-2017
Téléchargement