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 Fri 13 January 2006 16:08

Bertrand DORNER
Participant actif
Lieu: COLMAR
Date d'inscription: 5 Sep 2005
Messages: 90

Incompréhension du code pour créer des étiquettes

Bonjour,

Il y a quelques mois, j'avais posé la question de la création des étiquettes. En suivant la procédure qui m'avait été indiquée, j'ai réussi à créer des étiquettes pour des objets communes.

J'ai voulu suivre la même procédure pour créer des étiquettes à partir de chiffres. Echec sur le champ servant d'identifiant pour la sélection des objets et l'affichage des données attributaires. Je me suis dit, créons un camp dédié, clone du champ identifiant ; échec avec des données numériques, échec après conversion en caractère.

Présentation du code du mapfile, en échec apparant

LAYER
    NAME         "L_GIC"
    CONNECTIONTYPE  OGR
    CONNECTION  "chasse_et_peche\L_GIC_068.TAB"
    TRANSPARENCY 100
    STATUS ON
    TYPE         Polygon
    TEMPLATE "ttt"
    METADATA      
     "id_attribute_string" "N__du_GIC|string"
    END
    PROJECTION
      "init=epsg:27582"
    END
    LABELITEM "NOM_GIC"
    CLASS
      NAME         "L_GIC"
      STYLE   
        OUTLINECOLOR        0 0 0
        SIZE    3
      END
    END
    LABEL
      TYPE  TRUETYPE
      FONT  "Arial"
      SIZE  15
      COLOR 255
    END
  END
END

Présentation des séquences de code d'erreur générées.

Failure
class:   SoapFault
message:   Mapserver error: Error in loadLayer(): Parsing error near (LABEL):(line 1604)

[La line 1604 correspond à celle où le mot LABEL est inscrit. J'ai essayé de trouver sur umn.mapserver.ch une signification de ce message d'erreur, mais je n'ai pas trouvé. J'espère que ce n'est pas lié au fait que les objets de la couche peuvent être sélectionnés, sachant que sans l'écriture du code des étiquettes, tout passe pour cette couche.]

Backtrace:

file: 356 - C:\WWW\site\cartoweb3\server\ServerContext.php
call: ServerContext::checkMsErrors()

file: 278 - C:\WWW\site\cartoweb3\server\ServerContext.php
call: ServerContext->checkMsErrors()

file: 90 - C:\WWW\site\cartoweb3\server\MapInfoHandler.php
call: ServerContext->getMapObj()

file: 155 - C:\WWW\site\cartoweb3\server\MapInfoHandler.php
call: MapInfoHandler->fillDynamicMap()

file: 49 - C:\WWW\site\cartoweb3\server\ServerMapInfoCache.php
call: MapInfoHandler->loadMapInfo()

file: 99 - C:\WWW\site\cartoweb3\common\MapInfoCache.php
call: ServerMapInfoCache->computeMapInfo()

file: 169 - C:\WWW\site\cartoweb3\common\MapInfoCache.php
call: ServerMapInfoCache->cacheMapInfo()

file: 170 - C:\WWW\site\cartoweb3\server\MapInfoHandler.php
call: ServerMapInfoCache->getMapInfo()

file: 319 - C:\WWW\site\cartoweb3\server\ServerContext.php
call: MapInfoHandler->getMapInfo()

file: 188 - C:\WWW\site\cartoweb3\server\Cartoserver.php
call: ServerContext->getMapInfo()

file: 333 - C:\WWW\site\cartoweb3\server\Cartoserver.php
call: Cartoserver->doGetMapInfo()

file: 373 - C:\WWW\site\cartoweb3\server\Cartoserver.php
call: Cartoserver->callWithExceptionCheck()

file: 77 - C:\WWW\site\cartoweb3\client\CartoserverService.php
call: Cartoserver->getMapInfo()

file: 129 - C:\WWW\site\cartoweb3\client\CartoserverService.php
call: CartoserverService->callDirect()

file: 185 - C:\WWW\site\cartoweb3\client\CartoserverService.php
call: CartoserverService->callFunction()

file: 60 - C:\WWW\site\cartoweb3\client\ClientMapInfoCache.php
call: CartoserverService->getMapInfo()

file: 99 - C:\WWW\site\cartoweb3\common\MapInfoCache.php
call: ClientMapInfoCache->computeMapInfo()

