#1 Thu 04 January 2007 22:40
- Roch
- Participant occasionnel
- Date d'inscription: 3 Mar 2006
- Messages: 17
Jointure Table MapInfo
Question
Comment faire la jointure sur deux champs de chaines de caracteres en se basant sur la condition:"....ayant au moins un mot commun....."
Exple:
Champ 1 de la table 1
"Hôtel de la Nouvelle Caledonie"
"hotel caledonie"
ect...
Champ 1 de la table 2
"hopital regional de la comté de Beauce
"super Hôpital de la Comté "
ect...
Je compte utiliser une requete Sql dans MapInfo 8
Merci de votre aide
Hors ligne
#2 Thu 04 January 2007 23:10
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Jointure Table MapInfo
Bonjour,
Désolé mais ni SQL ni les SIG ne gèrent la notion de "presque identique"
Même en utilisant Like, vu l'exemple donné, je ne vois rien de possible autrement qu'à la main
Hors ligne
#3 Fri 05 January 2007 03:49
- Roch
- Participant occasionnel
- Date d'inscription: 3 Mar 2006
- Messages: 17
Re: Jointure Table MapInfo
Desole, il y avait d'erreur dans les exemples precedents , voici les nouveaux
Je me permet de reprendre la question
Question
Comment faire la jointure sur deux champs de chaines de caracteres en se basant sur la condition:"....ayant au moins un mot commun....."
Exple:
Champ 1 de la table 1
"Hôtel de la Nouvelle Caledonie"
"Hopital de la comté de Bauce"
ect...
Champ 1 de la table 2
"Hotel regional de la Caledonie"
"Super Hôpital - Comté "
ect...
NB: Les accents et les tiraits sont aussi important
Je compte utiliser une requete Sql dans MapInfo 8
Si ce n'est pas possible dans MapInfo, peut on le faire avec Access et comment?
Merci de votre aide
Hors ligne
#4 Fri 05 January 2007 09:40
Re: Jointure Table MapInfo
Hello,
Je plussoie dans le sens de Maurice, ca me semble plutôt hard, je sens que ca va être coton autrement qu'à la main...
Mais, il y a un moyen de vous simplifier un peu la vie peut être : vous pouvez tenter d'extraire des mots génériques des champs et faire des colonnes de tri.
Exemple : extraction dans excel ou access des mots dérivés comme "hotel", "hôtels", "Hotel", etc..(une requête par type de bâtiment) puis placés dans une colonne "Type" ce qui permettra de trier hôtels, hôpitaux et consorts.
Ensuite, vous pouvez éliminer les mots courants : de, le, la, les, et les caractères spéciaux par exemple. Il ne devrait vous rester que la partie nominative qui devra être faite à la main de toute façon je pense.
Ex :
"Hôtel de la Nouvelle Caledonie" devient "Nouvelle Caledonie" du Type "Hôtel",
"Hotel regional de la Caledonie" devient "regional Caledonie" de type "Hôtel".
"Hopital de la comté de Bauce" devient "comté Bauce" de type "Hôpital".
"Super Hôpital de la Comté " devient "Super Comté" de type "Hôpital".
Bon courage,
Robin.
Hors ligne
#5 Fri 05 January 2007 14:02
- michel wurtz
- Participant actif
- Lieu: Neuve-Eglise
- Date d'inscription: 17 Oct 2005
- Messages: 119
Re: Jointure Table MapInfo
Je suggère de transformer les tables en MIF/MID et ensuite de travailler sur les tables attributaires MID avec un langage de programmation plus souple pour en déduire une table des correspondances possibles (le numéro de ligne du fichier MID se traduit par rowid ensuite dans MapInfo).
Je conseillerais perl, spécifiquement fait pour traiter du texte et pour lequel il existe des fonctions souvent évoluées (calcul de la proximité de textes, comparaison des mots et éclatement de textes...).
Cela devrait aussi permettre de pondérer les rapprochements (nombre de mots en commun, etc.)
Bon, c'est lourd et donc ça dépend du volume de données à traiter et de la fréquence à laquelle on veut le faire (il est plus rapide de le faire "à la main" si on a peu de données et qu'on ne doit les traiter qu'une
fois)
--
Michel Wurtz
MAP/SG/SM/SDSI/CERIT/DIG
B.P. 12668 - 31326 Castanet-Tolosan Cedex
Hors ligne
#6 Fri 05 January 2007 16:08
- Roch
- Participant occasionnel
- Date d'inscription: 3 Mar 2006
- Messages: 17
Re: Jointure Table MapInfo
Merci pour vos comtributions.
J'ai au total 10 000 donnees , ce qui fait que se serait pas du tout fameux a la main!!!
Je m'y connais pas trop en programation
Peut etre que quelqu'un pourrait me guider pour : " ...transformer les tables en MIF/MID pour ensuite travailler sur les tables attributaires MID avec une proposition de code de programmation"
Merci
Hors ligne
#7 Fri 05 January 2007 17:32
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Jointure Table MapInfo
Avec le seul MapInfo et sans export en MIF/MID ni programmation, ce qui serait bien c'est de découper chaque table en sous-table par catégories (hôtels, hôpitaux, etc...s'il n'y a pas trop de catégories ). Ca permettra de traiter des tables plus légères que 10000!
Pour la catégorie "hotel" il faut créer une colonne "hotel", en logique, et la mettre à jour avec une expression:
MA_COLONNE1 Like "%hotel%" (like n'est pas "case-sensitive"et indique si l'occurence est trouvée ou pas)
Toutes les lignes qui comportent hotel ou hôtel ou Hotel, etc.. seront à T(true), les autres à F(false) et on peut enregistrer une sélection (puis l'effacer avant de passer à la catégorie suivante)
La manip est à faire pour toutes les catégories et dans les deux tables
On peut ensuite extraire, dans chaque sous-table, les 5 derniers caractères utiles de chaque chaine, à placer dans une colonne en "caractère" à créer, en utilisant comme expression de mise à jour:
Right$(RTrim$(MA_COLONNE1), 5)
Enfin pour la jointure (entre les sous-tables "hotel1"-"hotel2", "hopital1"-"hopital2", etc...) on utilisera une condition sur la présence de ces 5 caractères de l'une dans l'autre ou réciproquement, genre :
Where InStr(1, MA_COLONNE1, texte2)<>0 Or InStr(1, MA_COLONNE2, texte1)<>0
Et le reste, ce qui ne jointe pas (et il y en aura)....à finir "à la main"
Hors ligne
#8 Sat 06 January 2007 00:28
- Damien BEAUSEIGNEUR
- Participant assidu
- Lieu: meyzieu
- Date d'inscription: 5 Sep 2005
- Messages: 425
Re: Jointure Table MapInfo
Celà revient, quelques part à du géocodage, ou les données ne sont pas parfaites, c'est l'un des gros points noir des géocodeurs. Ou chaque données peuvent servir plus ou moins. Compte tenue des temps de développement d'un géocodeur, et d'une recherche avec un pourcentage correcte de possible affectation.
Le premier travail consiste à déterminer le type type de voie, en général le premier mot et de le comparer à la liste possible des correspondances.
Et même avec ces informations, lancée par le programme, il faut une intervention humaine, si l'on veut obtenir un géocodage maximal. Les données originale sont plus ou moins bien écrites, en comparaison des données venant de la deuxième source.
Ici ce qui simplifie le travail c'est le type de batiment
Tout va dépendre de la pertinence de l'information.
En regardant les différences entre les données
"Hôtel de la Nouvelle Caledonie"
"Hotel regional de la Caledonie"
Nous voyons deux points communs, mais ce n'est certainement pas suffisant. Si nous nous limitons à ce genre d'information nous risquons fort d'avoir un peu trop de point commun
Un conseil numérote chacun de tes enregistrement des 2 tables.
Rajoute un champ numérique à la première table pour stocker le lien quelle aura avec la 2° table
Commence par la jointure avec les cas simples.
Met à jour la colonne de jointure par ce qui a été traité.
Tous les enregistrements non liés devrait toujours avoir une valeur nulle dans le champ de jointure.
Découpe par informations, comme indiqué par Maurice.
N'hésite pas à utiliser d'autres champs si ceux-ci peuvent te permettre d'affiner un choix
Tout cas traité se retrouvera alors avec un code de jointure unique.
Je ne peux que te souhaiter bonne chance pour la suite, et de la patience car, il faudra certainement finir à la main.
Hors ligne
#9 Sat 06 January 2007 02:59
- Roch
- Participant occasionnel
- Date d'inscription: 3 Mar 2006
- Messages: 17
Re: Jointure Table MapInfo
Merci beaucoup pour vos differentes aides> Je me mettrai a l'oeuvre malgre tout, en utisant vos suggestions.
Je me rejouis de ce forum, je trouve que les gens qui y sont sont tres dynamiques et sont prets a partager, malgre les milliers de km qui nous separent
Hors ligne