Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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: 1536

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: 1536

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

 

Pied de page des forums

Powered by FluxBB