Vos premières requêtes spatiales |
|
Février 2011 |
SpatiaLite est un SGBD Spatial,
et il est temps de réaliser quelques requètes spatiales avec SQL.
Il n'y a rien de bien sorcier avec le SQL spatial: la base est
identique au SQL, mais il supporte les données Geometriques.
En
général, vous ne pouvez pas directement interroger une donnée
géométrique (comme nous l'Avon vu, ce sont des données de type
BLOB):
vous devrez passer par des fonctions spatiales
, ce qui s'avère beaucoup plus convivial.
SELECT COD_REG, REGIONE,
ST_Area(Geometry) |
La fonction ST_Area()
est une de ces fonctions; de façon générale, vous pouvez
facilement reconnaître les fonctions spatiales grâce au préfixe
ST_.
Il n'y a pas de règle absolue cependant: SpatiaLite
est capable de comprendre l'alias Area()
pour identifier la même fonction.
Comme son nom l'indique, cette
fonction permet de calculer la surface de la géométrie
correspondante.
SELECT COD_REG AS
code, |
Comme vous l'avez remarqué, la première requête retourne de
très grandes valeures: c'est parceque le jeu de donné utilise le
mètre comme unité de longueur, la surface est ainsi exprimée
en m².
Mais il est très simple d'obtenir la valeur en
km².
Deux nouvelles notions apparaissent pour la première
fois dans la requête suivante:
SQL ne se limite pas a retourner directement la valeur d'une colonne dans la liste des résulats: vous êtes libre de définir des champs calculés.
PLacer une expression complexe après ORDER
BY n'est pas pratique:
mais vous pouvez facilement
identifier cette colonne grâce a sa position relative (1
pour la 1ère colonne, et ainsi de suite).
SELECT COD_REG AS
code, |
Vous pouvez également effectuer des calculs encore plus complexes
avec SQL.
Cette requête va calculer la densité de
population ( personnes / km²).
Bien, vous avez maintenant acquis les bases en SQL / SQL
spatial. |
|
Author: Alessandro Furieri a.furieri@lqt.it |
This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license. |
|
|
|
Permission is granted to copy, distribute and/or modify this
document under the terms of the |