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é ?

#1 Wed 28 April 2010 11:41

nawak
Participant assidu
Date d'inscription: 11 Sep 2007
Messages: 216

postgis-Exteriorring

Bonjour,

Sous postgis je veux créer une table avec les lignes d'une couche polygone. je passe par la fonction exterieurring(). Mais cette fonction renvoie : geom is not a polygon. En fait en creusant je me suis apperçu que la fonction plante sur certain enregistrements. En observant la geometrie de ces enregistrments je constate que j'ai généralement deux polygones séparés. Y a certainement une notion élémentaire sur la geometrie que je ne connais pas. quelqu'un pourrait-il m'aider  ?

Merci

Hors ligne

 

#2 Wed 28 April 2010 11:50

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: postgis-Exteriorring

Bonjour,

Est ce que ces polygones qui te font planter la requête sont des multipolygone ?

Tu dois pouvoir faire un filtre avec issimple(the_geom) is true, il y a un moyen aussi de récupérer une géométrie simple à partir d'une géométrie multi, mais avec une perte d'information.

Y.
PS : je déplace sur GeoBD.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 28 April 2010 12:16

ppluvinet
Participant assidu
Lieu: VALENCE
Date d'inscription: 6 Aug 2007
Messages: 611

Re: postgis-Exteriorring

avec la fonction st_boundary() au lieu de exterieurring(), ca ne le ferait pas ?


Pascal PLUVINET

Hors ligne

 

#4 Wed 28 April 2010 14:34

nawak
Participant assidu
Date d'inscription: 11 Sep 2007
Messages: 216

Re: postgis-Exteriorring

ha ba si ! Merci

Hors ligne

 

#5 Wed 28 April 2010 14:43

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1544

Re: postgis-Exteriorring

nawak a écrit:

Bonjour,

Sous postgis je veux créer une table avec les lignes d'une couche polygone. je passe par la fonction exterieurring(). Mais cette fonction renvoie : geom is not a polygon. En fait en creusant je me suis apperçu que la fonction plante sur certain enregistrements. En observant la geometrie de ces enregistrments je constate que j'ai généralement deux polygones séparés. Y a certainement une notion élémentaire sur la geometrie que je ne connais pas. quelqu'un pourrait-il m'aider  ?

Merci


Bonjour,

ExteriorRing renvoie une geometrie de type linestring. Il faut utiliser le constructeur st_polygon (http://postgis.org/documentation/manual … lygon.html).

Cette fonction ne marche que pour les polygones, pas pour les multipolygones.
Pour ceux-ci, il faut d'abord exploser le multipg en pg, puis appeler st_exteriorring.

Si la table contient a la fois des multipg et des pg, la fonction st_mutli permet de tout passer en multipolygones.
Ensuite, une fonction avec generate_series permettra d'exploser les multipg en pg puis d'extraire les exteriorrings:

select
    st_exteriorRing(st_geometryN(geom,
        generate_series(0, st_numgeometries(geom)
        )
    )
)
from (
select geometryfromtext('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 3 2, 2 2)))', -1) as geom) as foo;

st_boundary marche aussi et est effectivement plus simple smile : ca va renvoyer une multilinestring.

Nico

Hors ligne

 

#6 Wed 28 April 2010 16:44

nawak
Participant assidu
Date d'inscription: 11 Sep 2007
Messages: 216

Re: postgis-Exteriorring

Merci pour cette explication précise Nico!

Hors ligne

 

Pied de page des forums

Powered by FluxBB