Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

GEODATA DAYS 2024

#1 Fri 19 October 2007 20:11

nathM
Participant occasionnel
Date d'inscription: 13 Oct 2005
Messages: 10

Union de deux tables

Bonjour,

Je travaille habituellement avec Arcgis mais doit effectuer une analyse sur Mapinfo 7.5. Il me faudrait l'équivalent de la fonction "union" pour croiser deux tables. J'ai bien trouvé le mbx overlay qui effectue l'équivalent d'"intersect" mais rien qui se rapproche de la fonction union.
Quelqu'un peut-il m'aider ?

Merci d'avance.

Hors ligne

 

#2 Sat 20 October 2007 00:37

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Union de deux tables

Bonjour
Vous trouverez ici même un outil qui fait l'union ou l'intersection de tables et que j'avais mis à disposition de Georezo
Bons tests ...et n'hésitez pas à faire éventuellement des remarques

Hors ligne

 

#3 Tue 10 June 2008 16:46

Laaris
Participant occasionnel
Date d'inscription: 30 Apr 2008
Messages: 12

Re: Union de deux tables

Bonjour,

Je voudrais fusionner six tables ayant exactement la même structure. Chaque table correspondant aux données d'un département, je voudrais obtenir une table regroupant toutes les données de la région.

J'ai voulu utiliser l'outil décrit ci-dessus, mais il m'affiche qu'elles sont toutes non-traitables.
L'aide indique que certains types de tables ne sont pas traitées. J'imagine que les miennes en font malheureusement partie (bien que je sois incapable de dire de quel type sont mes tables).

En SQL une série d'instructions UNION suffiraient, n'y a-t-il pas un moyen de le faire sous MapInfo?

Merci d'avance.

Hors ligne

 

#4 Tue 10 June 2008 17:01

Nicolas Szlapka
Participant actif
Lieu: NPDC
Date d'inscription: 20 Dec 2006
Messages: 107

Re: Union de deux tables

Bonjour.

Ce que je fais pour assembler des Tables de même structure, c'est un léger bidouillage :
1) Enregistrer une Table sous un autre nom (ex: ZoneGlobale)
Vous pouvez prendre la Table correspondant au premier département dans l'ordre croissant.

2) Ouvrir cette nouvelle Table dans MapInfo

3) Menu Ajouter --> Table
Ajoutez la 2e Table (2e département dans l'ordre croissant) à la Table ZoneGlobale

4) Idem pour les départements suivants

