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

Printemps des cartes 2024

#1 Mon 19 April 2010 10:15

simon17
Juste Inscrit !
Date d'inscription: 19 Apr 2010
Messages: 7

Comment créer plusieurs tables à partir d'une première

Bonjour,
Je travaille sur une table ayant plusieurs champs dont un champs commune.
Chaque ligne de cette table correspond à une parcelle agricole.
Je travaille sur plusieurs dizaine de communes rassemblée dans une table unique.
Je souhaiterais travailler à l'échelle d'une seule commune.
Donc pour me facilité le travail, j'aimerais "découper" ma table d'origine en plusieurs tables (une table par commune) ayant les memes champs et memes infos (je ne veux pas faire de dissolve).
Je voudrais donc faire une sorte de discrimination de ma couche par le champs 'commune' pour obtenir ce résultat, et m'éviter ainsi de faire chaque communes les unes après les autres.
Ainsi, l'ensemble de ces tables obtenues à l'échelle de la commune, une fois réunies formeraient la table d'origine.
Je ne sais pas si une telle manip existe.
Merci d'avance pour vos réponses.

Hors ligne

 

#2 Mon 19 April 2010 10:21

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Comment créer plusieurs tables à partir d'une première

Salut et bienvenue,

Pourquoi ne pas faire des sélections successives pour chaque Communes puis de les enregistrer.
On peut faire cette opération en batch.
La requète -->

Code:

Select * from Ta_Table_Origine where NomCommune like "BlaBla" into SelectionBlaBla

Puis enregistrement de celle ci --> Commit Table SelectionBlaBla
Voici un outil pour faire en automatique toutes tes requètes
---> http://georezo.net/forum/viewtopic.php?id=66735
A+
Joël

Hors ligne

 

#3 Mon 19 April 2010 13:58

simon17
Juste Inscrit !
Date d'inscription: 19 Apr 2010
Messages: 7

Re: Comment créer plusieurs tables à partir d'une première

Merci pour ta réponse. C'est exactement la solution à mon problème.
A bientôt

Hors ligne

 

#4 Thu 17 June 2010 17:48

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

Re: Comment créer plusieurs tables à partir d'une première

Bonjour, j'ai un problème qui est dans la même veine tout en étant légèrement différent.

Je m'explique, je cherche, tout comme simon17, à créer des couches contenant un seul type de donnés à partir d'une couche extérieure.
Je souhaite que ma macrocommande demande à l'utilisateur où il souhaite sauvegarder le résultat. Comme le chemin d'accès peut changer, je souhaites prendre l'information acquis par le FileSaveAsDLG et la placer dans deux variables (TableEPath et TableE; String) que j'utiliserais par la suite pour faire mes autres commandes.

Voici la section du code, en question, de ma macro:

Code:

...
--> le but de cette section est d'effacer les entitées qui sont
 communes au deux tables.<--
 Select * From TableB where (TableB+".UNIQUEID")= (TableD+".UNIQUEID") into NotCanHwyRds
'delete object from NotCanHwyRds
 delete from NotCanHwyRds
 close table NotCanHwyRds
 Close table TableD 

