#1 Mon 23 September 2013 18:25
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
PostGis2 - 3D : Contour d'une collection de polygones Z
Bonjour à tous,
J'ai regardé avec grand intérêt cette vidéo de démonstration de PostGis 3D faites par Oslandia pour le FOSS4G: http://vimeo.com/74869530 et je souhaiterai l'appliquer à mes données sur un petit secteur.
Dans la vidéo les toits sont plats, or les miens sont avec des pentes du coup je cherche à récupérer le contour de mes toits de manière à générer mes façades et surtout mes pignons par extrusion du contour (voir capture en PJ).
Nota : 1 toit = une collection de multipolygones générée à partir de la fonction st_delaunaytriangles
J'ai bien essayé st_exteriorring mais ça ne fonctionne que sur des polygones... vous avez des idées?
Bonne soirée.
Dernière modification par Floflo49fb (Mon 23 September 2013 18:28)
Florian Boret
Dream it, Make it, Share it
Hors ligne
#2 Mon 23 September 2013 20:56
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: PostGis2 - 3D : Contour d'une collection de polygones Z
Bonsoir,
Pour dumper une collection de multipolygones en contours, vous pouvez utiliser:
Code:
select st_exteriorRing( (st_dumpRings( (st_dump(geom)).geom) ).geom ) from matable
Extraction des objets de la collection, puis extraction de tous les polygones du multipolygone (y compris les trous), puis exterieur du polygone
Nicolas
En ligne
#3 Tue 24 September 2013 08:11
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
Re: PostGis2 - 3D : Contour d'une collection de polygones Z
Bonjour Nicolas et merci pour cette réponse hier soir.
J'ai pu tester rapidement et voici la requête créée avec votre aide pour générer mes contours de toits (comme sur la capture dans le post précédent).
Code:
SELECT st_exteriorRing( st_union (t.geom)) FROM (SELECT ((st_dumpRings((st_dump((st_delaunaytriangles ((st_collect (the_geom)),0.001,0)))).geom)).geom),idbat FROM "ma_table" GROUP BY idbat) AS t GROUP BY idbat;
MERCI, Bonne journée.
Dernière modification par Floflo49fb (Tue 24 September 2013 08:14)
Florian Boret
Dream it, Make it, Share it
Hors ligne