#1 Tue 21 June 2011 14:52
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
ORACLE SPATIAL : faire une jointure à base de SDO_NN
Aloha
Voilà, je veux mettre à jour (UPDATE) une table d'après les attributs des objets les plus proches.
Or avec SDO_NN, cela ne passe pas, ou je ne maîtrise pas la syntaxe.
Quelqu'un a-t'il déjà pratiqué ?
D'avance, merci,
PS. Voici ce que j'ai essayé :
Code:
SELECT /*+ INDEX(Q_TO_CAXYZ) */ * FROM (SELECT /* leading (R_TRONCO R_ADRESS) INDEX(Q_TO_CAXYZ)*/ T .GID, T."numero", T."commune", T."date_m_a", T."z", A.CODCOM CODCOM_ADR, A.CODRUE CODRUE_ADR, A.NUM_POST, A.LIBELLE, A.GID GID_ADR, sdo_nn_distance (2) "Distance_ADR", R.GID GID_TRO, R.CODCOM CODCOM_TRO, R.CODRUE CODRUE_TRO, sdo_nn_distance (1) "Distance_TRO" FROM R_TRONCO R, TO_CAXYZ T, R_ADRESS A WHERE (SDO_NN (A.GEOMETRY, T.GEOMETRY, 'sdo_num_res=2', 2) = 'TRUE' AND SDO_NN (R.GEOMETRY, T.GEOMETRY, 'sdo_num_res=1', 1) = 'TRUE')) T WHERE T.CODCOM_ADR = T.CODCOM_TRO AND T.CODRUE_ADR = T.CODRUE_TRO;
Il s'agit de récupérer l'adresse la plus proche d'un point de canevas planimétrique mais seulement si cette adresse a le même code rivoli que le tronçon de voie le plus proche du point de canevas (pour gérer les cas de points de canevas dans les champs).
Dernière modification par Pierre (Tue 21 June 2011 15:50)
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