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é ?

#1 Wed 08 April 2009 09:30

HF974
Participant occasionnel
Date d'inscription: 12 Feb 2009
Messages: 14

récupérer l'échelle d'une carte en mapbasic

Bonjour,

Je voudrais en mapbasic  récupérer dans une variable l'échelle d'une  Fenêtre carte

Pouvez-vous m'aider ?

Hors ligne

 

#2 Wed 08 April 2009 10:57

Maestro de la salsa
Participant actif
Date d'inscription: 7 Jun 2006
Messages: 133

Re: récupérer l'échelle d'une carte en mapbasic

Bonjour,
Il ya peut être d'autres astuces directement avec Mapbasic...

La mienne: construit ta fenêtre carte et enregistre sous forme de document. Ouvre ton document sous forme txt.
Tu remarqueras la valeur du zoom de ta fenêtre carte et l'unité (supposons que l'unité soit le mètre: carte, options).
Chaque valeur de zoom de ta fenêtre carte correspond à une échelle donnée.
il ya donc une possibilité de faire une règle de trois. Exemple: Si l'echelle 1/50000 correspond à un zoom de 2000 mètres, un zoom de 10000 mètres (que je peux récupérer pour chaque carte) correspondra à X.
X= 10000(zoom)*500(echelle en mètre)/2000(zoom).

Le seul problème: pour un même zoom, je peux avoir plusieurs échelles. En effet si je suis en mode plein écran, la valeur de l'échelle de la fenêtre carte change si je passe en mode réduit mais mon zoom reste le même. ça veut donc dire que si je fais un programme avec un écran 15 pouces et que l'utilisateur ouvre la carte avec un écran 17 pouces, tu risque de lui fournir une fausse valeur.
Pour contourner cela, il ya deux choses:
1-définir le type d'écran sur lequel la carte est ouverte (17 pouces par exemple) et forcer la carte à s'ouvrir en mode maximum (possible avec mapbasic).
Ou
2-Pour chaque type d'écran, récupérer sa taille, adapter la règle de trois ci-dessus en fonction de la taille de l'écran en faisant des test sous mapinfo et toujours forcer la carte à s'ouvrir en mode plein écran.

En resumé: Si ma fenêtre carte s'affiche sur un écran 14 pouces en mode plein écran, une échelle E correspond à un zoom Z. Pour toute carte s'affichant dans cette même fenêtre en mode plein écran avec un zoom Z1, l'echelle correspondant est E1=E*Z1/Z (à condition de travailler dans les mêmes unités). Quelqu'un est partant pour le rpogramme???????

Alain

Hors ligne

 

#3 Thu 09 April 2009 19:27

Maestro de la salsa
Participant actif
Date d'inscription: 7 Jun 2006
Messages: 133

Re: récupérer l'échelle d'une carte en mapbasic

Au fait HF974, as-tu pu avoir une solution?

Hors ligne

 

#4 Fri 10 April 2009 15:50

HF974
Participant occasionnel
Date d'inscription: 12 Feb 2009
Messages: 14

Re: récupérer l'échelle d'une carte en mapbasic

Non, je cherche ... J'ai trouvé ceci dans la doc ceci:

MapperInfo( window_id ,  MAPPER_INFO_DISPLAY    _SCALE )


Mais il  me renvoie  l'erreur  argument 2 or des limites

Hors ligne

 

#5 Wed 15 April 2009 09:53

HF974
Participant occasionnel
Date d'inscription: 12 Feb 2009
Messages: 14

Re: récupérer l'échelle d'une carte en mapbasic

voila comment récupérer l'échelle d'une carte  en mètre:

Code:

dim echelle as string  
  
  Set Distance Units "m" 
  Set Paper Units "cm"
   
  echelle= (MAPPERINFO( frontwindow() ,MAPPER_INFO_SCALE))

Hors ligne

 

#6 Wed 15 April 2009 10:29

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

Re: récupérer l'échelle d'une carte en mapbasic

Rectificatif:
Pour que MapperInfo(FrontWindow(), MAPPER_INFO_SCALE) ou MapperInfo(FrontWindow(), 2) retourne un chiffre semblable au dénominateur de l'échelle numérique qui s'affiche en bas à gauche de la fenêtre MapInfo, il faut que les Distance Units soient dans la même unité que les Paper Units
Dans votre solution avec respectivement "m" et "cm"...vous obtenez un chiffre 100 fois trop petit

Hors ligne

 

#7 Fri 17 April 2009 11:30

HF974
Participant occasionnel
Date d'inscription: 12 Feb 2009
Messages: 14

Re: récupérer l'échelle d'une carte en mapbasic

Oui, merci pour la rectification

Dernière modification par HF974 (Fri 17 April 2009 11:30)

Hors ligne

 

Pied de page des forums

Powered by FluxBB