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 Tue 03 August 2010 10:48

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

[MB 8.5] problème de coordonnées

Bonjour @ tous....

Je suis actuellement en train de créer un outil pour automatiser des cartes bien spécifiques. Il est mené presque au terme de son code. Néanmoins, pour finaliser la mise en page, je me suis inspirée de l'exemple de notre ami Cyril Chat que j'ai trouvé ici J'ai exactement le même type de code, sauf au niveau de mes coordonnées et j'ai un message d'erreur suivant "...impossible de convertir les données..." sur une de ces lignes. Voici mon code au cas où :

Code:

SUB logos
    DIM dir_logo, layoutID, i as INTEGER
    DIM bool1 as LOGICAL
   
'recupère l'ID de la fenetre layout
    layoutID = WindowInfo(frontwindow(), WIN_INFO_WINDOWID)
'parametre le layout avec des unité en cm
    set coordsys Layout units "cm"
'ouvre les tables des logos
    open table "C:\Documents and Settings\GiraultV\Mes documents\Mes images\Logos\Bloc_marque_DIR_AOUT2009.TAB"
'test si le logos est déja ouvert et mappé
    bool1 = FALSE
    FOR i = 1 to numWindows()
        IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN bool1 = TRUE    END IF
    NEXT
'si pas ouvert alors on le map en configurant sa fenetre
    IF bool1 = FALSE THEN 
        map from Bloc_marque_DIR_AOUT2009 width 2 units "cm" height 6 units "cm" min 
    END IF
'on récupère l'ID de la fenetre logo

    FOR i = 1 to numWindows()
        IF (windowinfo(i, WIN_INFO_TYPE) = WIN_MAPPER) THEN
            IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN
                dir_logo = windowinfo(i , WIN_INFO_WINDOWID)
            END IF
        END IF
    NEXT
'crée le cadre logo dans la mise en page en les placant suivant l'orientation de la MEP
    IF orientation(frontwindow()) = 1 THEN 'suivant l'orientation choisit par l'utilisateur
        create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
        'create Frame into window layoutID (38.731, 24.275) (41.180, 27.564) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
    ELSE
        'create Frame into window layoutID (0.7, 0.7) (4.30, 4.35) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
        'create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
        create Frame into window layoutID (38.532, 24.315) (41.060, 27.686) Pen(1,2,0) brush(2, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
    END IF

END SUB

L'erreur se manifeste à la dernière ligne non commentée create frame du ELSE IF. Je ne comprends pas du tout pourquoi il me fait une telle erreur vu que j'ai même vérifié mes coordonnées en dessinant mon frame sur la MEP et en récupérant les coordonnées indiquées pour les inscrire dans le code. Le logo est quant à lui chargé en coordonnées non terrestres et l'unité de mesure est correcte également.

Auriez-vous quelques suggestions SVP ?

Merci beaucoup d'avance....

Hors ligne

 

#2 Tue 03 August 2010 20:28

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [MB 8.5] problème de coordonnées

Salut,

Peut être en utilsant un "Set coordsys table Bloc_marque_DIR_AOUT2009.TAB" celà forcera Mapbasic à prendre la projection de ta table comme référence.
A+
Joël

Hors ligne

 

#3 Wed 04 August 2010 09:47

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

Re: [MB 8.5] problème de coordonnées

Bonjour à tous !

Merci beaucoup Joël de voler à mon secours...

La table du logo est en coordonnées non terrestre en pieds. J'ai rajouté la ligne que tu indiques dans le code ci-dessous, en rajoutant même un note en-dessous pour bien contrôler qu'elle passe, mais j'ai toujours le même message d'erreur :

Code:

'--- mise en place des logos ATTENTION : mettre le chemin propre à chaque CRPF
'---------------------------------------------------------------------------
SUB logos
    DIM dir_logo, layoutID, i as INTEGER
    DIM bool1 as LOGICAL
   
'recupère l'ID de la fenetre layout
    layoutID = WindowInfo(frontwindow(), WIN_INFO_WINDOWID)
'parametre le layout avec des unité en cm
    set coordsys Layout units "cm"
'ouvre les tables des logos
    open table "C:\Documents and Settings\GiraultV\Mes documents\Mes images\Logos\Bloc_marque_DIR_AOUT2009.TAB"
set coordsys table Bloc_marque_DIR_AOUT2009
    'Note "Coordsys de la table forcé."
'test si le logos est déja ouvert et mappé
    bool1 = FALSE
    FOR i = 1 to numWindows()
        IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN bool1 = TRUE    END IF
    NEXT
'si pas ouvert alors on le map en configurant sa fenetre
    IF bool1 = FALSE THEN 
        map from Bloc_marque_DIR_AOUT2009 width 2 units "cm" height 6 units "cm" min 
    END IF
'on récupère l'ID de la fenetre logo

    FOR i = 1 to numWindows()
        IF (windowinfo(i, WIN_INFO_TYPE) = WIN_MAPPER) THEN
            IF windowinfo(i , WIN_INFO_NAME) = "Bloc_marque_DIR_AOUT2009 Carte" THEN
                dir_logo = windowinfo(i , WIN_INFO_WINDOWID)
            END IF
        END IF
    NEXT
'crée le cadre logo dans la mise en page en les placant suivant l'orientation de la MEP
    IF orientation(frontwindow()) = 1 THEN 'suivant l'orientation choisit par l'utilisateur
        'create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
    ELSE
        'create Frame into window layoutID (0.7, 0.7) (4.30, 4.35) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
        'create Frame into window layoutID (38.612, 24.234) (41.180, 27.645) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
        'create Frame into window layoutID (38.532, 24.315) (41.060, 27.686) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
        create Frame into window layoutID (15.1701,9.541) (16.2285,10.9313) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009
   END IF

END SUB

Il n'y a aucune ligne de création du frame avec le logo dedans qui fonctionne, j'ai toujours ce message d'erreur... Je ne sais pas trop quoi faire pour contrer celle-ci, je ne comprends franchement pas pourquoi MB réagit comme çà.... C'est ballot, je suis juste à la fin de l'écriture de mon outil et çà coïnce méchamment....

Personne n'aurait un rapide exemple de code avec une img ou logo associé que je contrôle ce qui ne va pas dans le mien en levant les différence entre les deux codes ou dans la composition ou la projection de la table servant de logo ?

Merci beaucoup d'avance....

Hors ligne

 

#4 Wed 04 August 2010 11:56

Patrick PALMIER
Participant actif
Lieu: Lille
Date d'inscription: 18 Jan 2007
Messages: 97

Re: [MB 8.5] problème de coordonnées

Bonjour

Ne faudrait-il pas remplacer

create Frame into window layoutID (15.1701,9.541) (16.2285,10.9313) Pen(1,1,0) brush(1, 16777215, 16777215) from window Bloc_marque_DIR_AOUT2009

par

create Frame into window layoutID (15.1701,9.541) (16.2285,10.9313) Pen(1,1,0) brush(1, 16777215, 16777215) from window dir_logo

car  Bloc_marque_DIR_AOUT2009 est un nom de table et pas un windows ID

Hors ligne

 

#5 Wed 04 August 2010 14:29

V. Girault
Participant actif
Lieu: Clermont-Ferrand
Date d'inscription: 22 Sep 2005
Messages: 106

Re: [MB 8.5] problème de coordonnées

Bonjour !

Si, c'est bien çà, je me suis encore plongé dans des recherches de solutions hyper compliquées.... Merci beaucoup à Patrick PALMIER

Hors ligne

 

Pied de page des forums

Powered by FluxBB