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

Rencontres QGIS 2025

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

#1 Thu 16 April 2009 11:39

depdep
Participant actif
Date d'inscription: 24 Sep 2006
Messages: 74

mise à jour d'un champ par le nom de la table MapInfo

Bonjour !

Voilà ça fait un moment que je cherche sur les forum et que je demande autour de moi, en vain...

J'aimerais, de façon automatique, renseigner le champ d'une table par le biais du nom de cette table.

Par exemple, j'ai une table de courbes de niveau caractérisée par un champ unique "blank" (char,1) vide. Les objets de la table ne portent donc aucune information d'altitude. Par contre, cette information se trouve dans l'intitulé de la table. (280.tab par exemple).

Quelqu'un connaît-il donc le moyen :

1 --> modifier la structure de plusieurs tables en une seule opération en ajoutant un champ "altitude"?

2 --> de renseigner automatiquement ce champ "altitude" par le nom de la table en question ?

Dans le cas présent, j'ai x tables qui contiennent des courbes de niveau. Chaque table contient uniquement des courbes de même altitude. J'aimerais attribuer à chaque courbe l'altitude qui lui est propre puis créer une table unique regroupant l'ensemble des courbes de niveau.

Je suis fréquemment confrontée à ce problème avec des fichiers de type POS ou PLU. Je récupère des dwg que je traduis en MapInfo. Je me retrouve alors avec des tables MI sans données attributaires, mais avec le nom de la zone POS ou PLU dans l'intitulé de la table.

Comme il y a souvent beaucoup de couches dans les documents d'urbanisme, je cherche à automatiser les taches "attribution du nom de zone aux objets" et "assemblage des tables en une seule".

Pouvez-vous m'aider ?

Gaëlle

Hors ligne

 

#2 Thu 16 April 2009 12:43

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

Re: mise à jour d'un champ par le nom de la table MapInfo

Bonjour
Le générateur de script évoqué par Spacejo dans ce sujet peut être une piste
Sinon vous pouvez utiliser la fenêtre MapBasic (FMB, ouverte par le menu Options) :
- vous préparez un fichier texte (attention au _ qui précède les noms de table commençant par un chiffre)
Alter Table "_xxx" (Add altitude Integer) Update _xxx Set altitude = xxx Commit Table _xxx
... jusqu'à
Alter Table "_zzz" (Add altitude Integer) Update _zzz Set altitude = zzz Commit Table _zzz
- vous ouvrez toutes vos tables
- vous copiez les N lignes préparées dans la FMB, vous les sélectionnez toutes puis 'enter'
Pour obtenir la liste de vos tables dans le répertoire "bidule", une bonne vieille commande DOS:
Dir C:\mon_chemin\mon_repertoire\*.TAB /O-D /B >C:\temp\liste_tab.rep
va créer dans C:\temp un fichier texte liste_tab.rep qui liste ligne à ligne les TAB contenus dans C:\mon_chemin\mon_repertoire\

Hors ligne

 

#3 Thu 16 April 2009 12:51

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

Re: mise à jour d'un champ par le nom de la table MapInfo

Salut Maurice je dirais même plus:
Il existe aussi ce sujet : http://georezo.net/forum/viewtopic.php? … 56#p135456
Maintenant dans l'aide de ce petit logiciel il y a aussi ---->Exemples d'utilisation ---> Mapinfo
A+
Joël

Hors ligne

 

#4 Wed 29 April 2009 09:10

depdep
Participant actif
Date d'inscription: 24 Sep 2006
Messages: 74

Re: mise à jour d'un champ par le nom de la table MapInfo

Bonjour !

Tout d'abord merci de vos réponses !

Je n'ai pas encore testé les pistes que vous m'avez donnée car Virginie GIRAULT m'a transmis un MBX qui comble mes attentes ;-).

Très facile à utiliser, cet outil permet d'assembler plusieurs tables de structures différentes. La table en sortie comporte notamment un champ dans lequel sont stockés les noms de tables en entrée.

Virginie étant d'accord pour le mettre à disposition de tous, vous le trouverez en pièce jointe.

Encore merci  à tous !

Gaëlle


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

Hors ligne

 

#5 Wed 29 April 2009 16:29

Betula
Participant occasionnel
Date d'inscription: 18 Sep 2005
Messages: 20

Re: mise à jour d'un champ par le nom de la table MapInfo

Bonjour,
Il est possible d'utiliser toutes les fonctions mapbasic dans une expression de mise à jour, pas seulement celles qui sont présentes dans la liste déroulante des fonctions que propose l'assistant de Mapinfo.
Pour obtenir le nom de la table avec le chemin complet on utilise la fonction TableInfo de la façon suivante :

Code:

Update NomTable Set NomChamp = Tableinfo("NomTable",19)

Le nombre 19 est l'équivalent de la constante TAB_INFO_TABFILE, le nombre 1 correspond à TAB_INFO_NAME qui retourne le nom de la table, etc.

Il suffit de consulter l'aide de Mabsic pour connaitre la syntaxe des fonctions et d'ouvrir le fichier Mapbasic.def avec le bloc note pour connaitre la valeur numérique des constantes.

Les fonctions ColumnInfo, ObjectGeography sont souvent très utiles. Il y en a plusieurs autres.

Salutations


BeTuLa

Hors ligne

 

Pied de page des forums

Powered by FluxBB