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

Printemps des cartes 2024

#1 Fri 21 March 2008 09:38

rvmap
Participant occasionnel
Lieu: CHATENAY-MALABRY
Date d'inscription: 15 Jan 2007
Messages: 24

Diviser une table en plusieurs tables

Bonjour,

la question à peut-être déjà té posée mais je ne l'ai pas trouvé dans mes recherches.

Je cherche diviser une table en plusieurs table suivant la nature des objets pour obtenir en final une table par nature de l'objet.

je pense que ça ne doit pas âtre trop compliqué mais je bute sur le problème.

Merci

Hors ligne

 

#2 Fri 21 March 2008 10:09

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

Re: Diviser une table en plusieurs tables

Bonjour
Pas testé mais un de nos voisins a fait cet outil...

Hors ligne

 

#3 Fri 21 March 2008 10:32

rvmap
Participant occasionnel
Lieu: CHATENAY-MALABRY
Date d'inscription: 15 Jan 2007
Messages: 24

Re: Diviser une table en plusieurs tables

Merci Maurice ... je viens de tester mais c'est pas le bon outil ... enfin si ... c'est  ma demande qui est mal formulée

Ce mbx fait bien la selection par type d'objet : TYPE_TEXT, TYPE_ARC1, TYPE_LINE, TYPE_ELLIPSE ...

Je recherche comment faire pour diviser ma table par nature ... c'est à dire :
dans mon fichier occupation_des_sols.tab j'ai une colonne "nature" avec plein de natures différentes : les forêts, les bois, les vignes, les vergers, les prairies, les champs cultivés, ....
et je voudrais diviser cette table en autant de fichiers table pour avoir : foret.tab, bois.tab, ....
sans avoir à faire une selection manuelle et à chaque fois faire enregistrer la table sous.

En tout j'ai plusieurs fichiers tab à traiter dont un avec plus de 200 nature d'objets différentes ... c'est pour cette raison que j'essaie de trouver un moyen pour éviter de tout me taper à la main.

Dernière modification par rvmap (Fri 21 March 2008 10:36)

Hors ligne

 

#4 Fri 21 March 2008 11:20

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

Re: Diviser une table en plusieurs tables

Hello,

Un bon script dans la fenêtre Mapbasic devrait arranger tout ça wink

Recette : un listing de vos 200 natures d'objets différentes et en rusant sous Excel vous devriez construire 200 requêtes en un tour de main.

J'essaierais de trouver la bonne syntaxe à répéter quand j'aurai une minute wink

Robin.

Hors ligne

 

#5 Fri 21 March 2008 12:00

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

Re: Diviser une table en plusieurs tables

Si on ne le trouve pas sur la toile, on peut fabriquer très vite un petit mbx "rustique"
Mais sur un plan méthodologique, je ne suis pas sûr que ce soit "rentable" de faire d'une table "avec plus de 200 nature d'objets différente" ....plus de 200 tables
Sauf démonstration contraire, je pense qu'on peut faire avec la table unique ce que l'on ferait avec l'une des >200 tables
Mais je peux me tromper ... tongue

Hors ligne

 

#6 Fri 21 March 2008 12:57

rvmap
Participant occasionnel
Lieu: CHATENAY-MALABRY
Date d'inscription: 15 Jan 2007
Messages: 24

Re: Diviser une table en plusieurs tables

ben le but c'est ensuite de prendre les tables et de les transformer en DGN pour récupérer la partie graphqiue sous Microstation ... c'est pour cela que j'ai besoin d'avoir des tables séparées avec comme nom de table le nom du type de l'objet ... wink ... ensuite sous Microstation je prend un fichier vide, met tout mes fichiers .DGN en référence et j'importe tout pour obtenir en final un fichier DGN avec les niveaux qui auront le nom de chaque fichier en référence ... et ça c'est super rentable quant je vois les journées de taf que ça me prendrait si je devais tout faire table par table .. alors qu'au maxi ça me prendra 1 heure avec des tables séparées wink wink

Dernière modification par rvmap (Fri 21 March 2008 13:29)

Hors ligne

 

#7 Fri 21 March 2008 13:52

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

Re: Diviser une table en plusieurs tables

