#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