5) Enregistrer la Table ZoneGlobale (cliquer sur l'icone de la "Disquette jaune")

RAPPEL : à faire si toutes les Tables ont bien la même structure


Nicolas

Hors ligne

 

#5 Tue 10 June 2008 17:02

Marc-André
Participant assidu
Lieu: Montréal
Date d'inscription: 30 Sep 2005
Messages: 688

Re: Union de deux tables

Bonjour,

Essayez cet autre outil: «Combine tables» disponible ici:
http://geomatique-nt.unige.ch/gumi/outils.htm#ta

Hors ligne

 

#6 Tue 10 June 2008 17:08

Laaris
Participant occasionnel
Date d'inscription: 30 Apr 2008
Messages: 12

Re: Union de deux tables

Merci de votre réponse.

J'ai enregistré la table du premier département sous un autre nom, mais ensuite la fonction Ajouter du menu Table n'est pas disponible.

J'imagine que cela vient aussi du type de mes tables mais je ne suis toujours pas capable de dire quel est ce type. Tout ce que je sais (et qui m'intrigue même si on m'a dit que c'était normal et qui donc me fait dire que c'est peut-être de là que vient le problème) c'est qu'elles permettent d'afficher des points, mais que les coordonnées de ces points ne sont pas dans les tables.

EDIT: je n'avais pas lu le second message, je vais essayer cet outil, merci

Dernière modification par Laaris (Tue 10 June 2008 17:10)

Hors ligne

 

#7 Tue 10 June 2008 17:10

Nicolas Szlapka
Participant actif
Lieu: NPDC
Date d'inscription: 20 Dec 2006
Messages: 107

Re: Union de deux tables

Bon, et bien je suis passé une minute trop tôt...
J'ai l'air de quoi maintenant, face à cet outil ? big_smile
Vous pouvez l'utiliser Laaris, ça fonctionne bien.
Merci Marc-André !

modif' pour le message #6 :
si Ajouter est grisé, peut-être que vous n'avez qu'une seule Table ouverte...
si les autres Tables (pour chaque département) sont ouvertes, je ne vois pas trop d'où viendrait le problème.

Dernière modification par Nicolas Szlapka (Tue 10 June 2008 17:14)


Nicolas

Hors ligne

 

#8 Tue 10 June 2008 17:10

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Union de deux tables

Laaris a écrit:

'ai voulu utiliser l'outil décrit ci-dessus, mais il m'affiche qu'elles sont toutes non-traitables.


L'outil concerne des tables de polygones
Ca ne doit pas être votre cas
De toute façon votre problématique est l'ajout de table, pas la détermination de leur intersection/union (les départements - normalement - ne se chevauchent pas tongue)

Hors ligne

 

#9 Tue 10 June 2008 17:19

Laaris
Participant occasionnel
Date d'inscription: 30 Apr 2008
Messages: 12

Re: Union de deux tables

L'outil de Marc-André fonctionne parfaitement. Merci à tous. smile

Hors ligne

 

#10 Tue 10 June 2008 17:19

Thomas
Participant actif
Lieu: Rennes
Date d'inscription: 5 Sep 2005
Messages: 71

Re: Union de deux tables

Pour ma part, j'utilise Ajout.mbx.
Très utile quand le nombre de table est un peu conséquent...


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#11 Wed 11 June 2008 09:54

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: Union de deux tables

Maurice a écrit:

Bonjour
Vous trouverez ici même un outil qui fait l'union ou l'intersection de tables et que j'avais mis à disposition de Georezo
Bons tests ...et n'hésitez pas à faire éventuellement des remarques


Bonjour j'ai tetser ce programme il est tres pratique malgres le fait que je trouve que la navigation (le fait de clicker sur stop est peu intuitif). J'aurais une question plus axé programmation que éfficacité sur le sujet au risque d'etre un peu HS. Comment faire pour pouvoir activer une ouverture de table dans le popupmenu?


Bonne journée a tous

Hors ligne

 

#12 Wed 11 June 2008 11:33

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Union de deux tables

Fabius a écrit:

...le fait de clicker sur stop est peu intuitif


D'où les explications en tête de la boite de dialogue smile. Mais on peut faire mieux !!

Fabius a écrit:

Comment...activer une ouverture de table dans le popupmenu?


Dans un programme MB ? Prévoir une sous procédure (un "handler", appelé par un calling pop-handler) qui lit le choix fait dans le PopupMenu (par un ReadControlValue) et ouvre la table (Open Table...)

Hors ligne

 

#13 Wed 11 June 2008 12:22

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: Union de deux tables

oui c'est vrai, mais je pense que le seul défaut (il faut bien en trouver) de ce programme c'est la navigation qui en découle.

Pour la question que je posais oui c'est bien pour un programme MB, ca m'interesserait de pouvoir utiliser ceci dans un ou plusieurs de mes programmes. L'explication me parle globalement je vais m'y essayer

Hors ligne

 

#14 Thu 12 June 2008 10:18

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: Union de deux tables

Bonjour, je reviens vers vous puisque je bloque dans ma tache, auriez vous un bout de code a me re transmettre que je pourrais ensuite adpater?


Merci

Hors ligne

 

#15 Thu 12 June 2008 11:28

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Union de deux tables

Dialog
...
Control PopupMenu
  title (table1;table2;table3)
  calling Popup_handler
ID 1
...
Control OKButton
  ID 6
Control CancelButton
  ID 7
'---------------------------------------
Sub Popup_handler
dim z as string
z=readcontrolvalue(1)
    If z = "table1" then
     Open Table "C:\temp\table1.tab"
    ElseIf z = "table2" then
     Open Table "D:\machin\truc\table2.tab"
    Else
     Open Table "Z:\bidule\table3.tab"
    End If
End sub


ps:

Fabius a écrit:

...que je pourrais ensuite adpater?


L'expression exacte est "ad patres" tongue

Hors ligne

 

#16 Thu 12 June 2008 11:56

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: Union de deux tables

Oui vous avez raison mais pour moi le latin c'est un peu du chinois quand meme big_smile


Merci pour votre code, cependant je voulais l'adapter au mien. Le pop menu de mon code trouve ses titres dans le nom des tables ouvertes:

Control PopUpMenu Position 110,10 width 90 Height 10 id 31 Title from Variable NomTable Value A calling actiondbl


Sub Actiondbl
nb = NumTables()
ReDim NomTable(nb)
    For i =1 to nb
      NomTable(i) = TableInfo(i,Tab_Info_Name)
    Next
End Sub


J'aurais aimé rajouter la possibilité d'ouvrir une table si jamais l'utilisateur ne l'a pas ouverte

Hors ligne

 

#17 Thu 12 June 2008 12:40

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Union de deux tables

L'organisation ne va pas...
Le contenu de NomTable() doit être défini (et pas besoin d'une procédure pour ça) avant le Dialog qui comprend le PopupMenu et celui-ci doit appeler (par calling) une sous procédure pour ouvrir les tables choisies
Pour le dernier point, il suffit de prévoir un premiet item dans NomTable() qui es "table non ouverte" et dans la sous procédure pour ouvrir les tables, le choix de ce premier item provoque l'ouverture d'un FileOpenDlg pour la choisir puis d'un Open table...pour l'ouvrir

Hors ligne

 

#18 Thu 12 June 2008 14:47

Fabius
Participant actif
Date d'inscription: 19 Mar 2008
Messages: 130

Re: Union de deux tables

Je ne suis pas convaincu, mon programme me permet de voir apparaitre dans le popupmenu TOUTES les tables ouvertes et donc permet facillement de choisir la table qui nous interesse, celles ci varient a chaque utilisation du programme donc impossible de les definir avant.
La fin de votre explication me parrait logique, il suffirait d'ajouter un choix qui serait "ouvrir une autre table", pour l'ouvertur du file opendlg pas de pb.

Le probleme résidepour moi en deux points :
-comment garder l'affichage des tables ouvertes ?
-comment rajouter un choix a la liste?

Hors ligne

 

#19 Thu 12 June 2008 22:31

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Union de deux tables

On s'est mal compris...
Je suppose que vous remplissez NomTable() dans le programme mais avant le PopupMenu (c'est peut être ça votre value A ??)
Sinon ce PopupMenu s'ouvrira vide...
Ma suggestion d'organisation et de code serait:

Sub mon_dialogue
Dim nb,i As Integer
nb = NumTables()
ReDim NomTable(nb+1)
y=0
NomTable(1)="table non ouverte"
    For i =2 to nb+1
      NomTable(i) = TableInfo(i-1,1)
    Next
Dialog
Control PopupMenu
  title from variable NomTable
  calling Popup_handler
  Into ma_variable
  ID 1
Control OKButton
  ID 6
Control CancelButton
  ID 7
End sub
'---------------------------------------
Sub Popup_handler
dim e_filename as string
dim z as integer
z=readcontrolvalue(1)
    If z = 1 then
        e_filename=FileOpenDlg( "C:\Temp\", "", "TAB", "nouvelle table" )
        open table e_filename
        redim NomTable(ubound(NomTable)+1)
        y=ubound(NomTable)
        NomTable(y)=TableInfo(PathToTableName$(e_filename),1)
      Alter control 1 title from variable NomTable
      note "à partir de là, faire ce que je veux...un call ma_procedure par exemple"
    Else
      note "à partir de là, faire ce que je veux...un call ma_procedure par exemple"
    End If
End sub


nb: si z doit être réutilisé plus loin, le définir au niveau supérieur (avant le Sub Main)
Sinon on ne pourra utiliser que ma_variable (définie aussi avant le Main) après un OK dans le dialogue

Hors ligne

 

Pied de page des forums

Powered by FluxBB