Fusion des couches

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Fusion des couches

Insaf
Bonjour,

Pour pouvoir fusionner 2 couches ensemble, il faut qu'elles ont les mêmes tables, comment peut-on supprimer un champ d'un table alors?
Merci pour ta réponse

Insaf
Reply | Threaded
Open this post in threaded view
|

Re: Fusion des couches

Gwendall Petit
Administrator
Bonjour Insaf,

Pour être certain de bien répondre à ta question, je vais juste la reformuler :
Lorsqu'on souhaite faire une jointure entre deux tables (ex :entre un shp et un dbf, ou entre deux shp) il faut un champ commun (clé primaire). Comment fait-on pour supprimer ce champ qui va apparaître en double ?
Si c'est bien cela ta question, voici ma réponse :
Quand tu fais ta requête de jointure, il suffit de dire à OrbisGIS que tu veux récupérer tous les champs, sauf celui qui va être en double.

Je vais illustrer mon propos avec cette requête :
Je souhaite faire une jointure entre les départements français (couche .shp) et des données Corinne Land Cover (fichier .dbf). La clé primaire est le code du département.
Je vais donc écrire :
create table resultat_jointure as select * from DEP_FRANCE a,  CLC_URBAN9006 b where a.CODE_DEPT = b.CODDEP;
Cette requête fonctionne bien, mais le résultat va donner un champ CODE_DEPT venant de la couche "a" et un champ CODDEP venant de la couche "b". Or ces deux champs sont identiques.
Il faut donc que tu rajoutes la condition "except" (Attention, cette fonction n'est disponible qu'à partir de la version 2.2 d'OrbisGIS)
La requête sera donc :
create table resultat_jointure as select a.*, b.*{except CODDEP} from DEP_FRANCE a,  CLC_URBAN9006 b where a.CODE_DEPT = b.CODDEP;
Ici a.*, b.*{except CODDEP} veut dire : tous les champs de la couche "a" + tous les champs de la couche "b", sauf le champ CODDEP
J'aurais très bien pu écrire :  a.*{except COD_DEPT}, b.* --> ça revenait au même

En espérant avoir répondu à ta question

Gwendall
Reply | Threaded
Open this post in threaded view
|

Re: Fusion des couches

Insaf
In reply to this post by Insaf
Non, en fait ma question est de fusionner 2 couches qui ont des champs identiques
Reply | Threaded
Open this post in threaded view
|

Re: Fusion des couches

ebocher
Administrator

So,

try this

table1 union table2;

Cheers

Erwan.

2010/2/12 Insaf [via OrbisGIS] <[hidden email]>
Non, en fait ma question est de fusionner 2 couches qui ont des champs identiques


View message @ http://n2.nabble.com/Fusion-des-couches-tp4559927p4562010.html
To start a new topic under OrbisGIS Users, email [hidden email]
To unsubscribe from OrbisGIS Users, click here.




--
Docteur en géographie,
spécialité géomatique
École Centrale de Nantes
Institut de recherche en sciences et techniques de la ville
http://www.irstv.cnrs.fr/
http://geosysin.iict.ch/irstv-trac/wiki
http://r1.bocher.free.fr
http://www.projet-sigle.org
Reply | Threaded
Open this post in threaded view
|

Re: Fusion des couches

Insaf
 Bonjour,

J'ai essayé dèja cette fonction avant de poser la question:
  -   Create Table matableresult as matable1 union matable2;

Mais j'ai reçu le message suivant: "semantic error in instruction... , caused by: cannot evaluate union: 16 constraints does not match"


Insaf
Reply | Threaded
Open this post in threaded view
|

Re: Fusion des couches

Gwendall Petit
Administrator
Bonjour Insaf,

Essaye cette requête
create table bati_union as bati_remarquable Union bati_industriel;
Je viens de la tester sur la version 2.2 et ça fonctionne.
Fais cependant bien attention ! Les champs doivent être exactement identiques (même nom, même type, ...) d'une table à l'autre.

Gwendall
Reply | Threaded
Open this post in threaded view
|

Re: Fusion des couches

Insaf

Parfait, ça marche :)
merci

Insaf