file: 169 - C:\WWW\site\cartoweb3\common\MapInfoCache.php
call: ClientMapInfoCache->cacheMapInfo()

file: 501 - C:\WWW\site\cartoweb3\client\Cartoclient.php
call: ClientMapInfoCache->getMapInfo()

file: 313 - C:\WWW\site\cartoweb3\client\Cartoclient.php
call: Cartoclient->getMapInfo()

file: 20 - C:\WWW\site\cartoweb3\htdocs\client.php
call: Cartoclient->__construct()




En comparaison, présentation du code à partir duquel j'ai créé les étiquettes des communes

LAYER
    NAME         "limcomm"
    CONNECTIONTYPE  OGR
    CONNECTION  "infos_generales\N_COMMUNE_BDC_068.TAB"
    TYPE         Polygon
    STATUS ON
    PROJECTION
      "init=epsg:27582"
    END
    LABELITEM "Nom_Commune"
    CLASS
      NAME         "limcomm"
      STYLE
        OUTLINECOLOR   150 150 150
        SIZE    1
      END
      LABEL
        TYPE TRUETYPE
        FONT  "Vera"
        SIZE  5
        COLOR 0 0 0
      END 
    END
  END

Merci d'avance pour les explications que vous pourrez m'apporter

Bertrand DORNER
Administrateur de données géographiques
DDAF du Haut-Rhin

Hors ligne

 

#2 Fri 13 January 2006 19:53

fbadet
Juste Inscrit !
Lieu: France
Date d'inscription: 5 Sep 2005
Messages: 6

Re: Incompréhension du code pour créer des étiquettes

Bertrand,

Je pense qu'il y a tout simplement une erreur de syntaxe à la ligne 126.
Sans être totalement affirmatif car je n'ai pas verifié dans la doc ni
testé, ta directive LABEL devrait se trouver à l'intérieur de la CLASS.

Quel outil utilise tu pour éditer le Mapfile ?

Cordialement,

Francois Badet

Dernière modification par fbadet (Wed 27 September 2006 19:30)


Francois Badet

Hors ligne

 

#3 Fri 13 January 2006 19:54

Jean-Guilhem Cailton
Invité

Re: Incompréhension du code pour créer des étiquettes

Bonjour,

Une remarque toute simple : dans votre fichier map qui déclenche l'erreur, la fin (END) de l'objet CLASS précède la définition du LABEL, alors que dans le fichier qui fonctionne bien, le LABEL est inclus dans l'objet CLASS. Essayez donc d'inclure le LABEL dans la CLASS.

(D'après la documentation de MapServer, un LABEL peut bien être inclus dans une CLASS, mais pas directement dans un objet LAYER comme ici)

Cordialement,

Jean-Guilhem Cailton
Arkémie

 

#4 Tue 17 January 2006 09:22

Bertrand DORNER
Participant actif
Lieu: COLMAR
Date d'inscription: 5 Sep 2005
Messages: 90

Re: Incompréhension du code pour créer des étiquettes

Bonjour,

Et merci pour vos réponses. Il s'agissait bien d'une erreur de saisie, que je n'avais pas remarquée.

Se pose alors la question légitime de l'outil éventuel d'aide à l'écriture du mapfile.
Le site a été réalisé, dans sa toute première version, par un stagiaire en fin d'études d'ingénieur, désormais en poste à la DDAF/DRAF de Corse. Il avait bien testé maplab lors de sa phase de prospection au pintemps 2005, mais maplab s'était révélé non compatible avec la version utilisée de cartoweb et de mapserver. Ce faisant, maplab a été abandonné. En rappelant que la prise en compte directe de fichiers mapinfo n'était possible qu'avec la dernière version de mapserver (sortie à la fin de l'hiver 2005)

Je mets à jour le mapfile aussi bien que le layers.ini via un éditeur de texte, paspadeditor, ce qui m'expose naturellement aux erreurs de saisie. Je ne sais pas non plus quelles sont les évolutions de maplab. En fait, je déduis le code pour les dernières couches insérées dans notre intranet carto local à partir de celui de couches déjà existantes, et à l'aide de la documentation résumée réalisée par le stagiaire. Je précise que je ne suis pas informaticien de formation.

Bertrand Dorner
Administrateur de données géographiques
DDAF du Haut-Rhin

Hors ligne

 

Pied de page des forums

Powered by FluxBB