PostGIS › Fonctions PostGIS

← Précédent ↑ Retour Suivant →

Objectifs du module

À retenir par coeur

Rendus graphiques

A Fonctions de traitement

AA Insertion WKT en SQL

Suite au module précédent , nous supprimons le point, la ligne et les polygones qu’on avait entrés :

DELETE FROM "testgeom"

L’instruction SQL DELETE permet de supprimer des enregistrements d’une table. Pour ne supprimer que certains enregistrement (et non pas tous), il faut ajouter une condition WHERE comme ceci :

DELETE FROM "testgeom" WHERE "id" = 2

Nous allons maintenant insérer des géométries en WKT en vrai SQL (alors que nous avions entré du WKT sans faire du SQL frâce à pgAdmin, dans le module précédent ).

Exécuter :

INSERT INTO "testgeom" (geom) VALUES (ST_GeomFromText('POLYGON ((0 0, 10 0, 5 10, 0 0))'))

Rafraîchir QGIS par un rapide zoom puis dézoom. Si nécessaire, ajouter la couche sur QGIS comme expliqué dans le module précédent .

QUESTION AAA PNG QGIS
A chaque dézoom, QGIS met à jour son affichage en ré-exécutant une requête de type SELECT .. FROM "nom_table" en filtrant sur l’étendue géographique à afficher. Comme QGIS n’est pas au courant des modifications que nous avons faites sur la table, nous utilisons ce principe pour forcer le rafraîchissement.

Exécuter :

INSERT INTO "testgeom" (geom) VALUES (ST_GeomFromText('POLYGON ((0 10, 10 10, 10 5, 0 5, 0 10))'))
QUESTION AAB PNG QGIS

AB Appliquer un Buffer

Exécuter :

INSERT INTO "testgeom" (geom) VALUES (ST_Buffer(ST_GeomFromText('POLYGON ((0 10, 10 10, 10 5, 0 5, 0 10))'), 2))
QUESTION ABA PNG QGIS

La fonction ST_Buffer permet de dilater une géométrie sur une distance donnée. Dans l’énoncé, nous appelons cela appliquer un buffer de 2

AC Translation, rotation, homothétie

Répéter la requête en remplaçant ST_Buffer par ST_Translate , pour insérer la géométrie qui est l’application d’une translation de deltaX = 3 et deltaY = 2 de notre WKT.

QUESTION ACA PNG QGIS

Utiliser la fonction ST_Rotate pour appliquer une rotation sur le même WKT.

QUESTION ACB PNG QGIS pour une rotation de PI/4 radians autour de l’origine (0 ; 0)
QUESTION ACC PNG QGIS pour une rotation de -PI/8 radians autour de l’origine (5 ; 10) PostgreSQL fournit une fonction PI

Repérer laquelle des fonctions permet d’appliquer une homothétie. L’appliquer sur le WKT précédent, pour un facteur de 1.5 autour de l’origine (0 ; 0) .

QUESTION ACD Nom de la fonction permettant d’application d’une homothétie
QUESTION ACE PNG QGIS de la requête SQL (pour l’homothétie de facteur 1.5 )

B Fonctions de mesure

BA Travailler sur la table

Vider la table testgeom puis ré-insérer les géométries A et B précédentes (de la même façon).

Exécuter :

SELECT id, "geom", ST_NDims("geom") FROM "testgeom"
QUESTION BAA la valeur nb_dims du résultat de la requête
La fonction ST_NDims retourne le degré de dimensionnalité de la géométrie donnée en argument. C’est une simple mesure, qui ne modifie pas la géométrie et ne retourne pas une géométrie, mais un nombre.
QUESTION BAB Le résultat de la requête SELECT avec les expressions suplémentaires :
Un polygone contient un ou plusieurs rings , lui permettant d’avoir des trous .

BB Travailler avec les vues comme requêtes enregistrées

Exécuter :

CREATE OR REPLACE VIEW "testview" AS SELECT "id", "geom", ST_NDims("geom") FROM "testgeom"

Puis :

SELECT * FROM "testview"

Les vues sont une manière d’enregistrer les requêtes pour s’en servir simplement, sorte de tables dynamiques .

QUESTION BBA La requête qui enregistre la requête de BAA en tant que vue "mamesure"

Ensuite :

A ce stade, les vues sont en lecture seule : pas d’édition, pas de clef primaire. Il est possible de rendre les vues éditables, c’est une fonctionnalité avancée de PostgreSQL que nous ne traiterons pas ici

BC Aire et périmètre

Créez la vue testgeom_avec_mesure qui retourne le contenu de la table testgeom augmentée des colonnes aire (aire du polygone en nombre réel) et perimetre (périmètre du polygone en nombre réel).

QUESTION BCA résultat de la vue tel que retourné par SELECT * FROM "testgeom_avec_mesure"

BD Mesures dérivées

On va combiner les fonctions de traitement (qui produisent une géométrie) et les fonctions de mesure (qui retourne une information sur la géométrie).

Par exemple, exécutez :

SELECT id, ST_Area(ST_Buffer("geom", 1)) AS aire_du_buffer FROM "testgeom"

En Français, on dirait : aire_du_buffer représente l’aire du buffer de 1 appliqué à la géométrie geom

QUESTION BDA nom du type PostgreSQL de l’expression "geom" (dans la requête ci-dessus)
QUESTION BDB nom du type PostgreSQL de l’expression ST_Buffer("geom", 1)
QUESTION BDC nom du type PostgreSQL de l’expression ST_Area(ST_Buffer("geom", 1))
  • un type d’expression (ou type de valeur ) n’est pas toujours un type de colonne ; par exemple, character varying est un type de colonne (pour le stockage) mais il renvoie une valeur de type text
  • il s’agit ni plus ni moins des types de colonnes retournées par une requête SELECT, que pgAdmin affiche sous le nom de chaque colonne du résultat d’une requête

De la même manière, créez la vue rendu_bdd qui retourne pour chaque géométrie de testgeom :

QUESTION BDD code SQL de création de la vue

Créez maintenant la vue rendu_bde qui affiche le résultat de la vue rendu_bdd , augmenté des champs suivants :

QUESTION BDE code SQL de création de la vue
Suivant → ← Précédent Retour