IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

[Spatial 10G] union géométries


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut [10G] fusion lignes
    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

  2. #2
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    J'ai trouvé un message ou la personne avait le même problème que moi. La réponse est :
    Of course when you're running the current version of Oracle you _still_ have
    to "migrate to current". This solved the problem:
    EXECUTE SDO_MIGRATE.TO_CURR*ENT('TABLENAME','GEO*M_COLUMN');
    Quelqu'un connait cette fonction SDO_MIGRATE.TO_CURR*ENT ?? Qu'est ce que ça va me faire ??

    Merci !

  3. #3
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Hello !

    Bon j'ai exécuté la dernière commande (SDO_MIGRATE) et je n'ai plus l'erreur. Maintenant j'ai simplement besoin d'une aide pour créer mes requêtes SQL... Je suis pas très douée.

    Voila un problème similaire mais sans la géométrie :

    La table : PAYS(code varchar, attr1 varchar, attr2 varchar).
    Pour 2 pays qui ont le même code, on doit concaténer leur attr1 et n'obtenir plus qu'un seul pays. Le problème est que les deux attr2 ont des valeurs différentes mais peu importe lequel on gardera.

    Pouvez vous m'aider à construire cette requête ???
    Merci beaucoup !

    WwAvE

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 55
    Par défaut
    Visiblement les geom qui étaient dans ta base oracle provenaient d'une version précédente (certainement du 9i ou du 8i), et cette fonction que tu as trouvé s'est chargée de migrer les geométries dans le "format" 10g...
    Interessant à connaitre en tout cas pour ceux qui migrent vers 10g avec une base oracle spatial.

  5. #5
    Membre confirmé Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Par défaut
    Ouais Sauf que dans certains cas (certaines requpetes) j'ai encore l'erreur. Je n'arrive pas encore à faire ce que je veux...

Discussions similaires

  1. ORACLE SPATIAL: union de géométrie
    Par H.ile dans le forum SQL
    Réponses: 0
    Dernier message: 17/09/2010, 11h20
  2. Réponses: 0
    Dernier message: 22/04/2009, 18h48
  3. Oracle Spatial 10g
    Par kilg19 dans le forum SQL
    Réponses: 1
    Dernier message: 16/06/2008, 16h38
  4. Réponses: 1
    Dernier message: 24/07/2007, 09h43
  5. Réponses: 7
    Dernier message: 03/05/2006, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo