#1 Fri 25 November 2016 16:55
- Ted
- Participant assidu
- Date d'inscription: 16 Jan 2007
- Messages: 181
POstGis/Postgres : st_concavehull
Bonjour,
J'ai des données issues d'un même groupe de données (points). Je souhaite créer pour chaque lot de points appartenant à une même table l'enveloppe concave via st_concavehull.
La commande que je lance me fait l'emprise générale de mon lot.
Code:
select st_concavehull(st_collect(geom),0.6, true) as geom from "7122E201104300_1_10_PointZ";
J'ai mis l'option hole à vrai et ça ne change rien.
Je mets la représentation de mes lots de points en pièce jointe.
Je place également mon résultat de concave en pièce jointe.
Merci d'avance pour l'aide
Cordialement
Dernière modification par Ted (Fri 25 November 2016 17:16)
Hors ligne
#2 Fri 25 November 2016 17:08
Re: POstGis/Postgres : st_concavehull
Bonsoir,
Pouvez-vous reposter la PJ en cliquant sur Modifier le message ?
Hors ligne
#3 Fri 25 November 2016 22:47
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: POstGis/Postgres : st_concavehull
Salut,
si j'ai bien compris, vous désirez avoir l'enveloppe de chaque lot de points.
Est ce que votre table comporte un attribut identifiant le lot d'un point ?
Si oui, il vous faut modifier votre requête et rajouter une clause d'agrégation sur cet attribut :
Code:
SELECT st_concavehull(st_collect(geom),0.6, true) AS geom FROM "7122E201104300_1_10_PointZ"; GROUP by lot
Cette requête groupera chaque point par lot et executera la fonction concavehull sur chaque groupe de point.
Si votre table ne comporte pas cet attribut, deux solutions me viennent à l'esprit :
-Utiliser un logiciel SIG afin d'ajouter cet attribut identifiant le lot de chaque point à la table
(un identifiant numérique par exemple), puis lancer la requête ci dessus.
Qgis vous permettra de faire cela rapidement.
-Au vu de votre exemple. Il semble que les lots sont assez éloignés les uns des autres.
Si vous possédez une version de Postgis suffisamment récente (2.2), vous pourriez peut être
vous servir de la fonction st_clusterwithin qui vous permettra de grouper vos points en fonction
de leur distances relatives. http://postgis.net/docs/manual-2.2/ST_C … ithin.html
Une fois la distance maximale entre chaque point définie, la requête pourrait donc s'écrire :
Code:
SELECT st_concavehull( unnest( st_clusterwithin(geom, distance_maxi_a_definir) ) ) AS geom FROM "7122E201104300_1_10_PointZ";
la fonction cluster_within renvoie un tableau de geometrycollection.
La fonction unnest permet de transformer ce tableau en ensemble.
Dernière modification par tumasgiu (Fri 25 November 2016 23:06)
Hors ligne
#4 Mon 12 December 2016 10:09
- Ted
- Participant assidu
- Date d'inscription: 16 Jan 2007
- Messages: 181
Re: POstGis/Postgres : st_concavehull
Bonjour,
Désolé, je n'avais pas vu vos réponses.
JE vais regarder cela quand j'aurai un moment. L'ensemble de mes données est issu du même lot, c'est jusque que les levés ont été réalisés sur des zones différentes.
Ted
Hors ligne