Bonjour,

J'ai une table contenant des objets correspondant à des pays. Ils ont donc une géométries et un attribut donnant le code du pays ('FR' pour France). J'ai des pays qui sont consitués de 2 objets et je voudrais les fusionner pour n'avoir qu'un seul objet par pays. Dans ce cas, ils ont le même code mais un autre attribut est de valeur différente (rg_id).

J'ai créé une table temporaire contenant le code du pays et le count. J'ai ensuite enlevé les pays qui étaient "bien formés" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CREATE TABLE PAYS_TEMP AS SELECT COUNT(CODE) AS COUNT, CODE FROM PAYS GROUP BY CODE;
DELETE FROM PAYS_TEMP WHERE COUNT < 2;
J'ai testé une première fonction SDO_AGGR_UNION :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(a.geom,0.5)) FROM PAYS a WHERE a.CODE IN (SELECT CODE FROM PAYS_TEMP GROUP BY CODE);
J'ai une erreur :
ORA-13000: dimension number is out of range
ORA-06512: at "MDSYS.MD", line 1723
ORA-06512: at "MDSYS.MDERR", line 8
ORA-06512: at "MDSYS.SDO_CONSTRUCT_DIM_ARRAY", line 27
ORA-06512: at "MDSYS.AGGRUNION", line 20
J'ai testé une autre fonction SDO_GEOM.SDO_UNION :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
SELECT SDO_GEOM.SDO_UNION(a.geom,m.diminfo,b.geom,m.diminfo) 
FROM PAYS a, PAYS b, USER_SDO_GEOM_METADATA m 
WHERE m.table_name='PAYS' 
AND m.column_name='GEOM' 
AND a.CODE = b.CODE 
AND a.RG_ID != b.RG_ID;
Et là j'ai l'erreur :
ORA13050: unable to construct spatial object
ORA-06512: at "MDSYS.SDO_3GL", line 715
ORA-06512; at "MDSYS.SDO_GEOM", line 2968
Si quelqu'un connaissant cette fonction peut m'aider...
Merci!

WwAvE