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

Printemps des cartes 2024

#1 Thu 03 November 2016 11:34

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

[MAPSERVER] Problème d'encodage des informations dans le TEMPLATE

Bonjour

nous disposons d'un shapefile contenant des lignes stockées sous linux affichées avec OpenLayers ;
nous souhaitons afficher le nom de la ligne en cliquant sur cette ligne.

pour cela nous effectuons une requête GetFeatureInfo permettant de récupérer ce nom
nous avons donc défini un template "Ligne.html" permettant d'afficher ce nom correspondant à la valeur du champ LIBELLE, par exemple :

<b>Ligne :</b>[LIBELLE]<br>

le problème est que l'information récupérée nous retourne :
Ligne :NOM LIGNE N�2

au lieu de :
Ligne :NOM LIGNE N°2

il y a donc un problème d'encodage

autres remarques :
-l'affichage des noms de lignes dans le mapfile sur la carte est correct
ces noms n'apparaissent qu'à une petite échelle spécifiée dans le mapfile ; l'intérêt du clic est d'avoir ce nom lorsque l'échelle est plus grande
-en rentrant directement la requête GetFeatureInfo dans le champ url du navigateur le problème persiste (donc Openlayers n'est pas en cause)
-en chargeant le shapefile dans QGIS, plusieurs formats (dont ISO-8859-1) permettent d'afficher correctement le libellé (mais pas utf-8)

nous avons essayé de forcer l'encodage dans le template (sans succès) de la manière suivante :

<html>
    <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
    </head>
    <body>
<b>Ligne :</b>[LIBELLE]<br>
</body>
</html>

concernant le mapfile, que l'on précise ou non les informations suivantes  ne changent rien aux résultats :
- "wms_encoding" "ISO-8859-1"
- encoding "ISO-8859-1" au niveau du layer Ligne
dans tous les cas l'affichage de l'information cliquée n'est pas correcte, par contre le label affiché sur la carte est correct

voici la description du layer où les lignes sont affichées systématiquement, par contre les labels n'apparaissent qu'à une petite échelle :

layer
  name "Ligne"
  type line
  TEMPLATE "Ligne.html"
  status on
  data "/path/data/lignes.shp"
  #maxscaledenom 10000010
  labelmaxscaledenom 50010
  labelitem LIBELLE
  projection
  "init=epsg:27572"
  end

  class
    name "LIGNE"
    style
      width 2
      outlinecolor "#FF0000"
    end
    label
      font "ArialRegular"
      type truetype
      size 8
      position uc
      buffer 2
      force true
      priority 5
      color "#FF0000"
   end
  end
end

autre information, la version de mapserver que nous utilisons est 6.0.4

merci d'avance pour votre aide

Jean-Marie

Hors ligne

 

#2 Tue 08 November 2016 15:48

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [MAPSERVER] Problème d'encodage des informations dans le TEMPLATE

Il fallait convertir les données textes contenues dans le fichier .dbf dans le format utf-8

après quelques recherches sur internet notamment
http://www.geoinformations.developpemen … a2941.html
voici une procédure :

1- convertir le shapefile en un fichier au format texte (GML, CSV, etc.), exemple :

Code:

$ogr2ogr -f "CSV" dest.csv source.shp

2- vérifier le format du fichier résultat, dans mon cas iso-8859-1 :

Code:

$file -i dest.csv
dest.csv: text/plain; charset=iso-8859-1

3- convertir le fichier "dest.csv" au format utf-8 :

Code:

$iconv -f ISO-8859-1 -t UTF-8 dest.csv -o dest_utf8.csv

4- générer le fichier .dbf dans le format utf-8 :

Code:

$export SHAPE_ENCODING="UTF-8"
$ogr2ogr -f "ESRI Shapefile" res.shp dest_utf8.csv -lco ENCODING=UTF-8

remarques :
-res.cpg contient la référence au format utf-8 (ce fichier est généré avec l'option '-lco ENCODING=UTF-8')
-res.dbf contient les libellés dans le format utf-8 grâce à l’initialisation de la variable d'environnement SHAPE_ENCODING

j'ai la version GDAL 1.9.2 ; à partir de la 1.11.3 on peut visiblement changer l'encodage du shapefile sans passer par un fichier intermédiaire

Hors ligne

 

Pied de page des forums

Powered by FluxBB