banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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 sad

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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 sad , ce qui fait que se serait pas du tout fameux a la main!!!
Je m'y connais pas trop en programation sad 
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 sad). 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" smile

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 smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB