#1 Thu 12 June 2014 19:07
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
POSTGIS 2.0 - points to polygon
Bonjour,
Comment fait-on pour créer un polygone à partir d'une sélection de point ?
Quelques choses du genre :
st_makepolygon( st_makeline( (select t.the_geom from ma_couche_points ) ) )
A priori on peut utiliser st_makeline avec un array mais je ne sais pas comment faire de ma sélection de point un array.
Cordialement.
Hors ligne
#2 Thu 12 June 2014 19:42
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: POSTGIS 2.0 - points to polygon
Bonsoir,
Oui, c'est ca.
Attention cependant qu'en faisant une requete:
Code:
select t.the_geom from ma_couche_points
l'ordre des points n'est pas garanti. Vous risquez donc, de facon aleatoire, de créer des polygones invalides qui se recoupent.
Il faut donner un critère d'ordre dans le select:
Code:
select t.the_geom from ma_couche_points ORDER BY ma_couche_points.valeur;
Ensuite, deux options pour se servir de st_makeLine:
1°) Soit utiliser la forme qui prend un ensemble de points, en ordonnant les points dans une sous requete:
Code:
with points_ordonnes as ( select t.the_geom from ma_couche_points t ORDER BY t.valeur ) select st_makepolygon( st_makeline( (the_geom ) ) from points_ordonnes;
2°) Soit construire un tableau de points avec la fonction agrégée array_agg (mais dans votre cas, ca ne serait pas nécessaire)
Code:
with array_points as ( select array_agg(t.the_geom) as arr from ma_couche_points t ORDER BY t.valeur ) select st_makepolygon( st_makeline( (arr ) ) from array_points;
Nicolas
Dernière modification par Nicolas Ribot (Thu 12 June 2014 19:51)
Hors ligne
#3 Fri 13 June 2014 16:42
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: POSTGIS 2.0 - points to polygon
Bonjour,
merci pour ta réponse. je ne connaissais pas le with... Très pratique.
Cordialement.
Hors ligne
#4 Fri 13 June 2014 17:10
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: POSTGIS 2.0 - points to polygon
Oui, c'est vraiment très pratique ces Common Table Expression (http://www.postgresql.org/docs/9.3/stat … -with.html)
ca remplace avantageusement les sous-requetes.
On peut définir plusieurs tables, les referencer entre elles et meme faire des iterations avec la construction WITH RECURSIVE
Nico
Hors ligne