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

Printemps des cartes 2024

#1 Wed 28 April 2010 14:07

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

POSTGIS : convertir polygones en points espacés de 100m

Bonjour,

j'ai des polygones que je souhaite convertir en points  espacés de 100m les uns des autres. Connaissez-vous une telle fonctions sur POSTGIS.

J'ai trouvé la fonctions st_dumppoints() qui converti le polygone en point vertex. mais ce n'est pas exactement ce qhe je cherchais.

Eventuellement, savez-vous si c'est possible sur ArcGIS , même si je préfèrerais trouver une telle fonction sur postgis.
En vous remerciant d'avance,


Pascal PLUVINET

Hors ligne

 

#2 Wed 28 April 2010 15:02

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

Re: POSTGIS : convertir polygones en points espacés de 100m

Bonjour,

Sauf erreur de ma part c'est possible sous PostGIS : http://postgis.refractions.net/document … asure.html

Y.


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 15:10

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: POSTGIS : convertir polygones en points espacés de 100m

Tout d'abord merci.

Mes polylignes (issus de mes polygones) n'ont pas de 'M ordinate'. or il est dit avec la fonction ST_Locate_Along_Measure:
Use this function only for geometries with an M component

Comment alors donner cette spécificité à mes polylignes ?


Pascal PLUVINET

Hors ligne

 

#4 Wed 28 April 2010 15:18

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

Re: POSTGIS : convertir polygones en points espacés de 100m

ppluvinet a écrit:

Bonjour,

j'ai des polygones que je souhaite convertir en points  espacés de 100m les uns des autres. Connaissez-vous une telle fonctions sur POSTGIS.

J'ai trouvé la fonctions st_dumppoints() qui converti le polygone en point vertex. mais ce n'est pas exactement ce qhe je cherchais.

Eventuellement, savez-vous si c'est possible sur ArcGIS , même si je préfèrerais trouver une telle fonction sur postgis.
En vous remerciant d'avance,


Bonjour:

oui, c'est possible, avec une petite requete:

• Extraire l'exterieur du polygone
• utiliser generate_series pour generer autant de boucles qu'il faut generer de points (longueur de la ligne/espacement voulu des points)
• diviser par la longueur de la ligne pour avoir la fraction de la ligne initiale pour laquelle generer un point
• line_interpolate_point pour calculer ce point
• makeline pour creer une ligne a partir d'un set de points.
(la requete la plus imbriquee sert juste a creer un pg de test).

cf post precedent pour faire la meme chose sur des multipg (explosion des multi en objets simples)

select st_makeline(setpoint) from

(select st_line_interpolate_point(
    ln,
    ((generate_series(0, (st_length(ln)/100)::integer)) * 100) / st_length(ln)
    ) as setpoint
from
(select
    st_exteriorRing(geom) as ln

from (
select geometryfromtext('POLYGON((0 0, 2500 0, 2500 2500, 0 2500, 0 0))', -1) as geom
)
as foo) as foo2) as foo3;

Nico

Hors ligne

 

#5 Wed 28 April 2010 15:38

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

Re: POSTGIS : convertir polygones en points espacés de 100m

(le makeline ne sert a rien, si le but est d'avoir un ensemble de points, dans la requete precedente.
De meme, les sub-select peuvent etre evités)

Hors ligne

 

#6 Wed 28 April 2010 16:10

ppluvinet
Participant assidu
Lieu: LYON
Date d'inscription: 6 Aug 2007
Messages: 608

Re: POSTGIS : convertir polygones en points espacés de 100m

Merci Nicolas.

j'ai un peu modifié pour caler à mon cas. Ca donne :

Code:

create table point_from_polygon_100m as 
select id_polygon, st_line_interpolate_point(
    ln,
    (generate_series(0, st_length(ln)::integer-1,100) ) / st_length(ln)
    ) as setpoint
from
(select id_polygon,
    st_exteriorRing(the_geom) as ln
from (
select id_polygon, (dump(the_geom)).geom  as the_geom from my_polygon
)
as foo ) as foo2 group by id_polygon, ln;

Pascal PLUVINET

Hors ligne

 

#7 Wed 28 April 2010 16:23

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

Re: POSTGIS : convertir polygones en points espacés de 100m

ppluvinet a écrit:

Merci Nicolas.

j'ai un peu modifié pour caler à mon cas. Ca donne :

Code:

create table point_from_polygon_100m as 
select id_polygon, st_line_interpolate_point(
    ln,
    (generate_series(0, st_length(ln)::integer-1,100) ) / st_length(ln)
    ) as setpoint
from
(select id_polygon,
    st_exteriorRing(the_geom) as ln
from (
select id_polygon, (dump(the_geom)).geom  as the_geom from my_polygon
)
as foo ) as foo2 group by id_polygon, ln;


Oui effectivement: plus direct le dump, plutot que le generate_series wink

un round doit etre plus juste que le cast ::integer, histoire de ne pas louper un point aux limites.

Nico

Hors ligne

 

Pied de page des forums

Powered by FluxBB