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 Thu 20 May 2010 16:52

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

creer the_geom

bonjour
j'ai 4 coordonnéé
  case_ymax
  case_xmin
  case_xmax
  case_ymin

je veux creer the_geom

je fais
     select addgeometrycolumn('schema','tmp_case','the_geom',27582,'GEOMETRY',2);


et comment ensuite je peux creer the_geom via mes 4 coordonnées et l'inserer dans ma table tmp_case
merci

Dernière modification par michCarto (Thu 20 May 2010 16:52)

Hors ligne

 

#2 Thu 20 May 2010 17:08

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

Re: creer the_geom

Salut Michel,
Tu souhaites faire un Polygone de forme carré, c'est bien cela?


Pascal PLUVINET

Hors ligne

 

#3 Thu 20 May 2010 18:08

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

Re: creer the_geom

salut pascal,
oui des carrées
et Via ces 4 coordonnées je veux en sortir the_geom et le mettre a jour dans ma table
tu vois ? et merci !
@+

Hors ligne

 

#4 Thu 20 May 2010 18:13

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

Re: creer the_geom

michCarto a écrit:

salut pascal,
oui des carrées
et Via ces 4 coordonnées je veux en sortir the_geom et le mettre a jour dans ma table
tu vois ? et merci !
@+


select st_makeBox2d(
    st_makepoint(xmin, ymin),
    st_makepoint(xmax, ymax))::geometry;

Faire un setSrid autour de la geometry si on veut associer a ce nouveau polygone le SRID defini pour la colonne geometrique

Nicolas

Hors ligne

 

#5 Thu 20 May 2010 18:30

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

Re: creer the_geom

Nicolas Ribot a écrit:
michCarto a écrit:

salut pascal,
oui des carrées
et Via ces 4 coordonnées je veux en sortir the_geom et le mettre a jour dans ma table
tu vois ? et merci !
@+


select st_makeBox2d(
    st_makepoint(xmin, ymin),
    st_makepoint(xmax, ymax))::geometry;

Faire un setSrid autour de la geometry si on veut associer a ce nouveau polygone le SRID defini pour la colonne geometrique

Nicolas


Pardon, pour une insertion:

insert into tmp_case (...)
select st_makeBox2d(
    st_makepoint(xmin, ymin),
    st_makepoint(xmax, ymax))::geometry;

Nico

Hors ligne

 

#6 Thu 20 May 2010 20:17

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

Re: creer the_geom

merci nicolas , je le teste demain ...

Hors ligne

 

#7 Fri 21 May 2010 09:27

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

Re: creer the_geom

cela a passer je l'ai fait en pg/sql pour ceux que ca interessent...
declare
the_geom1 geometry;
begin
select addgeometrycolumn('acl','tmp_case','the_geom',27582,'GEOMETRY',2);
l_va_requete :=
            'select st_makeBox2d(
            st_makepoint(' || xmin || ','  || ymin || '),
            st_makepoint(' || xmax || ','  || ymax || '))::geometry';
            execute l_va_requete into The_geom1 ;
            insert into acl.tmp_case values (Ymin,Ymax,Xmin,Xmax,The_geom1);
end;
@+

Hors ligne

 

#8 Fri 21 May 2010 13:31

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

Re: creer the_geom

les polygones ne s'affichent pas

select srid(the_geom) from acl_admin.tmp_case limit 1;  si c'est pas 27582 c'est que le problème vient de là !
j'ai une variable en retour de -1

Pascal me dit de faire Il faut rajouter un set_srid(st_makebox2d.....), 27582)

il faut que je le fasse a chaque coordonnée?

genre

_va_requete :=
            'update tmp_case set  set_srid(st_makeBox2d(
            st_makepoint(' || xmin || ','  || ymin || '),
            st_makepoint(' || xmax || ','  || ymax || '))::geometry',2852);
            execute ;
merci de confirmer

Hors ligne

 

#9 Fri 21 May 2010 14:30

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

Re: creer the_geom

michCarto a écrit:

les polygones ne s'affichent pas

select srid(the_geom) from acl_admin.tmp_case limit 1;  si c'est pas 27582 c'est que le problème vient de là !
j'ai une variable en retour de -1

Pascal me dit de faire Il faut rajouter un set_srid(st_makebox2d.....), 27582)

il faut que je le fasse a chaque coordonnée?

genre

