#1 Tue 24 February 2009 10:43
- nat43
- Participant actif
- Date d'inscription: 13 Mar 2008
- Messages: 94
Oracle - Transformation de coordonnées.
Bonjour,
J'ai une table contenant des polygones sous Oracle possédant un champ géométrie, un champ x, un champ y. J'utilise les champs x et y pour créer une vue de label-text.
J'ai intégré des données Lambert 1 dans cette table, et je souhaite transformer mes données en Lambert 93.
J'ai donc mis à jour mon champ géométrie avec le script suivant :
Code:
update SCHEMA.NOMTABLE c set c.geometry = (select SDO_CS.TRANSFORM(a.GEOMETRY, b.DIMINFO, 141012) from SCHEMA.NOMTABLE a, user_sdo_geom_metadata b where b.table_name = 'NOMTABLE' and b.column_name = 'GEOMETRY' and a.entityid = c.entityid) where c.geometry.sdo_srid = 41013;
Ensuite, pour mettre à jour les champs x et y, j'ai lancé un script du type :
Code:
update SCHEMA.NOMTABLE a set a.LABX = (select result.GEOMETRIE.SDO_POINT.X from (select (MDSYS.SDO_CS.TRANSFORM(MDSYS.SDO_GEOMETRY(2001, 41013, MDSYS.SDO_POINT_TYPE(p.LABX,p.LABY,0), NULL, NULL),141012)) GEOMETRIE, p.entityid ENTITYID from SCHEMA.NOMTABLE p) result where result.entityid = a.entityid) where exists (select result.GEOMETRIE.SDO_POINT.X from (select (MDSYS.SDO_CS.TRANSFORM(MDSYS.SDO_GEOMETRY(2001, 41013, MDSYS.SDO_POINT_TYPE(p.LABX,p.LABY,0), NULL, NULL),141012)) GEOMETRIE, p.entityid ENTITYID from SCHEMA.NOMTABLE p) result where result.entityid = a.entityid and a.laby < 500000);
Le seul soucis est que lorsque je regarde mes données dans Oracle déjà, les champs x et y ne se situent plus à l'intérieur du polygone. Et ça confirme avec l'affichage.
J'ai vérifié mes données sources, et en Lambert 1, tout est cohérent.
Est ce que quelqu'un a déjà eu à faire ce type de transformation ? Ce sont mes scripts qui ont un problème ?
Merci pour votre aide.
NT
Hors ligne
#2 Tue 24 February 2009 11:38
- François
- Membre
- Lieu: Grenoble
- Date d'inscription: 4 Apr 2007
- Messages: 257
Re: Oracle - Transformation de coordonnées.
Bonjour,
Avez vous vérifié que la clause where de votre script remonte bien des valeurs ?
François
Hors ligne
#3 Tue 24 February 2009 11:42
- nat43
- Participant actif
- Date d'inscription: 13 Mar 2008
- Messages: 94
Re: Oracle - Transformation de coordonnées.
Oui, oui ...
La clause WHERE est logique. La transformation s'effectue bien, mais pas correctement, pas comme je le souhaite.
Hors ligne
#4 Wed 25 February 2009 09:17
- nat43
- Participant actif
- Date d'inscription: 13 Mar 2008
- Messages: 94
Re: Oracle - Transformation de coordonnées.
J'ai opté pour autre solution pour régler mon problème ... mais bon, le sujet reste peut-être actif pour d'autre qui se poserait la même question.
Bonne journée.
Hors ligne
#5 Tue 21 April 2009 20:30
- agodfrin
- Participant occasionnel
- Lieu: Sophia Antipolis
- Date d'inscription: 4 Jan 2006
- Messages: 13
Re: Oracle - Transformation de coordonnées.
La syntaxe initiale est bien compliquée. Il suffit de faire ceci:
update schema.nomtable
set c.geometry = sdo_cs.transform(geometry, 141012)
where c.geometry.sdo_srid = 41013;
Quant à la seconde requète, elle me semble incorrecte car elle ne fait que remplacer labX par le X résultant de la transformation, alors que labY reste inchangée, ce qui expliquerait l'erreur que vous observez - mais c'est peut-être simplement une erreur dans le "copier-coller" sur le forum.
On peut l'écrire de manière plus simple comme ceci:
update schema.nomtable set
labx = sdo_cs.transform (
sdo_geometry(2001, 41013, sdo_point_type(labx, laby, null), null, null), 141012
).sdo_point.x,
laby = sdo_cs.transform (
sdo_geometry(2001, 41013, sdo_point_type(labx, laby, null), null, null), 141012
).sdo_point.y
where laby < 500000;
Il faudrait aussi vérifier que la définition de la projection 141012 pour le lambert 93 est bien correcte. Quelle est votre version de la base Oracle ?
Albert Godfrind
Oracle
Dernière modification par agodfrin (Tue 21 April 2009 20:34)
Hors ligne
#6 Tue 26 May 2009 16:53
- nat43
- Participant actif
- Date d'inscription: 13 Mar 2008
- Messages: 94
Re: Oracle - Transformation de coordonnées.
Bonjour,
Merci pour votre réponse. Je n'avais pas vu que vous aviez répondu. Du coup, j'avais opté pour une autre solution.
Cependant, le Lambert 93 est bien renseigné, je possède une version 10g2 de Oracle. Je dirai même que le script de mise à jour de ce srid vient de vous.
J'aurai certainement à refaire ce genre de traitement à l'avenir, donc je garde votre post sous le coude et vous tiens au courant dès que je m'y remet dedans.
Merci,
Hors ligne