5 - SQL - Bases de données

Extensions spatiales

Sqlite et PostgreSQL proposent des extensions spatiales (respectivement Spatialite et PostGIS) permettant d'ajouter le stockage et la manipulation d'objets spatiaux en ajoutant des types de données géométriques et des fonctions spatiales.

ComplémentLes spécifications

La spécification SFSQL (Simple Features for SQL) définit les types et les fonctions qui doivent être disponibles dans une base de données spatiale selon l'OGC. La spécification SQL/MM étend le modèle. On pourra également se référer au document Matrices de Clementini et prédicats spatiaux de l'OGC disponible sur le site du Ministère de l'Ecologie sur l'information géographique (ici)

Les types de données géométriques

Dans cette formation nous ne considérerons que les objets en dimension 2 et plus précisément : les points, les lignes, et les polygones.

La géométrie est stockée dans un format binaire 'WKB' (ou éventuellement texte 'WKT', exemple : POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10)) dans une colonne de table qui est souvent nommée geometry ou the_geom). Le système utilise au moins deux autres tables internes supplémentaires qu'il maintient à jour : geometry_columns et spatial_ref_sys (PostGIS 1.5)

Tables internes OGC

SRID est l'identifiant du système de projection. Par exemple 2154 pour le RGF93/Lambert93

ConseilQuelques informations utiles pour les Administrateurs de Données Localisées (ADL)...

En cas de problème la fonction Populate_Geometry_columns() détecte les colonnes qui contiennent de la géométrie et met à jour la table interne geometry_columns.

A partir de PostGIS 2.0 la table Geometry_columns devient une vue

On pourra consulter le document QGIS et les bases de données spatiales à cette adresse (sur internet).

Pour les ADL des Ministères, ces informations sont également disponibles ici (intranet).

Les fonctions spatiales

Il existe plusieurs catégories de fonctions spatiales, comme par exemple celles qui permettent de passer du format WKT au WKB ou inversement. Voici quelques fonctions de départ :

ST_SRID() : retourne le code du système de projection de l'objet

ST_IsValid() : vérifie la géométrie des objets (pas d'erreur topologique)... Ceci concerne essentiellement les polygones voir par exemple

Remarque

Vérification de géométrie sous PostGIS

PostGIS ajoute d'autres fonctions de vérification de la géométrie

ST_IsValidReason() : retourne un texte indiquant les raisons d'une éventuelle invalidité.

ST_IsValidDetail() : retourne en plus un pointeur vers la partie non valide (à partir de PostGIS 2.0).

ST_MakeValid() : Tente de corriger les géométries invalides (PostGIS 2.0)

ST_X() : retourne la coordonnée X d'un point (et uniquement d'un point).

ST_Y() : coordonnée Y d'un point

ST_Centroid() : retourne le centroide d'un polygone

Exemple : ST_X(ST_Centroid(Geometry)) retourne la coordonnée X du centroide d'un polygone.

SELECT nom_comm, ST_X(ST_centroid(Geometry)) AS X, ST_Y(ST_centroid(Geometry)) AS Y FROM commune

Utilisation St_Centroid

ST_Area() retourne la surface d'un objet

ST_Buffer() retourne un nouvel objet tampon construit autour d'un objet

ST_Length() : retourne la longueur d'un objet de type ligne ou multi-ligne (attention à ne pas utiliser length() qui retourne la longueur du champ, spatialite autorise aussi Glength()).

ST_Perimeter() : retourne le périmètre d'un objet polygone ou multi-polygone

AttentionPrefixe ST_

Il est recommandé de préfixer les commande par ST_ (Spatial Temporal) pour être conforme au standard SQL/MM. PostGIS a entamé une migration vers ce standard et même si certaines fonctions anciennes sont toujours disponibles sans ce préfixe, elles deviendront prochainement obsolètes. Donc autant prendre les bonnes habitudes !

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Maîtrise d'ouvrage : MEDDE - METL - MAAF / Maîtrise d'œuvre : ENTE Aix - ENSG / Licence ouverte ETALAB Réalisé avec Scenari (nouvelle fenêtre)