_va_requete :=
            'update tmp_case set  set_srid(st_makeBox2d(
            st_makepoint(' || xmin || ','  || ymin || '),
            st_makepoint(' || xmax || ','  || ymax || '))::geometry',2852);
            execute ;
merci de confirmer


Je ne suis pas sur de comprendre:
Ils ne s'affichent pas ou ? dans un logiciel carto, ou dans pgAdmin ? (sachant que ce dernier ne sait pas afficher les types geometriques)

Sinon oui, il faut bien encapsuler toute la creation du polygone dans un setSrid, histoire de lui affecter le bon SRID.
Ca suffit de le faire au niveau du polygone final, pas besoin de le faire a chaque coordonnées.

Nicolas

Hors ligne

 

#10 Fri 21 May 2010 16:13

michCarto
Participant actif
Date d'inscription: 8 Sep 2009
Messages: 105

Re: creer the_geom

j'ai un soucis avec cette requete, pourtant ma table loc_paca_corse_mars est en 27582
   
--// on recupere les coordonnées minimales et maximales de la zone du departement du 13
    l_va_requete := 'SELECT Xmin(alias.extent),Ymin(alias.extent),Xmax(alias.extent),
    Ymax(alias.extent)FROM
        (SELECT Extent(the_geom) FROM cadastre.loc_paca_corse_mars where id_dep=13 ) AS alias;';
         execute l_va_requete into Box_Xmin,Box_Ymax,Box_Xmax,Box_Ymin ;

puis je creer un the_geom que j'insere dans tmp_case1 (pour verifier )

l_va_requete :=
            'select setsrid(st_makeBox2d(
            st_makepoint(' || Box_Ymin|| ','  || Box_Xmin || '),
            st_makepoint(' || Box_Ymax|| ','  || Box_Xmax || '))::geometry,27582)';
            execute l_va_requete into The_geom1 ;
            insert into acl_admin.tmp_case1 values (Ymin,Ymax,Xmin,Xmax,The_geom1);

j'affiche cadastre.loc_paca_corse_mars
et tmp_case1 mais la box n'est pas superposé sur ma région paca  comment faire ?

peut etre il me faudrer une requete (l_va_requete )  mais aussi qui me recupere les 4
Box_Xmin,Box_Ymax,Box_Xmax,Box_Ymin  mais avec   la projection en 27582 ?

vous savez ? merci !

Hors ligne

 

#11 Fri 21 May 2010 16:31

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

Re: creer the_geom

michCarto a écrit:

j'ai un soucis avec cette requete, pourtant ma table loc_paca_corse_mars est en 27582
   
--// on recupere les coordonnées minimales et maximales de la zone du departement du 13
    l_va_requete := 'SELECT Xmin(alias.extent),Ymin(alias.extent),Xmax(alias.extent),
    Ymax(alias.extent)FROM
        (SELECT Extent(the_geom) FROM cadastre.loc_paca_corse_mars where id_dep=13 ) AS alias;';
         execute l_va_requete into Box_Xmin,Box_Ymax,Box_Xmax,Box_Ymin ;

puis je creer un the_geom que j'insere dans tmp_case1 (pour verifier )

l_va_requete :=
            'select setsrid(st_makeBox2d(
            st_makepoint(' || Box_Ymin|| ','  || Box_Xmin || '),
            st_makepoint(' || Box_Ymax|| ','  || Box_Xmax || '))::geometry,27582)';
            execute l_va_requete into The_geom1 ;
            insert into acl_admin.tmp_case1 values (Ymin,Ymax,Xmin,Xmax,The_geom1);

j'affiche cadastre.loc_paca_corse_mars
et tmp_case1 mais la box n'est pas superposé sur ma région paca  comment faire ?

peut etre il me faudrer une requete (l_va_requete )  mais aussi qui me recupere les 4
Box_Xmin,Box_Ymax,Box_Xmax,Box_Ymin  mais avec   la projection en 27582 ?

vous savez ? merci !


Elle est placée ou cette boite issue de la requete ? loin de la ou elle devrait etre ?

Si les coordonnées issues de la table loc_paca_corse sont bien en 27582, il n'est pas necessaire de les transformer : le polygone crée sera bien en 27582.

Sinon, si la geometrie a insérer dans tmp_case1 n'est pas réutilisée, vous pouvez directement faire la requete insert, sans passer par la requete intermediaire qui fabrique the_geom1.

Qqch comme:

insert into acl_admin.tmp_case1 select xmin, ymin, .... setSrid(....);

Vous auriez une capture du resultat ?

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB