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 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...


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

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

 

Pied de page des forums

Powered by FluxBB