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 Mon 27 July 2009 09:47

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

[ORACLE] : création de point

Aloha
Je souhaite faire un select, qui me renvoit un champ SDO_GEOMETRY, d'une table dans laquelle les coordonnées de point sont enregistrées sous forme d'attributs.
J'ai essayé :

Code:

SELECT Z.GID,
             SDO_GEOMETRY('POINT ('||Z."txt1_X"' 'Z."txt1_Y"||'))'
FROM A_REIMS.P8_RZPLU Z
WHERE "txt1" is not null;

Mais celà ne fonctionne pas. Une idée ?


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#2 Mon 27 July 2009 10:52

François
Membre
Lieu: Grenoble
Date d'inscription: 4 Apr 2007
Messages: 257

Re: [ORACLE] : création de point

Bonjour,

Il me semble que le type point est un peu plus compliqué.

Le champ SDO_GEOMETRY retourné devrait avoir la forme suivante :


SDO_GEOMETRY(
      2001,
      NULL,
      SDO_POINT_TYPE(12, 14, NULL),
      NULL,
      NULL))

correspondant à l'organisation suivante pour une ligne correspondant à un point dans champ de type
SDO_GEOMETRY sous oracle :

SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES).

où :

SDO_GTYPE =2001
SDO_SRID = NULL ou renseigné
SDO_ELEM_INFO et SDO_ORDINATES sont nuls (pour un point)

Notez que le SRID et le nombre dimensions des coordonnées (2D ou 3D) doivent être en concordance avec le métadonnées du champ geometry.

Cordialement.


François

Hors ligne

 

#3 Mon 27 July 2009 11:15

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: [ORACLE] : création de point

Tout à fait d'accord, mais si l'on se référe à la documentation Oracle, il est possible de construire un point comme ceci :

The following simple example constructs a point geometry using a well-known text
string. (In a WKT, spaces separate ordinates of a vertex, and commas separate
vertices.)
SELECT SDO_GEOMETRY('POINT(-79 37)') FROM DUAL;
SDO_GEOMETRY('POINT(-7937)')(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_I
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(-79, 37, NULL), NULL, NULL)


Sont- ce mes attributs qui ne sont pas de type WKT ? En effet ils sont tous les deux en VARCHAR2.

Je souhaite donc connaître la méthode employée par quelqu'un ayant crée un point à l'aide de coordonnées stockées dans sa table.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

#4 Mon 27 July 2009 11:27

François
Membre
Lieu: Grenoble
Date d'inscription: 4 Apr 2007
Messages: 257

Re: [ORACLE] : création de point

Dans ce cas essayez eventuellement la fonction Oracle TO_NUMBER pour convertir les coordonnées dans un format numérique.

J'avoue ne jamais avoir fais cette manipulation en passant par les fonctions WKT.


François

Hors ligne

 

#5 Mon 27 July 2009 12:22

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: [ORACLE] : création de point

Voici un select qui renvoie une geom point :

select mdsys.sdo_geometry(2001, 8307, mdsys.sdo_point_type(1,3, null), null, null) from dual;

Il suffit de remplacer les coordonnées (1,3,null) par celle qui vous conviennent issues d'un select ou autre, et de vérifier que le srid est correct.

A +

Hors ligne

 

#6 Tue 14 June 2011 11:05

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: [ORACLE] : création de point

Aloha

Après vérification (et deux ans), il s'agissait du format de nombre utilisé qui s'est révélé incorrect.
J'ai donc utilisé le code suivant pour résoudre le problème.

Code:

mdsys.
          sdo_geometry (
             2001,
             NULL,
             MDSYS.SDO_POINT_TYPE (TO_NUMBER (T.TEXTE_L_X, 'FM900000.000900'), TO_NUMBER (T.TEXTE_L_Y, 'FM9000000.000900'), NULL),
             NULL,
             NULL)

Voilà.


art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.

Hors ligne

 

Pied de page des forums

Powered by FluxBB