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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoRezo est partenaire de l'évènement DécryptaGéo 2017, le rendez-vous indépendant des professionnels de l'information géographique.

Rendez-vous les 24 et 25 janvier 2017 à l'ENSG, cité Descartes, Noisy-Champs.

Retrouvez le programme de l'évènement et le formulaire d'inscription sur le site de DécryptaGéo

#1 ven. 25 novembre 2016 16:55

Ted
Membre
Date d'inscription: 16 janv. 2007
Messages: 109

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 (ven. 25 novembre 2016 17:16)


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

Hors ligne

 

#2 ven. 25 novembre 2016 17:08

PA
Membre du bureau
Lieu: Paris
Date d'inscription: 5 sept. 2005
Messages: 2109
Site web

Re: POstGis/Postgres : st_concavehull

Bonsoir,

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


Pierre-André Le Ny
Président de l'association
Modérateur QGIS, Données, Coin de l'OpenSource

Hors ligne

 

#3 ven. 25 novembre 2016 22:47

tumasgiu
Moderateur
Lieu: Ajaccio
Date d'inscription: 5 juil. 2010
Messages: 317

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 (ven. 25 novembre 2016 23:06)

Hors ligne

 

#4 lun. 12 décembre 2016 10:09

Ted
Membre
Date d'inscription: 16 janv. 2007
Messages: 109

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

Partagez  |