#1 Wed 06 April 2011 16:45
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Mettre à jour colonne et AreaOverlap
Bonjour à tous,
Je voulais savoir s'il était possible d'utiliser un AreaOverlap en condition pour mettre à jour une colonne d'une table grâce à une autre colonne d'une autre table.
Je m'explique : j'ai deux tables et je voudrais récupérer la valeur d'une pour la mettre dans l'autre et comme jointure, j'ai d'abord utiliser un "intersects" mais j'avais des incohérences puisque parfois un polygone était insercté par deux polygones et MapInfo ne prenait pas la valeur du bon polygone.
Du coup, je voulais compléter ma jointure avec un AreaOverlap pour calculer la surface d'intersection entre les deux objets, mais le problème c'est que je ne sais pas si c'est possible et si oui, comment l'intégrer pour que le logiciel le prenne en compte.
J'ai tenté par MapBasic mais sans succès :
Code:
Add Column "table1" (champ1 )From table2 Set To champ2 Where intersects and areaoverlap(table1.obj, table2.obj) > 1
ou
Code:
Add Column "table1" (champ1 )From table2 Set To champ2 Where areaoverlap(table1.obj, table2.obj) > 1
Si vous avez d'autres idées, merci d'avance.
Hors ligne
#2 Wed 06 April 2011 21:15
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Mettre à jour colonne et AreaOverlap
Salut,
A essayer avec la FMB:
Code:
Select * from Table1, Table2 where Table1.obj intersects Table2.obj into Resultat Update Resultat Set Table1.Champ1=Table2.Champ2 where areaoverlap(table1.obj, table2.obj) > 1
A+
Joël
Hors ligne
#3 Thu 07 April 2011 09:52
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mettre à jour colonne et AreaOverlap
Bonjour,
Merci d'avoir répondu.
J'ai fait la manip mais MapInfo me renvoie le message "Le résultat de l'expression n'est pas un nom de table ou de colonne".
Hors ligne
#4 Thu 07 April 2011 10:23
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Mettre à jour colonne et AreaOverlap
Salut,
As tu fait les modifs nécessaires pour ton cas? ---> Ta_Table, Table1.Champ1 etc...
A+
Joël
Hors ligne
#5 Thu 07 April 2011 10:41
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mettre à jour colonne et AreaOverlap
Oui, j'ai remplacé tout les Table1 et autres par mes noms de table.
La première ligne marche très bien d'ailleurs, c'est sur la deuxième que MapInfo me renvoie le message d'erreur.
En fait, maintenant j'ai enlevé dans la deuxième ligne le nom des tables dans le SET, j'ai mis directement le nom des colonnes, je pense que c'est cela qui posait problème.
Sauf que cette fois-ci, c'est le areaoverlap qui pose souci, MapInfo me renvoie ce message : "AreaOverlap : le type de l'argument 1 est non valide"
Voici la ligne de code :
Code:
Update Resultat Set champ1=champ2 where areaoverlap(table1.obj, table2.obj)>1
Je ne vois pas bien d'où cela pourrait venir...
Hors ligne
#6 Thu 07 April 2011 11:08
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Mettre à jour colonne et AreaOverlap
je ne comprends pas bien ta condition --> areaoverlap(table1.obj, table2.obj)>1
Peux tu nous donner quelques explications supplémentaires.
Je me demande si tu ne devrais pas utiliser --> ProportionOverlap( object1, object2 )
Hors ligne