rvmap a écrit:

... les transformer en DGN pour récupérer la partie graphqiue sous Microstation ...


Quoi !! C'est pour un passage à la concurrence !! sad sad
ps: rien trouvé sur le web, je vous mitonne un mbx pour Pâques (ou la Trinité smile)

Hors ligne

 

#8 Fri 21 March 2008 14:53

rvmap
Participant occasionnel
Lieu: CHATENAY-MALABRY
Date d'inscription: 15 Jan 2007
Messages: 24

Re: Diviser une table en plusieurs tables

Merci Maurice ... plutôt Pâques ... à la Tinitée c'est les embouteillages maritimes en ce moment wink .. bon c'est pas vraiment la concurence car Microstation n'est pas un SIG ... c'est juste pour récupérer un fond carto à rajouter sur des données existantes et faire ce boulot proprement wink .. en tous les cas Merci d'avance

Dernière modification par rvmap (Fri 21 March 2008 14:53)

Hors ligne

 

#9 Fri 21 March 2008 15:11

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

Re: Diviser une table en plusieurs tables

Hello,

Regardez Maurice, il a trouvé le truc pour rendre les gens accroc à ses mbx tongue
Pour ceux qui veulent le faire sans MBX par la FMB, voilà la syntaxe :

Select * From MATABLE Where (MONCHAMPS = NATURE) Into NATURE
Commit Table NATURE As "G:\Monrepertoire\NATURE.TAB" TYPE NATIVE Charset "WindowsLatin1"


Il suffit avec Excel et la commande CONCATENER de reconstruire cette requête avec en colonne :
1 : Select * From MATABLE Where (MONCHAMPS =
2 : NATURE (liste de toutes natures)
3 : ) Into
4 : NATURE (liste de toutes natures)

Ensuite :
1 : Commit Table
2 : NATURE (liste de toutes natures)
3 : As "G:\Monrepertoire\
4 : NATURE (liste de toutes natures)
5 : .TAB" TYPE NATIVE Charset "WindowsLatin1"

