#1 Thu 22 April 2010 10:37
- Anonyme
- Participant actif
- Date d'inscription: 1 Jul 2013
- Messages: 109
[MapBasic] automatisation échelle graphique
Bonjour,
J'ai cherché (en vain ) une manière d'automatiser la création d'une échelle graphique sur une carte avec mapbasic 10.
Je vous explique mon cas :
J'ai une boucle qui :
- importe à chaque fois une dizaine de points sur une couche d'assemblage de rasters représentant la France.
- elle zoom ensuite sur l'ensemble de ces points, regroupés en général sur un rayon de 20km (mais qui varie selon les cas).
- elle zoom donc sur la couche de rasters qui s'ajuste en fonction.
- ensuite elle crée une mise en page que j'exporte, ferme ma table contenant les points.
- et elle recommence avec une autre série de points, qui viennent se localiser à un autre endroit en France, sur lequel elle zoom, etc etc...
Il me manque la partie "échelle" que je n'arrive pas à trouver.
Il faudrait qu'après ma partie zoom, j'arrive à créer une échelle graphique dans la fenêtre carte, ou alors après, dans la mise en page, mais que cette échelle soit bien sûr adaptée au zoom et qu'elle puisse être supprimée avant chaque "recommencement". Le cadre de la fenêtre reste toujours le même par contre.
Auriez-vu des idées ? ça m'a l'air assez compliqué, mais en même temps je suis assez nulle
Le nouvel outil de la v10 qui utilise le "Create Adornment Statement" fonctionne bien, mais le résultat est beaucoup trop gros et très peu paramétrable (le fond blanc qui ne peut être rendu transparent est une perte de visibilité et est assez moche !)
Merci d'avance à vous tous.
Clementine.
Hors ligne
#2 Thu 22 April 2010 11:22
- matieu_dumo
- Participant actif
- Lieu: Questembert
- Date d'inscription: 15 Mar 2006
- Messages: 135
- Site web
Re: [MapBasic] automatisation échelle graphique
Bonjour,
j'utilise un procédé semblable mais sans mapbasic. je l'utilise quand j'enchaine des wor dans la FMB. Le principe est de créer une barre d'échelle graphique dans la mise en page (qui a toujours la même dimension) et d'effectuer une règle de 3 pour calculer les différentes graduations (j'en utilise 3 + le zéro) en fonction du niveau de zoom de la carte, la dimension de la fenêtre carte et la dimension de la fenêtre mise en page.
En tout ça me fait 2 constantes (1 pour dimension de la fenêtre mise en page et 1 pour le zéro), et 5 variables (3 pour les chiffres calculé, 1 pour la largeur de la fenêtre carte et 1 pour stocker l'échelle calculée).
Je sais pas si je suis très clair...
C'est le même principe qu'ici...
http://georezo.net/forum/viewtopic.php? … iable+zoom
http://www.forumsig.org/archive/index.php?t-4602.html
Dernière modification par matieu_dumo (Thu 22 April 2010 11:25)
Hors ligne
#3 Fri 23 April 2010 12:34
- Anonyme
- Participant actif
- Date d'inscription: 1 Jul 2013
- Messages: 109
Re: [MapBasic] automatisation échelle graphique
J'ai résolu mon problème,
J'ai créé un trait qui représente 1km et dont la longueur varie en fonction de l'échelle de la carte.
Mon morceau de code ci-dessous :
Code:
Set Distance Units "Km" Set Paper Units "cm" 'récupère le zoom de la fenêtre carte et le passe en cm zoom = (MAPPERINFO (FrontWindow(),MAPPER_INFO_ZOOM)*100000) 'récupère le rapport, en km, entre le zoom de la fenêtre carte et la largeur de la fenêtre mise en page (37.45 cm) rapport = ((zoom/37.45)/100000) 'calcule, en km, la largeur du trait de l'échelle pour 1 cm dans la mise en page largeurTraitEchelle = 1/rapport ' crée le trait de l'échelle sur la mise en page et le place dans le coin gauche Create Line into Window FrontWindow() (2.488, 26.930) (2.488+largeurTraitEchelle, 26.930) Pen (1,96,0) ' crée le texte "1km" au dessus du trait de l'échelle, centré en son milieu Create Text into Window FrontWindow() "1km" (2.488+((largeurTraitEchelle-0.7)/2), 26.43) (2.488+largeurTraitEchelle, 26.43) Font("Arial", 1, 12, BLACK)
Et voilà, ci cette astuce peut aider quelqu'un, pour une échelle un peu bizarre, certes, mais simple de lecture.
Clémentine.
Hors ligne
#4 Fri 23 April 2010 13:33
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic] automatisation échelle graphique
Bonjour,
Je pense que je vais reprendre ton code et l'adapter vu que mon échelle numérique n'est pas superbe... Merci de le faire partager...
Dernière modification par Cyril Chat (Fri 23 April 2010 13:53)
Hors ligne
#5 Fri 07 May 2010 09:48
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
bonjour j'essaye de récupérer les lignes de codes précédent mais je ne comprends pas très bien comment ça marche
J'ai copier tout ça dans une FMB mais ça ne créer rien pour moi, quelqu'un pourrait il m'aider svp ?
Merci
Hors ligne
#6 Fri 07 May 2010 16:45
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic] automatisation échelle graphique
Bonjour,
As tu une fenêtre mise en page d'ouverte???
Si oui, cela doit être la fenêtre sélectionnée, tu ne dois pas en avoir une autre étant donné que tu utilises FrontWindow!!! Sinon tu dois passer par les ID des fenêtres.
Essaye de donner plus de précisions...
Hors ligne
#7 Mon 10 May 2010 11:29
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
Bonjour,
alors j'ai bien une fenêtre de mise en page ouverte et même sélectionnée mais ce code ne marche pas pour moi (même si je ne la sélectionne pas ).
Pour donner plus de précision, en fait j'ai un fenêtre mise en page ouverte et je veux créer automatiquement une échelle car après je veux réaliser un grand nombre de sortie de cartes grâce à un .wor pour toutes mes communes d'un département. Je veux donc déjà que ça marche pour une avant de me lancer dans tout ça !
Si quelqu'un peux m'aider ce serait le TOP !
Merci
Hors ligne
#8 Mon 17 May 2010 11:46
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
personne ne pourrais m'aider ou trouver une autre solution pour réaliser automatiquement une échelle sachant que je vais réaliser plus de 130 cartes j'aimerais bien trouver une solution.
Cordialement,
Hors ligne
#9 Mon 17 May 2010 11:53
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic] automatisation échelle graphique
Il faut savoir que vous devez avoir une fenêtre mise en page mais aussi une fenêtre carte. L'échelle se calcule sur la fenêtre carte, et j'en conclu, vu ce que vous énoncé, c'est que vous voulez faire l'échelle et aprés les cartes...
Ceci n'est, à mon avis, pas possible. Vous devez faire vos cartes en insérer le polygone désiré et ensuite calculer l'échelle, grâce à FrontWindow, qui sera votre fenêtre carte...
Hors ligne
#10 Mon 17 May 2010 14:26
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
effectivement ce serai plus judicieux de réaliser la carte puis calculer l'echelle.
Cependant je n'arrive toujours pas à faire ce que je souhaite, je suis plutot débutant dans la FMB meme si j'apprends relativement vite je bloque. je ne vois pas de trait ce dreer meme si je met des valeurs fixes et idem pour la création de texte rien n'apparait !
je pensais sinon au pire, si je ne parviens pas a faire tout cela, au lieu de creer une echelle graphique je pourrais mettre une ligne de texte avec le raport genre 1/25000e ou un truc dans ce genre la si vous avez des idées.
Hors ligne
#11 Mon 17 May 2010 14:37
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic] automatisation échelle graphique
Pour votre rapport au 1/25000eme le problème est que suivant ce que vous allez cartographier, cela sera trop grand ou trop petit... Il est plus judicieux de définir d'abord votre carte et de calculer l'échelle sur cela...
En ce qui concerne votre code, s'il ne vous créer même pas le texte, ce n'est pas normal... C'est un problème beaucoup plus profond et cela ne vient donc pas du code de Clémentine...
Si vous nous joigniez votre code, cela nous permettra peut être de savoir d'où vienne vos erreurs...
Hors ligne
#12 Mon 17 May 2010 14:50
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Salut,
mlking31: Arrives tu à faire la manip pour une carte?
je vais réaliser plus de 130 cartes
Que veux tu automatiser exactement?
A+
Joël
Hors ligne
#13 Mon 17 May 2010 14:58
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
Pour écrire du texte j'ai essayer d'utiliser le meme code que Clémentine mais rien ne se fait je voulais juste essayer de faire écrire par la FMB du texte mais rien
Code:
Create Line into Window FrontWindow() (2.488, 26.930) (2.488+largeurTraitEchelle, 26.930) Pen (1,96,0)
meme si je fais ca en ayant préalablement déclaré
Set Distance Units "Km"
Set Paper Units "cm"
la je commence a être perdu tout de même ...
edit : j'ai bien sur enlevé les référence largeurtraitechelle ... et mis des vrais valeurs
Dernière modification par mlking31 (Mon 17 May 2010 14:59)
Hors ligne
#14 Mon 17 May 2010 15:05
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
alors en fait je veux et j'espère y arriver automatiser la création de cartes.
. Concrètement je souhaite faire une carte pour chaque commune de mon département (environ 130 communes dans les BdR) avec les couches que je souhaite qui est a chaque fois centrée sur ma commune --> ça j'y suis déjà arrivé !
. Après j'aurai aimer créer une échelle qui va être différente à chaque nouvelle carte du fait d'un zoom/centrage sur les commune --> ca je n'y suis même pas arrivé même pas pour une seule !
Hors ligne
#15 Mon 17 May 2010 15:05
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Ce qu'il faut savoir c'est que la FMB est plus restrictive que MapBasic.
Certaine chose ne sont pas faisable.
Si je prends ton exemple de créer une ligne dans la FMB il faut utiliser un "update".
Si tu fais une recherche avec comme mot clef "FMB" puis mon pseudo tu trouveras pas mal de post avec des automatisations en tout genre.
Exemple --> création d'oursins --> http://georezo.net/forum/viewtopic.php?id=66735
Hors ligne
#16 Mon 17 May 2010 15:27
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Qu'utilises tu comme outil pour faire une échelle?
Layscale?
Scalebar?
Hors ligne
#17 Mon 17 May 2010 15:33
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
beh en fait étant donné que je voudrais automatiser tout ça je n'utilise pas ces outils car après je ne pourrais pas les lancer automatiquement (non ?)
sinon a la base j'utilise scalebar.
edit : j'étais plutot parti dans l'idée de faire des petits calculs en fonction de ma fenêtre carte même si tout cela me parait de plus en plus compliqué !
Dernière modification par mlking31 (Mon 17 May 2010 15:37)
Hors ligne
#18 Mon 17 May 2010 15:39
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Rien ne t'empêche de lancer un mbx via la FMB:
---> Run Application "C:\Program Files\MapInfo\Professional\Tools\ScaleBar.MBX"
Dernière modification par Spacejo (Mon 17 May 2010 15:39)
Hors ligne
#19 Mon 17 May 2010 15:46
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Peux tu nous dire comment as tu fais pour automatiser ta création de carte?
Il est peut être possible d'insérer une mise en place d'échelle.
A+
Joël
Hors ligne
#20 Mon 17 May 2010 15:51
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
alors j'ai tester mais la le problème c'est que ça ouvre le programme mais ça met seulement un petit icône dans les outils mapbasic donc je ne pense pas que ça puisse permettre l'automatisation non ?
en fait pour automatiser j'ai fais un wor
Code:
Open Table "C:\Documents and Settings\stagiaire.sca\Bureau\centrer_carte\communes dep13.TAB" Interactive Open Table "C:\Documents and Settings\stagiaire.sca\Bureau\pgm map basic\tache_desagregee" As tache_desagregee Interactive Open Table "C:\Documents and Settings\stagiaire.sca\Bureau\pgm map basic\mittage" As mittage Interactive Select * from communes_dep13 where ID =1 into resultat_select Browse * from resultat_select Map From resultat_select,communes_dep13 set map redraw off Add Map Layer mittage, tache_desagregee Set Map Order 3,1,2,4 Set Map Layer 1 Display Global Global Pen (2,2,16711680) Global Brush (1,16777215,16777215) Set Map Layer 2 Display Global Zoom (0, 100000) Units "km" Off Editable Off Selectable On Global Line (1,2,0) Global Pen (1,2,0) Global Brush (2,16750640,16777215) Global Symbol (35,0,12) Global Font ("Arial",0,9,0) Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0) With Hauteur Parallel On Auto Off Overlap Off PartialSegments Off Duplicates On Offset 2 Max Visibility On Nodes Off Arrows Off Centroids Off Set Map Layer 3 Display Global Zoom (0, 100000) Units "km" Off Editable Off Selectable On Global Line (1,2,0) Global Pen (1,2,0) Global Brush (2,12632256,16777215) Global Symbol (35,0,12) Global Font ("Arial",0,9,0) Label Line None Position Center Font ("Arial",0,9,0) Pen (1,2,0) With Hauteur Parallel On Auto Off Overlap Off PartialSegments Off Duplicates On Offset 2 Max Visibility On Nodes Off Arrows Off Centroids Off set map redraw on Layout Position (0.708333,0.989583) Units "in" Width 6.625 Units "in" Height 4.47917 Units "in" Dim uniqueStringName As String uniqueStringName = "Set " + SessionInfo(1) Set CoordSys Layout Units "in" Create Frame (0.1722,0.1396) (11.5597,8.1444) Pen (1,2,0) Brush (2,16777215,16777215) Title "resultat_select,...,communes_dep13 Carte" FillFrame On Set Layout Ruler On Pagebreaks On Frame Contents Active Zoom 34.9169 Center (8.87501,5.84722) Extents To Fit Set Window FrontWindow() Autoscroll On Run Command uniqueStringName Undim uniqueStringName Set Window FrontWindow() Printer Name "PDFCreator09" Orientation Landscape Copies 1 Papersize 9 Dim WorkspaceMaximizedWindow As Integer WorkspaceMaximizedWindow = Frontwindow() Set Window WorkspaceMaximizedWindow Max Undim WorkspaceMaximizedWindow save window Frontwindow() as "C:\Documents and Settings\stagiaire.sca\Bureau\centrer_carte\communes\export_jpeg\AIX-EN-PROVENCE.jpg" type "JPEG" resolution 300 Close All Interactive
et apres je change la sélection de la commune et sur le nom d'export
Hors ligne
#21 Mon 17 May 2010 16:06
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
OK
Je pensais que tu étais passé par la FMB car automatiser une sortie de cartes est faisable via la FMB.
Celà évite de faire -->
et apres je change la sélection de la commune et sur le nom d'export
Il faut travailler avec un générateur de scripts.
Dans le lien que j'ai cité au dessus il me semble qu'il y a le lien pour télécharger ce log.
--> http://www.forumsig.org/attachment.php? … 1263298677
Dernière modification par Spacejo (Mon 17 May 2010 16:08)
Hors ligne
#22 Mon 17 May 2010 16:11
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
pour automatiser les cartes et tout ca va j'ai fait avec le générateur de script mais la je seche pour l echelle !!
Hors ligne
#23 Mon 17 May 2010 16:13
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic] automatisation échelle graphique
Voici l'outil que j'ai créé si cela peut t'aider... Malheureusement je ne suis pas propriétaire, donc je ne peux pas te divulger le script.
Le tuto n'est pas encore terminé... Mais pour l'utiliser tu as juste besoin de savoir qu'il faut que tu es une table référence comportant tous les enregistrements dont tu souhaites faire la mise en page, puis une fenêtre comportant la légende doit être ouverte...
Hors ligne
#24 Mon 17 May 2010 16:28
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
merci c'est sympa seulement petit probleme je ne peux pas l'ouvrir avec ma version 7.8 ! de mapinfo ...
Hors ligne
#25 Mon 17 May 2010 16:33
- Cyril Chat
- Participant actif
- Lieu: Niort
- Date d'inscription: 14 Feb 2010
- Messages: 90
Re: [MapBasic] automatisation échelle graphique
Ah oui en effet, problème car moi je suis sur du 9.5...
Dans c'est cas la, je crois qu'il n'y a pas d'autres solutions que de continuer à le fabriquer vous même...
Hors ligne
#26 Mon 17 May 2010 17:49
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Dans ton wor je ne vois pas de ligne correspondant à ceci c'est un exemple:
Code:
Set Map Scale 1 Units "cm" For 500 Units "cm"
Voilà d'oû je tire cet exemple:
--> http://georezo.net/forum/viewtopic.php? … =scale+wor
A+
Joël
Dernière modification par Spacejo (Mon 17 May 2010 17:53)
Hors ligne
#27 Tue 18 May 2010 09:31
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
en fait j'ai pas de ligne comme celle ci parce que quand je fais une carte en ayant choisi le calque que je veux centrer en premier et bien la carte se centre automatiquement sur ce dernier ce qui correspond parfaitement a ce sue je veux. Je sais pas si je suis bien clair mais centrer la carte ca c'est bon.
Maintenant reste le probleme de l'echelle encore et toujours !
je pensais peut être que c'est possible mais ca semble compliqué.
Idéalement je voudrais récupérer l'echelle mais au pire je peux le calculer et lui dire d'écrire ce chiffre quelque part ?
je pourrais par exemple (au lieu de echelle graphique) écrire automatiquement 1/4500e ou 1/50000e selon le rapport qu'il me donne non ?
Hors ligne
#28 Tue 18 May 2010 09:45
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Si tu fais un document comme tu le désires avec une échelle, le tout en manuel au départ, tu récupéreras toutes les commandes dont tu as besoin dans le .wor pour faire la travail en batch.
Hors ligne
#29 Tue 18 May 2010 09:55
- mlking31
- Participant occasionnel
- Date d'inscription: 17 Dec 2008
- Messages: 36
Re: [MapBasic] automatisation échelle graphique
oui mais je sais que l'echelle ne sera jamais bonne car centrer et zoomer a chaque fois sur une nouvelle commune, il faudrait que je réalise un calcul mais le je suis encore perdu
Hors ligne
#30 Tue 18 May 2010 10:09
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic] automatisation échelle graphique
Construit le .wor pour une commune.
Puis tu prends les commandes et tu t'en sers pour créer un script initial avec le générateur de script puis création d'un script final avec une liste de communes et enfin la FMB pour faire le boulot.
Hors ligne