--> le but de cette section est de sauvegarder les entitées restantes
de la TableB dans une autre table dont le nom et le chemin d'accès sera 
choisit par l'utilisateur lors de l'exécution de la macro.<--
 Select * from TableB into selection
 |-Le problème est ici --> commit table selection as (FileSaveAsDlg("S:\MapInfo\Maps\Canada\MergedMaps\","DMTI_CanHwyRds","TAB", "Where do you want to save the DMTI secondary roads layer?"))
 TableEPath = TableInfo(|--et ici-->0<--,TAB_INFO_tabfile)

 open table TableEPath as TableE
...

Le problème est que les variables prennet les valeurs des tables NotCanHwyRds ou TableB...
J'ai tenté d'outrepasser,"override", se problème en créant moi-même une boîte de dialogue qui demandait les renseigments nécessaires à l'utilisateur sauf qu'encore une fois, je rencontre des problèmes.

Code:

 ...
dim tempo as string

dialog
 Title "Where do you want to save the DMTI secondary roads layer?"
    
 Control StaticText
   Title "Path to the directory: "
   Position 10,10

 Control EditText
   value "Browse to the folder..."  <-- Je ne sais pas comment
   into tempo                       <-- faire en sorte que l'utilisateur 
   ID 2                             <-- "navigue" jusqu'au dossier où 
   Position 10,20                   <-- il veut placer le résultat. 

    
    

 Control StaticText 
   Title "Name of the future file: "
   Position 10,30

 Control EditText
   value "Enter the name here"
   Into TableE
   ID 3
   Position 10,40

 Control OKButton
   position 10,50

 TableEPath= pathtodirectory$(tempo)

...

Je sais que c'est un grand message et j'en suis désolé.
Merci d'avance pour l'aide ainsi que pour les pistes de solutions que vous pourrez m'offrir.

Ken

J'ai ouiblié de mentionné que l'erreur initiale se produit dans MapInfo et non, dans MapBasic.

Dernière modification par CartoKen (Thu 17 June 2010 18:26)


Ken aka CartoKen

Hors ligne

 

#5 Thu 17 June 2010 18:12

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

Re: Comment créer plusieurs tables à partir d'une première

Bonjour
Si vous êtes pressé, l'outil existe déjà... (pensez à consulter la rubrique "Ressources->Téléchargements->MapInfo du site !!)

Hors ligne

 

#6 Thu 17 June 2010 18:22

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

Re: Comment créer plusieurs tables à partir d'une première

Merci,
mais ce n'est pas tout à fait cela que je cherche à produire... Le problème ne réside pas dans la séparation des tables mais bien dans la sauvgarde de celles-ci. L'outil que vous me proposez va automatiquement sauvagrder la couche créée dans le même répertoire que la couche initiale alors que le but recherché par ma macro est justement de laisser la possibilitée à l'utilisateur de changer de répertoire et de nom pour la table.

J'ai modifié mon message original afin de montrer ou est mon problème relativement à ma sauvegarde modifiable. La commande TableE = TableInfo(0,TAB_INFO_NAME) et plus particulièrement le 0, est la source du problème car le 0, selon les guides de références, devrait prendre la valeur de la dernière table que l'on modifie. Dans mon cas, il prend la valeur de mon avant-dernière table ou encore celle d'avant.

En espérant que ce soit un peu plus claire comme demande, et comme résultat que je cherche à obtenir.
Ken

Dernière modification par CartoKen (Thu 17 June 2010 18:35)


Ken aka CartoKen

Hors ligne

 

#7 Thu 17 June 2010 19:33

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

Re: Comment créer plusieurs tables à partir d'une première

Bonjour
Pour le choix d'un répertoire, compilez ces sujets (et leurs pièces jointes):
http://georezo.net/forum/viewtopic.php?id=49928
http://georezo.net/forum/viewtopic.php?id=52270
http://georezo.net/forum/viewtopic.php?id=57758
Pour le reste du code...c'est trop dur de travailler sur des petits bouts sad Pourriez vous mettre la totalité: le diable se cachant dans les détails, c'est la seule façon de voir pourquoi un code "cloche"!!

Hors ligne

 

#8 Fri 18 June 2010 22:49

CartoKen
Juste Inscrit !
Lieu: Gatineau
Date d'inscription: 6 Feb 2010
Messages: 7

Re: Comment créer plusieurs tables à partir d'une première

Merci pour les pistes de solutions; elles m'ont permis de trouver une façon d'obtenir le résultat que je voulais. Je mets le code obtenu à disposition si quelqu'un cherche à obtenir le même résultat soit de permetttre à l'usager de la macro de sauvegarder le résultat où il souhaite et que par la suite, la macrocommande puisse continuer son exécution normal.

Code:

    Global TableEPath,TableEDirectory,TableE as string

...
    TableEPath= FileSaveAsDlg("S:\MapInfo\Maps\Canada\MergedMaps\","DMTI_CanHwyRds","TAB", "Where do you want to save the DMTI secondary roads layer?")
    TableEDirectory = pathtofilename$(TableEPath)
    TableE = Mid$(TableEDirectory,1,(instr(1,TableEDirectory,".")-1))

    Select * from TableB into selection
    commit table selection as TableEPath
...

Le chemin d'accès (TableEPath) ainsi produit me permet de poursuivre l'analyse même si l'utilisateur décide de changer l'emplacement où il veut sauvegarder ses fichiers. De plus, le chemin d'accès me laisse la possibilité d'extraire le nom du fichier (TableE) sous lequel l'utilisateur l'a sauvegardé. Ce qui m'est utile pour des opérations subséquentes.

Donc, encore merci pour votre aide. Dès que c'est fini et si ça m'est possible de vous en faire part (car c'est une macro pour fin gouvernementale), je vous laisserai le .MB .


Ken aka CartoKen

Hors ligne

 

Pied de page des forums

Powered by FluxBB