.. _faq:
***************************************************
FAQ
***************************************************
Où sont les fichiers logs de MapServer ?
-------------------------------------------------------------------------------
Voir :ref:`rfc28`
Quels livres sont disponible sur MapServer ?
-------------------------------------------------------------------------------
`"Mapping Hacks" `__ par Schuyler
Erle, Rich Gibson, et Jo Walsh est disponible via O'Reilly.
`"Web Mapping Illustrated" `__ par Tyler
Mitchell est disponible chez O'Reilly. Introduit MapServer et plusieurs autres
outils connexes dont GDAL/OGR, MapScript, PostGIS, map projections,
etc.
`"MapServer: Open Source GIS Development"
`__ par Bill Kropla.
Comment je compile MapServer pour Windows ?
-------------------------------------------------------------------------------
Voir :ref:`win32`. Vous pouvez également utiliser les bibliothèques de développement sur :ref:`OSGeo4W
` comme base de départ au lieu de compiler toutes les dépendances vous même.
Que signifie les numéros de version de MapServer ?
-------------------------------------------------------------------------------
Le schéma de numérotation des versions de MapServer est très similaire à celui de Linux.
Par exemple, un numéro de version de MapServer de 4.2.5 peut être décodé comme cela :
- 4 : Numéro de version majeur. MapServer publie une version majeure tous les deux ou trois ans.
- 2 : Numéro de version mineur. L'incrémentation d'un numéro de version mineure est toujours
lié à des ajouts de fonctionnalités.
- 5 : Numéro de révision. Les révisions sont des corrections de bug seulement. Aucunes
nouvelles fonctionnalités n'est fournie dans ces révisions.
D'un point de vue d'un développeur, le schéma de numérotation des versions de MapServer
est identique à celle de Linux. Les numéros de version pairs (0..2..4..6) sont des versions
publiées, et les versions impairs (1..3..5..7) correspondent à des versions de développement.
Est ce que MapServer est Thread-safe?
-------------------------------------------------------------------------------
**Q** : Est ce que MapServer est thread-safe?
**R** : D'un point de vue générale, non (mais lisez la section suivante). Plusieurs composants
de MapServer utilisent des données globales ou statiques qui peuvent être potentiellement
modifiées par un autre thread. Sous une charge importante cela devient inévitable et il peut
subvenir des erreurs ponctuels.
**Q** : Est il possible d'utiliser MapServer dans une application multi-threaded en toute sécurité ?
**R** : Certaines oui, avec une attention particulière. Ou avec Python :) Les développeurs doivent
soit éviter d'utiliser des composants non sécurisés de MapServer ou placer soigneusement des blocages
sur ceux-ci. Le blocage de l'interpreteur global de Python immunise contre les problèmes de threading
de MapServer ; puisque aucun code mapscript ne publie le GIL toutes les fonctions ou méthodes
de MapServer sont atomique. Les utilisateurs de mapscript et de JAVA, .NET, mod_perl, ou mod_php
n'ont pas cette couche supplémentaire de protection.
**Q** : Quels composants doivent être évité ?
**R** : Ci-dessous est la liste des composants non protégé ou non sécurisé et les composants non
sécurisé mais bloqué.
Non sécurisé :
- Couches OGR : utilisation de services CPL non sécurisé
- Rendu Cartoline : données statiques
- Export Imagemap : données statiques
- Export SWF : données statiques et utilisation de msGetBasename() non sécurisé
- Export SVG : données statiques
- Serveur WMS/WFS : données statiques utilisé pour l'état du dispatcher
- Forcer une base des fichiers temporaires (une fonctionnalité obscure) : données statiques
- MyGIS : quelques données statiques
Non sécurisé, mais bloqué :
- Chargement du fichier map de configuration : parseur global
- Définition des expressions de filtre de couche ou de classe (parseur global)
- Évaluation des expressions des classes (parseur global)
- Définition des projections des couches et des cartes (PROJ)
- Requêtage et rendu des couches raster (GDAL)
- Connexion aux bases de données (mappool.c)
- Gestion de PostGIS
- Oracle Spatial (utilise une simple prise en charge de l'environnement pour la connexion)
- Gestion de SDE (cache global des couches)
- Prise en charge des erreurs (dépôt statique des objets d'erreur)
- Connexions cliente de WMS/WFS : potential race condition in Curl initialization
- Couches Plugin (dépôt statique de dll-s chargés)
Des serrures secondaires sont plutôt mis en place pour ce qui précède. Seul un thread
peut utiliser un parseur global à la fois, et seul un thread peut accéder à des données
raster par GDAL au même moment. La performance est échangée pour la sécurité.
Que signifie STATUS dans une LAYER ?
-------------------------------------------------------------------------------
STATUS ON et STATUS OFF définie le statuts par défaut de la couche. Si une couche est demandée,
ces couches seront définie à ON/OFF à moins que cela soit définie différemment via le paramètre LAYER.
Cela est particulièrement le cas lorsque vous utilisez MapScript et le mécanisme de modèle
incorporé de MapServer, mais est également utile lorsque vous écrivez vos propres applications
et définissez la vue initiale de la carte.
STATUS DEFAULT signifie que la couche est toujours affichée, même si elle n'est pas définie
dans le paramètre LAYER. Le status de la couche peut être changé de DEFAULT à OFF en MapScript,
sinon elle est toujours à ON.
:ref:`cgi` modifie toutes les valeurs qui ne sont pas en STATUS DEFAULT à la valeur OFF afin
que toutes les couches démarrent dans le même état (c'est à dire OFF) et doit être explicitement
demandée pour être dessinée ou interrogée. Cet état commun rend le développement plus facile (du
mois dans mon esprit). Je veux dire que si une couche "lakes" est définie à ON, l'appel de layer=lakes
la rendra à OFF. Je veux donc supprimer cette ambiguïté au démarrage.
Comment puis rendre le rendu de mes cartes plus rapide ?
-------------------------------------------------------------------------------
Il y a de nombreuses approches différentes pour améliorer les performances de
votre carte, à part bien évidemment d'acheter du matériel onéreux et plus rapide.
Voici quelques liens de howto individuels de différentes optimisation.
* :ref:`Tunez votre mapfile pour améliorer les performances `
* :ref:`Optimiser les performances des sources de données vecteurs `
* :ref:`Optimiser les performances des sources de données raster `
* :ref:`Tileindexes pour mosaïquer et améliorer les performances `
Quelques astuces générales pour tous les cas :
* Tout d'abord le matériel. Une barrette de mémoire supplémentaire améliorera les
performances au delà de toutes considérations sur vos données. Au prix de la barette
de mémoire de nos jours cela est peu onéreux et facile avec une mise à jour facilité.
* Utilisez des méthodes scientifique. Changez une chose à la fois, et regardez quel effet
cela entraîne. Essayez de désactiver toutes les couches puis activer les une par une
jusqu'à ce que vous trouvez celle qui pose problème.
* Utilisez le programme :ref:`shp2img` pour chronométrer vos résultats. Celui-ci est lancé
à partir de la ligne de commande et dessine une image de votre carte entière. Puisqu'il
est lancé à partir de la ligne de commande, il ne subit pas les délais d'Internet et
vous donerra des mesures plus cohérentes que votre navigateur.
Que signifie Polyline dans MapServer ?
-------------------------------------------------------------------------------
Il y a des confusions entre la signification de POLYLINE dans MapServer et ESRI.
Dans MapServer POLYLINE signifie simplement une représentation linéaire de données
POLYGON. Avec ESRI les polylignes signifie multi-ligne. Les anciennes versions de
la description technique du Shapefile ne parle même pas des polylignes, juste des
lignes. Les Shapefiles polyligne d'ESRI sont juste des lignes et peuvent seulement
être dessinée comme des couches LINE. Ces shapefiles n'ont pas de contraintes de
fermeture géométrique comme les Shapefiles polygonaux, c'est pourquoi la distinction
est si importante. Je suppose qu'il y a un meilleur choix que POLYLINE mais je ne
vois pas lequel.
.. note::
La seule différences entre les couches POLYLINE et LINE est la manière dont
les étiquettes sont placées.
Qu'est ce que MapScript ?
-------------------------------------------------------------------------------
MapScript est l'interface de script de MapServer, généré habituellement par
:term:`SWIG` (sauf pour :ref:`php`). MapScript vous permet de programmer avec
les objets de MapServer directement au lieu d'interagire avec MapServer via le
script :ref:`cgi` et les :ref:`mapfile`.
Est ce que MapServer gère le reverse géocoding ?
-------------------------------------------------------------------------------
Non.
Le reverse géocoding est la possibilité de générer des adresses postales à partir
d'une liste de géométrie. Ce type de fonctionnalité spatiale est fournie par des
applications propriétaires tels que la suite ESRI ou par des services tels que
ceux fournie par GDT. MapServer sert au *rendu cartographique* et ne fournie pas
d'opérations spatiales avancées telle que celle-ci.
Est ce que MapServer gère le géocoding ?
-------------------------------------------------------------------------------
Non.
Le géocoding est la possibilité de générer des points en latitude et longitude à
partir d'une liste d'adresses. Ce type de fonctionnalité spatiale est fournie par des
applications propriétaires tels que la suite ESRI ou par des services tels que
ceux fournie par GDT. MapServer sert au *rendu cartographique* et ne fournie pas
d'opérations spatiales avancées telle que celle-ci.
Si vous utilisez MapScript, il y a un géocoder libre disponible à travers XMLRPC
et SOAP à http://geocoder.us . Vous pouvez lier votre application à ce service
pour fournir des coordonnées pour les adresses, puis utiliser MapServer pour
afficher ces points.
Comment je définie une largeur de ligne dans ma carte ?
-------------------------------------------------------------------------------
Vous devez définir un symbol 'circle' pour la LAYER puis définir la taille du
symbol à la largeur désirée. Un symbole 'circle' peut être définie comme ceux-ci :
.. code-block:: mapfile
SYMBOL
NAME 'circle'
TYPE ELLIPSE
FILLED TRUE
POINTS 1 1 END
END
Pourquoi mes images en JPEG ne sont pas jolie via MapServer ?
-------------------------------------------------------------------------------
Le format de sortie de MapServer est le format PNG pseudo-couleur en 8 bit ou
le format GIF. Intrinsèquement, il y aura une certaine dégradation de la couleur
lors de la conversion d'une image 24 bits (16 millions de couleurs) en image en
8 bits (256 couleurs).
Mais dans le but d'assurer un rendu rapide MapServer utilise une méthode simple
pour réaliser la transformation, en convertissant les pixels à la couleur la
plus proche dans le cube de couleur à 175 couleurs. Cela entrainera des couleurs
tachetées dans une image assez facilement différentes.
Parmi les solutions possibles :
- Sélectionnez un rendu en 24 bit. Cela peut être aussi facile que de rajouter
"IMAGETYPE JPEG" dans votre objet MAP.
- Activer le tramage (PROCESSING "DITHER=YES") pour produire une meilleure
apparence des couleurs.
- Prétraitez vos images en 8 bit avant de l'utiliser dans MapServer avec une
application externe comme le script rgb2pct.py de GDAL.
Pour plus d'information lisez :ref:`raster`.
Quel format d'image doit je utiliser ?
-------------------------------------------------------------------------------
Bien que MapScript puisse générer une carte dans n'importe quel format d'image,
il est suffisant de considérer les trois plus importants : JPEG, PNG, et GIF.
JPEG est un format d'image qui utilise un algorithme de compression avec perte
pour réduire la taille de l'image et il est utilisé lorsque la parte de détails
à cause de la compression est soit pas visible soit négligeable comme dans la
plupart des photos. Les cartes d'un autre côté consiste principalement en ligne
fine et en surface colorée, ce qui n'est pas connu pour être affiché
correctement par le format JPEG. De plus les cartes, sauf si elles incluent
des images aériennes et satellites, utilise généralement très peu de couleur.
Le format JPEG avec sa profondeur de couleur à 24 bit est capable d'afficher
environ 16,7 millions de couleurs n'est pas pertinent pour cet objectif. Les
formats GIF et PNG cependant utilisent une palette de couleur indexée qui peut
être optimisé pour n'importe quel nombre (jusqu'à 256) de couleurs ce qui les
rend pertinent pour les icônes, logos, graphique et cartes. La comparaison
suivante (taille d'image générée ; et pas la durée de génération des fichiers)
incluera donc ces deux formats de fichiers :
.. table:: Taille des images générées en GIF, PNG et PNG24
+----------------------------------------------------------+-------+-------+-------+
| | GIF | PNG | PNG24 |
+==========================================================+=======+=======+=======+
|Données vecteur seulement | 59kb | 26kb | 69kb |
+----------------------------------------------------------+-------+-------+-------+
|Vector Data Données vecteur & Image Satellite colorée | 156kb | 182kb | 573kb |
+----------------------------------------------------------+-------+-------+-------+
|Vector Data Données vecteur & Image Satellite monochrome | 142kb | 134kb | 492kb |
+----------------------------------------------------------+-------+-------+-------+
(résultats basés sur une carte de 630x396 avec plusieurs couleurs, symboles, étiquettes/annotations, etc.)
Bien que le format GIF montre des performances quantitative ainsi que qualitative sur
le format PNG lors de la génération d'une carte qui contient des images colorées de
capteur distant, le format PNG est clairement le vainqueur quantitatif en terme de
taille de fichiers générés pour les cartes avec ou sans images additionnelle monochrome
et doit donc être le format d'image préféré. Si l'application cartographique peut
aussi afficher des images satellites ou aérienne en pleine couleur, le format de fichier
en sortie peut être changé dynamiquement soit pour le format GIF ou le format PNG24
pour atteindre la qualité d'image la plus importante possible.
Pourquoi la bibliothèque PIL (Python Imaging Library) n'ouvre pas mes PNG ?
-------------------------------------------------------------------------------
`PIL `__ ne gère pas les PNG entrelacés
pour l'instant (aucune planification de quand cela le sera n'a été définie). Pour
lire des PNG dans PIL, ceux-ci ne doivent pas être entrelacé. Modifier l'objet
OUTPUTFORMAT avec un paramètre FORMATOPTION comme ceci :
.. code-block:: mapfile
OUTPUTFORMAT
NAME png
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE RGB
EXTENSION "png"
FORMATOPTION "INTERLACE=OFF
END
Pourquoi mes symboles paraissent fade dans les rendues en JPEG ?
-------------------------------------------------------------------------------
Quand je fais un rendu de mes symboles en 8 bit (PNG, GIF) ils sont bien rendus,
mais pour un rendu en jpeg en 24 bits ils paraissent vraiment moches.
Dans le but d'afficher des classes de symboles proprement dans un rendu en 24 bit,
tels que les symboles des polices true type, il est nécessaire de forcer le rendu
en RGBA. Cela peut être réaliser en rajoutant la ligne "TRANSPARENCY ALPHA" dans la
définition de la couche. N'utiliser pas cela d'une manière automatique car il y a
une perte de performance.
Ce problème affecte également le rendu en PNG24 ou n'importe quel format RVB. Les
types de rendu RVBA et 8 bit (PC256) sont déjà correct.
Comment je rajoute un copyright dans le coin de ma carte ?
-------------------------------------------------------------------------------
Vous pouvez utiliser un objet géométrique avec l'objet :ref:`FEATURE`, pour créer un
poiint sur votre carte. Utilisez le paramètre TEXT de l'objet FEATURE pour le texte
du copyright, et un objet :ref:`LABEL` pour le styler.
Exemple de couche
...............................................................................
.. code-block:: mapfile
LAYER
NAME "copyright"
STATUS ON
TYPE annotation
TRANSFORM ll #définie l'origine de l'image à 'en bas à gauche'
FEATURE
POINTS
60 -10 #définie le décalage en peixels à partir du point en bas à gauche
END
TEXT "© xyz company 2006" #Ceci est votre texte à afficher
END
CLASS
LABEL #définie la police, la couleur du texte
FONT "sans"
TYPE TRUETYPE
SIZE 8
BUFFER 1
COLOR 0 0 0
BACKGROUNDCOLOR 255 255 255
FORCE TRUE
END
END
UNITS PIXELS #définit les unités pour l'objet géométrique
END
Résultat
...............................................................................
.. image:: ./images/copyright-image.png
Comment puis je réaliser un polygone qui a à la fois un contour avec une taille et un remplissage ?
-----------------------------------------------------------------------------------------------------
À chaque fois que je met une couleur (de remplissage) et une couleur de
contour avec une taille sur un polygone dans un objet STYLE, la taille du
contour n'est pas respecté.
Pour des raisons historiques, la largeur a deux significations lors du
remplissage des polygones et les largeurs des traits pour le contour. Si
un polygone est rempli, alors la largeur définie la taille du symbole
*à l'intérieur* du polygone remplis. Dans ce cas, la largeur du contour
est ignorée et il est toujours définie à 1. Pour réaliser à la fois un
effet de remplissage et de largeur de contour, vous devez utiliser deux
styles dans votre classe.
.. code-block:: mapfile
STYLE # remplissage solide
COLOR 255 0 0
END
STYLE # contour fin (vous pouvez également utiliser un symbol "cercle" avec une taille)
OUTLINECOLOR 0 0 0
WIDTH 3
ANTIALIAS TRUE
END
Comment je peux créer des objets linéaires antialisés ?
-------------------------------------------------------------------------------
La manière la plus simple de produire des lignes antialisées est de :
- utiliser un type d'image de 24 bit (IMAGEMODE RGB (ou RGBA))
- définir la couche utilisant les lignes antialisées avec TRANSPARENCY ALPHA
- définir ANTIALIAS TRUE dans l'élément STYLE de la classe avec des lignes antialisées
L'exemple de mapfile suivant active les frontières antialisées :
.. code-block:: mapfile
...
IMAGETYPE "png24"
...
OUTPUTFORMAT
NAME "png24"
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE RGB
EXTENSION "png"
END
...
LAYER
NAME "counties"
TYPE line
STATUS default
DATA "bdry_counln2"
TRANSPARENCY alpha
SYMBOLSCALE 5000000
CLASS
STYLE
WIDTH 3
COLOR 1 1 1
ANTIALIAS true
END
END
END
...
.. note::
Le shapefile bdry_counln2 référencé dans la couche counties est un shapefile
linéraire. Un shapefile polygonal peut être substitué avec presque le même
résultat, mais en raison de la nature des shapefiles chaque limite serait
affiché à deux reprises et la ligne en sortie qui en résulterait apparaitrait
probablement légèrement plus épaisse. Alternativement, on peut utiliser un
shapefile polygone, définissez TYPE à POLYGON, et utiliser OUTLINECOLOR
à la place de COLOR dans l'élément STYLE.
.. note::
Vous pouvez utiliser la combinaison de STYLE->WIDTH et SYMBOLSCALE pour
modifier la largeur des lignes dans les images rendues.
.. seealso::
Les symboles :ref:`Cartoline ` peuvent être utilisés
pour réaliser de plus jolie effets.
Quelles spécifications OGC sont géré par MapServer ?
-------------------------------------------------------------------------------
* Web Map Service (OGC:WMS) 1.0.0, 1.0.7, 1.1.0 et 1.1.1
* Web Feature Service (OGC:WFS) 1.0.0, 1.1.0
* Web Coverage Service (OGC:WCS) 1.0.0, 1.1.0
* Geography Markup Language (OGC:GML) 2.1.2, 3.1.0 Level 0 Profile
* Web Map Context Documents (OGC:WMC) 1.0.0, 1.1.0
* Styled Layer Descriptor (OGC:SLD) 1.0.0
* Filter Encoding Specification (OGC:FES) 1.0.0
* Sensor Observation Service (OGC:SOS) 1.0.0
* Observations and Measurements (OGC:OM) 1.0.0
* SWE Common (OGC:SWE) 1.0.1
* OWS Common (OGC:OWS) 1.0.0, 1.1.0
Pourquoi ma couche WMS demandée ne s'aligne pas correctement ?
-------------------------------------------------------------------------------
Faire une requête vers certain connecteur ArcIMS entrainent une carte avec des données
mal alignées (le rapport des pixels semble incorrecte).
Certains sites ArcIMS ne sont pas configuré par défaut pour étirer l'image renvoyée pour
correspondre à l'enveloppe demandée. Cela entraine une carte avec des couches de données
qui se superposent correctement au centre de la couche, mais pas vers les bords. Cela
peut être corrigé en ajoutant "*reaspect=false*" à la requête (dans la chaîne de connexion).
Par exemple si votre mapfile est dans une projection différente de EPSG:4326, la couche suivante
ne s'affichera pas correctement :
.. code-block:: mapfile
LAYER
NAME "hillshade"
TYPE RASTER
STATUS OFF
TRANSPARENCY 70
CONNECTIONTYPE WMS
CONNECTION "http://gisdata.usgs.net:80/servlet19/com.esri.wms.Esrimap/USGS_WMS_NED?"
PROJECTION
"init=epsg:4326"
END
METADATA
"wms_srs" "EPSG:4326"
"wms_title" "US_NED_Shaded_Relief"
"wms_name" "US_NED_Shaded_Relief"
"wms_server_version" "1.1.1"
"wms_format" "image/png"
END
END
En ajoutant "reaspect=false" à la chaîne de connexion cela résoud le problème :
.. code-block:: mapfile
LAYER
NAME "hillshade"
TYPE RASTER
STATUS OFF
TRANSPARENCY 70
CONNECTIONTYPE WMS
CONNECTION "http://gisdata.usgs.net:80/servlet19/com.esri.wms.Esrimap/USGS_WMS_NED?reaspect=false"
PROJECTION
"init=epsg:4326"
END
METADATA
"wms_srs" "EPSG:4326"
"wms_title" "US_NED_Shaded_Relief"
"wms_name" "US_NED_Shaded_Relief"
"wms_server_version" "1.1.1"
"wms_format" "image/png"
END
END
Quand je fais une requête GetCapabilities, pourquoi mon navigateur veut télécharger mapserv.exe/mapserv ?
----------------------------------------------------------------------------------------------------------
Une question de débutant ici .... Je suis débutant sur MapServer et Apache. J'ai MS4W qui fonctionne et qui
est lancé avec la démo Itasca. Maintenant je veux l'activer en tant que serveur WMS. ``mapserver -v`` en ligne
de commande m'informe qu'il gère le service WMS. Quand je point mon navigateur vers celui-ci, il me demande
de télécharger mapserv.exe !
Qu'est ce que je fais mal ?
Voici l'util que j'utilise pour tester ma requête GetCapabilities :
http://localhost/cgi-bin/mapserv.exe?map=../htdocs/itasca/demo.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities
Les spécifications OGC:WMS 1.1.0 et 1.1.1 (qui sont tous les deux gérés par
MapServer) définissent que pour les réponses GetCapabilities, le serveur OGC:WMS renvoie
un type MIME spécifique (i.e. application/vnd.ogc.xml (voir la sous-clause
6.5.3 de `OGC:WMS 1.1.1
`__.
Un type MIME est renvoyé du serveur web au client (dans votre cas le navigateur)
avec lequel le client peut décider comment le traiter.
Exemple 1 : en utilisant un navigateur web, si un serveur web renvoie un en-tête HTTP
"Content-type:image/png", alors le navigateur web saura que c'est une image PNG et l'affichera correctement.
Exemple 2 : en utilisant un navigateur web, si un serveur web renvoie un en-tête HTTP
"Content-type:text/html", alors le navigateur web saura que c'est une page HTML
et l'affichera (i.e. tables, divs, etc.)
Tout simplement ce qui arrive est que le OGC:WMS renvoie, dans les en-têtes des réponses
HTTP, un type MIME que votre navigateur ne comprend pas, ce qui habituellement entraîne
l'ouverture d'une boîte de dialogue pour savoir si vous voulez ouvrir ou sauver le contenu
(i.e. Content-type:application/vnd.ogc.wms_xml).
Vous devez configurer votre navigateur web pour prendre en charge le type MIME
application/vnd.ogc.wms_xml d'une certaine façon (i.e. ouvrir dans Notepad, etc.).
Pourquoi mes requêtes GetMap WMS renvoient des exceptions en utilisant MapServer 5.0 ?
-----------------------------------------------------------------------------------------
Avant de mettre à jour vers MapServer 5.0, j'étais capable de faire de rapides tests GetMap sos la forme :
http://wms.example.com/wms?service=WMS&version=1.1.1&request=GetMap&layers=foo
Maintenant quand je tente le même test, le WMS de MapServer renvoie un document XML disant qu'il manque
des paramètres nécessaires. Que se passe t'il ?
Il y a eut un changement majeure pour la gestion du serveur WMS dans MapServer 5.0. Les requêtes GetMap du serveur
WMS de MapServer nécessitent maintenant les paramètres supplémentaires suivant :
* srs
* bbox
* width
* height
* format
* styles
.. note::
Ces paramètres étaient toujours nécessaire pour toutes les versions de la spécification WMS
mais MapServer ne les demandaient pas avant dans les requêtes clientes (même si la plupart
des clients WMS OGC les délivreront de toutes façon pour être compatible avec les spec WMS).
La requête ci-dessous constitue maintenant une requête GetMap valide :
::
http://wms.example.com/wms?service=WMS&version=1.1.1&request=GetMap&layers=foo&srs=EPSG:4326&bbox=-180,-90,180,90&format=image/png&width=400&height=300&styles=default
Ce qui est compatible avec la spécification WMS.
Pour plus d'information sur ces paramètres vous pouvez regarder :ref:`wms_server` et les `spécifications
OGC WMS 1.1.1 `__
Pour plus d'information détaillées, voir le `ticket 1088
`__
.. warning::
STYLES, bien que paramètre WMS obligatoire, est maintenant optionnel dans
MapServer. Pour plus d'informations voir le `ticket 2427
`__
Où puis je trouver mon code :term:`EPSG` ?
-------------------------------------------------------------------------------
Il y a un fichier texte "epsg" dans votre installation PROJ4 (par exemple dans
"/usr/local/share/proj/epsg") qui contient les informations EPSG utilisées par
PROJ4. Sous Windows, il est souvent localisé dans C:\\proj\\nad ou il peut être
vie une variable d'environnement appelée PROJ_LIB.
http://spatialreference.org vous permet de faire une recherche des codes EPSG.
Vous pouvez aussi jeter un oeil ici :
http://ocean.csl.co.uk
Plus d'information sur le code EPSG :
http://www.epsg.org
Plus d'information sur PROJ4 :
http://trac.osgeo.org/proj
How can I reproject my data using ogr2ogr?
-------------------------------------------------------------------------------
With ogr2ogr of course! ogr2ogr is a powerful utility that will transform the
projections of your shapefiles when passed the appropriate parameters. In my
case, I was using MapServer to serve data in RI State Plane Feet. In order to
do so, the data had to first be converted to meters. Here is the command I
used:
::
ogr2ogr -t_srs EPSG:32130 output.shp input.shp
Since my data already had a projection defined, I did not need to explicitly
state a source projection. This command uses the EPSG definition for NAD83
Rhode Island (32130) and performs the feet to meters conversion.
Now say my data wasn't already projected? Here's how we deal with that:
::
ogr2ogr -s_srs "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +to_meter=0.3408 +no_defs" -t_srs EPSG:32130 output.shp input.shp
Let's examine what is going on here:
The -s_srs parameter explicitly defines a projection for the data. The
parameters used here were taken out of the EPSG definition (in this case,
32130) in the epsg file(see the `projection FAQ `__ for more
details on locating EPSG definitions). The entry for RI in the epsg file is as
follows:
::
# NAD83 / Rhode Island
<32130> +proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.999994 +x_0=100000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs <>
You can see how the definition in the initial command is formulated. Notice
that the "+units=m" parameter has been changed to “+to_meter=0.3408”. This is
important for the conversion. Where did the value of 0.3408 come from you ask?
From the EPSG file! It has many goodies buried in it so by simply running
'grep "to_meter" epsg’ you can refresh your memory if you need to.
The next parameter in the command is "-t_srs EPSG:32130". This command tells
ogr2ogr to transform the data to the EPSG code of 32130. After this is
declared, all you need to do is declare a file name for your new shape file
and to set which file is being used as the input (note: make sure you don’t
confuse the order of these two).
Hit enter, bombs away, and enjoy your new data in meters!
Que signifie le logo de MapServer ?
------------------------------------------------------------------------------
Le logo de MapServer illustre la confluence des fleuves `Minnesota`_ et `Mississippi`_,
proche de la maison de `St. Paul Campus`_ de l'`Université du Minnesota`_, qui était
le `lieu de naissance de MapServer`_.
.. _`Minnesota`: http://en.wikipedia.org/wiki/Minnesota_River
.. _`Mississippi`: http://en.wikipedia.org/wiki/Mississippi_River
.. _`St. Paul Campus`: http://en.wikipedia.org/wiki/University_of_Minnesota#St._Paul_campus
.. _`Université du Minnesota`: http://en.wikipedia.org/wiki/University_of_Minnesota
.. _`lieu de naissance de MapServer`: http://lists.osgeo.org/pipermail/mapserver-dev/2009-December/009435.html