Il suffit de concaténer tout ca (CONCATENER (A1;A2;A3;A4) et CONCATENER (A1;A2;A3;A4;A5)  et de copier coller ca dans bloc-note, puis dans la fenetre mapbasic.
Tester sur une ligne d'abord, puis lancer sur de nombreuses lignes (sélection + Entrée)

Robin.

Hors ligne

 

#10 Fri 21 March 2008 16:34

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

Re: Diviser une table en plusieurs tables

A comparer avec le decoupe_table.mbx joint .... tongue

ps pour Robin: d'accord j'exagère... smile mais on va dire que c'est juste pour montrer aux futurs acquéreurs de MI9 (qui pourront utiliser gratuitement MB9) que ça vaut le coup (si on est feignant smile) de s'investir dans un peu de développement !!


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

Hors ligne

 

#11 Fri 21 March 2008 17:39

rvmap
Participant occasionnel
Lieu: CHATENAY-MALABRY
Date d'inscription: 15 Jan 2007
Messages: 24

Re: Diviser une table en plusieurs tables

Alors moi je dis bravo Maurice ... bravo aussi Robin mais c'est un peu plus compliqué ta solution ... surtout que je suis pas un champion d'excel ...je me débrouille juste un peu ... un peu moins maintenant que l'on nous à installé office 2007 et où il faut essayer de retrouver où sont cachés les fonctions que l'on utilisait avant.

Bravo Maurice pour ton MBX qui fonctionne parfaitement ... Bravo, Bravo ... et merci beaucoup, c'est exactement ce que je cherchais

c'est vrai que ça donne envie de faire un petit stage pour savoir comment crer des MBX ... il faut d'abord bien maitriser les requêtes SQL je pense ... je commence a y arriver petit a petit

Merci encore

Dernière modification par rvmap (Fri 21 March 2008 17:47)

Hors ligne

 

#12 Fri 21 March 2008 18:00

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

Re: Diviser une table en plusieurs tables

on va dire que c'est juste pour montrer aux futurs acquéreurs de MI9


Dans ce cas, peut être qu'il faudrait que tu file le code source (MB) à chaque fois non ?

Pour MBX/FMB, le mieux c'est de connaître les deux. La manip que j'utilise, même si elle est plus compliquée du premier abord, permet - en l'adaptant - de faire des scripts à volonté (donc sur toutes les versions), et pas que séparer les tables, mais renseigner automatiquement des infos en fonction de multi critères prédéfinis ou autre opération avancées...

Mais bon, l'humain est faible... tongue
Robin.

Hors ligne

 

#13 Fri 21 March 2008 19:42

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

Re: Diviser une table en plusieurs tables

Robin a écrit:

on va dire que c'est juste pour montrer aux futurs acquéreurs de MI9


Dans ce cas, peut être qu'il faudrait que tu files le code source (MB) à chaque fois non ?


J'en ai reçu l'interdiction explicite !!
Et puis c'est plus formateur de chercher soi même, quand on a vu que ça n'est pas si dur et que ça peut "rapporter" gros...

Robin a écrit:

Pour MBX/FMB, le mieux c'est de connaître les deux...


Totalement d'accord !!

Hors ligne

 

#14 Sat 22 March 2008 16:19

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: Diviser une table en plusieurs tables

Bonjour,

cher Maurice je trouve un certain intérêt a votre outil decoupe_table.mbx, mais il plante (plutôt pas de création de table) si un champ comporte le caractère "/" (découpe_table.mb : 100) Fichier *.dat non trouvé. Impossible de créer une nouvelle table.

ci-joint une table test.

merci pour tout


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

Jean-Marc Hanczyk

Hors ligne

 

#15 Sun 23 March 2008 18:08

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

Re: Diviser une table en plusieurs tables

J'avais dit "...on peut fabriquer très vite un petit mbx rustique..."
Donc celui-ci, "mis au point" en 10', n'est pas prévu pour contourner le problème de créer des tables reprenant le nom d'un des attributs quand celui-ci comporte des caractères interdits pour les tables...
Ca peut s'arranger, mais il faudrait revoir toute la question du nommage si on prend un champ caractère comme attribut déterminant de la découpe: en plus du cas signalé, quid des champs de plus de 31 caractères, etc...
Comme le besoin de ce type d'outil ne me semble pas très pressant, pour l'instant je m'en tiens là
D'autant que la solution de Robin marche très bien elle aussi et permet à chacun de trouver "sa" solution au problème de nommage évoqué smile

Hors ligne

 

#16 Mon 24 March 2008 11:09

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: Diviser une table en plusieurs tables

Bonjour,

votre réponse me convient parfaitement (je n'avais pas tilté sur le problème des caractères interdits pour le nommage des noms) et je vais me satisfaire de cet outil (encore une fois bien sympatique).

caractères interdits


pouvez-vous nous donner la liste

champs de plus de 31 caractères


quels autres conseils ?

par avance, merci


Jean-Marc Hanczyk

Hors ligne

 

#17 Mon 24 March 2008 11:59

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

Re: Diviser une table en plusieurs tables

A ma connaissance, les caractères "interdits" sont les mêmes que pour DOS (au moins / et \, plus d'autres...??)
Toutes les marques de ponctuation seront remplacées par un "_" par MapInfo
Je ne connais pas le sort des <, > et autres #...et je n'ai pas sous la main mes outils pour trouver une liste des limitations...

Hors ligne

 

#18 Mon 24 March 2008 19:05

pelobate44
Juste Inscrit !
Date d'inscription: 24 Mar 2008
Messages: 5

Re: Diviser une table en plusieurs tables

Ben, il me semble qu'il y a plus simple : traduis ta page en .shp avec le traducteur universel, et retraduis les tables arcview (point, polygone...) en .tab, et le tour est joué !

Hors ligne

 

#19 Mon 24 March 2008 22:19

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

Re: Diviser une table en plusieurs tables

Merci de la contribution pelobate44...mais l'énoncé n'est pas celui-là (relire le post #3): il y a confusion sur ce que rvmap "appelle nature d'objet" smile
Effectivement si on veut séparer points, ligne et polygones, ton astuce est excellente
Mais ici il s'agit de créer une Table par type d'attribut présent....

Hors ligne

 

Pied de page des forums

Powered by FluxBB