#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