Requêtes et fonctions spatiales
Réaliser des requêtes et fonctions spatiales
En utilisant les tables de PostGIS importées dans le module précédent, réaliser les 4 requêtes suivantes :
Question
Question 1
Quels sont les ponctuels hydrographiques de la commune de La Flèche ?
Indice
On utilisera les tables ponctuel_hydrographique et commune... trouver la relation géométrique entre ponctuel_hydrographique.Geometry et commune.Geometry.
Question
Question 2
Quelle est la longueur de la 'rivière le loir' dans chacune des communes intersectées par le cours d'eau ?
Le résultat à obtenir est :

Indice
Chaque commune peut contenir plusieurs tronçons, il faut donc calculer la somme des longueurs des tronçons pour chaque commune... donc utiliser un GROUP BY et une fonction sum(). On utilisera la fonction ST_Length() pour obtenir la longueur de chaque tronçon. Il faut également tenir compte que certains tronçons sont à cheval sur plusieurs communes, et donc ne prendre en compte que la longueur des tronçons qui sont à l'intérieur de chaque commune pour ce faire on utilisera st_intersection(a.geom, b.geom) qui permet de récupérer la géométrie de l'objet a qui intersecte celle de l'objet b.
Question
Question 3
Sélectionner les ponctuel_hydrographique qui sont à moins de 5 km d'un établissement d'enseignement (couche etablissement)
Indice
On pourra utiliser une fonction ST_Distance() ou une fonction ST_Buffer() associée à un opérateur de type ST_Contains() ou ST_Intersects().
Question
Question 4
Quel est l'établissement le plus proche du centroide de la commune de la Flèche?
On utilisera les coordonnées x_commune et x_commune et la fonction ST_Makepoint(). Le SRID (Identifiant du Système de Référence Spatial) est 2154, mais on pourra le cas échéant généraliser la requête à tout SRID en utilisant la fonction ST_Srid() qui récupère le SRID d'une géométrie.
Indice
Utiliser la fonction ST_Distance(), ORDER BY pour trier et LIMIT 1 pour prendre le 1er objet renvoyé.
Une requête de type :
SELECT nom_comm, ST_Srid(Geometry) AS SRID, ST_MakePoint(X_COMMUNE, Y_COMMUNE) AS Geometry FROM commune WHERE commune.nom_comm = 'LA FLECHE'
retourne des points au centroide calculé à partir des coordonnées X_COMMUNE, Y COMMUNE.
Attention :
La fonction ST_Makepoint (x,y) renvoie toujours un point à SRID inconnu (donc = 0).
Pour créer un point avec SRID déterminé, il faut utiliser la fonction suivante : ST_Setsrid (ST_Makepoint(x,y),srid) pour lui indiquer le SRID de ce point créé.