#1 Thu 20 May 2010 16:52
- michCarto
- Participant actif
- Date d'inscription: 8 Sep 2009
- Messages: 106
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: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
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: 106
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: 1554
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 !
@+
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: 1554
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
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: 106
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: 106
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: 106
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: 1554
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
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: 106
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: 1554
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 !
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