#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
#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
Re: Diviser une table en plusieurs tables
Hello,
Un bon script dans la fenêtre Mapbasic devrait arranger tout ça
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
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 ...
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 ... ... 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
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
... les transformer en DGN pour récupérer la partie graphqiue sous Microstation ...
Quoi !! C'est pour un passage à la concurrence !!
ps: rien trouvé sur le web, je vous mitonne un mbx pour Pâques (ou la Trinité )
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 .. 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 .. 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
Re: Diviser une table en plusieurs tables
Hello,
Regardez Maurice, il a trouvé le truc pour rendre les gens accroc à ses mbx
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 ....
ps pour Robin: d'accord j'exagère... 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 ) de s'investir dans un peu de développement !!
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
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...
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
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...
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
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é
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"
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