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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Fri 25 November 2016 17:08

PA
Membre
Lieu: Paris
Date d'inscription: 5 Sep 2005
Messages: 3259
Site web

Re: POstGis/Postgres : st_concavehull

Bonsoir,

Pouvez-vous reposter la PJ en cliquant sur Modifier le message ?


Pierre-André Le Ny
Modérateur QGIS, Données, Coin de l'OpenSource
Aidez l'association GeoRezo !

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

 

Pied de page des forums

Powered by FluxBB