FAQ

Où sont les fichiers logs de MapServer ?

See Debugger Mapserver

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, les projections cartographiques, etc.

“MapServer: Open Source GIS Development” par Bill Kropla.

Comment je compile MapServer pour Windows ?

See Compiler sous Win32. Also, you can use the development libraries in OSGeo4W as a starting point instead of building all of the dependent libraries yourself. Windows users wanting a full installer (including Apache, MapServer, mapscripts, GDAL) please see MS4W

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. Aucune nouvelle fonctionnalité 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 ponctuelles.

Q : Est il possible d’utiliser MapServer dans une application multi-threadée 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’interpréteur 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 atomiques. 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és?

R : Voici ci-dessous la liste des composants non protégés ou non sécurisés et les composants non sécurisés mais bloqués.

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ées pour l’état du dispatcher

  • Forcer une base de 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 erreur)

  • Connexions cliente de WMS/WFS : condition de course (potential race) potentielle dans l’initialisation de Curl

  • 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éfinissent le statut par défaut de la couche. Si une couche est demandée, ces couches seront définies à 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 template interne de MapServer, mais c’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.

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 moins 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 optimisations.

Quelques astuces générales pour tous les cas:

  • Tout d’abord le matériel. Un barrette de RAM d’un GB améliorera les performances au delà de toutes considérations de tuning de vos données. Au prix de la RAM de nos jours, cela est peu onéreux et facile d’accélérer chaque rendu de carte avec une amélioration matérielle peu coûteuse.

  • 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 activez-les une par une jusqu’à ce que vous trouviez celle qui pose problème.

  • Utilisez le programme 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 donnera 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 parlent même pas des polylignes, juste des lignes. Les Shapefiles polyligne d’ESRI sont juste des lignes et peuvent seulement être dessinés 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 SWIG (sauf pour php). MapScript vous permet de programmer avec les objets de MapServer directement au lieu d’interagire avec MapServer via le script CGI et les 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étries. Ce type de fonctionnalité spatiale est fournie par des applications propriétaires telles que la suite ESRI ou par des services tels que ceux fournis par GDT. MapServer sert au rendu cartographique et ne fournit 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.. MapServer sert au rendu cartographique et ne fournit 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éfinis une largeur de ligne dans ma carte ?

Dans la version courante de Mapserver, la largeur de ligne est définie en utilisant le paramètre WIDTH de l’objet STYLE. Pour une couche LINE, les lignes peuvent être rouges et avec 3 pixels de large en utilisant le style suivant dans une CLASS.

STYLE
  COLOR 255 0 0
  WIDTH 3
END

Dans les versions antérieures de Mapserver, vous pouviez définir le symbole pour une LAYER à ‘circle’ et ensuite ensuite vous pouviez définir la taille SIZE du symbole à la largeur souhaitée. Un symbole ‘circle’ peut être défini comme

SYMBOL
  NAME 'circle'
  TYPE ELLIPSE
  FILLED TRUE
  POINTS 1 1 END
END

Why do my JPEG input images look different via MapServer?

Vous devez utiliser une vieille version de Mapserver (où GD était la bibliothèque par défaut pour le rendu).

Les nouvelles versions de Mapserver utilise AGG pour le rendu, et les formats de sortie par défaut sont en couleurs 24 bits, ainsi il ne devrait pas y avoir de problèmes.

Le format de sortie par défaut pour Mapserver avec GD était le PNG ou le GIF en pseudo-couleurs 8 bits. Par conséquent, il y aura une dégradation des couleurs en convertissant une image 24 bits image (16 million de couleurs ) en image 8 bits (256 couleurs).

Avec la sortie GD, MapServer utilisait une méthode assez simple pour faire la transformation, en convertissant les pixels dans la couleur la plus proche à partir d’un cube de couleurs de 175 couleurs. Cela devait donner une couleur marbrée avec une variation d’image assez douce.

Pour GD, les solutionsutiliées étaient de

  • Sélectionner un rendu en 24 bits. 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étraiter 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’informations, lisez Données 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 qui est utilisé lorsque la perte de détails à cause de la compression n’est pas visible ou est négligeable comme dans la plupart des photos. Les cartes d’un autre côté consistent principalement en des lignes fines et en surfaces colorées, ce qui n’est pas connu pour être bien affiché par le format JPEG. De plus les cartes, sauf si elles incluent des images aériennes et satellites, utilisent généralement très peu de couleurs. Le format JPEG avec sa profondeur de couleur à 24 bits, capable d’afficher environ 16,7 millions de couleurs n’est simplement pas adapté pour cela. Les formats GIF et PNG, eux, utilisent une palette de couleur indexée qui peut être optimisée pour n’importe quel nombre (jusqu’à 256) de couleurs ce qui les rend pertinents pour les icônes, logos, graphique et cartes. La comparaison suivante (taille des fichiers images générés; et pas la durée de génération des fichiers) incluera donc ces deux formats de fichiers :

Tailles de fichier Map générés GIF vs. PNG vs. PNG24
  GIF PNG PNG24

Données vecteur seulement

59kb 26kb 69kb

Données vecteur et images satellites colorées

156kb 182kb 573kb

Données vecteur et images satellites monochromes

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 quantitatives ainsi que qualitatives supérieures par rapport au format PNG lors de la génération d’une carte qui contient des images colorées de télédétection, 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 additionnelles monochromes et doit donc être le format d’image préféré. Si l’application cartographique peut aussi afficher des images satellites ou aériennes en pleine couleur, le format de fichier en sortie peut être changé dynamiquement en format GIF ou 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 pour cela le sera n’a été définie). Pour lire des PNG dans PIL, ceux-ci ne doivent pas être entrelacés. Modifier l’objet OUTPUTFORMAT avec un paramètre FORMATOPTION comme ceci :

OUTPUTFORMAT
  NAME png
  DRIVER "GD/PNG"
  MIMETYPE "image/png"
  IMAGEMODE RGB
  EXTENSION "png"
  FORMATOPTION "INTERLACE=OFF"
END

Pourquoi mes symboles paraissent fades dans les rendus 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.

Vous devez utiliser une ancienne version de Mapserver. Cela ne devrait plus être un problème avec les nouvelles versions. Ce qui suit explique l’ancien (avec GD) comportement

Dans le but d’afficher des classes de symboles correctement dans un rendu en 24 bits, tels que les symboles des polices true type, il est nécessaire de forcer le rendu en RGBA. Cela peut être réalisé 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à corrects.

Comment puis-je réaliser un polygone qui a, à la fois, un remplissage et un contour avec une taille ?

À chaque fois que je met une couleur (de remplissage) et une couleur de contour avec une largeur sur un polygone dans un seul objet STYLE, la taille du contour n’est pas respectée.

For historical reasons, width has two meanings within the context of filling polygons and stroke widths for the outline. If a polygon is filled, then the width defines the width of the symbol inside the filled polygon. In this event, the outline width is disregarded, and it is always set to 1. To achieve the effect of both a fill and an outline width, you need to use two styles in your class.

STYLE # solid fill
  COLOR 255 0 0
END
STYLE # thick outline
  OUTLINECOLOR 0 0 0
  WIDTH 3
END

Comment je peux créer des objets linéaires avec anticrênelages ?

Avec AGG (utilisé dans les versions récentes de Mapserver), les lignes anticrênelées sont par défaut, et ce fonctionnement ne peut pas être désactivé.

Avec GD, la manière la plus simple de produire des lignes avec anticrênelages est d’

  • utiliser un type d’image de 24 bit (IMAGEMODE RGB (ou RGBA))

  • définir TRANSPARENCY ALPHA dans la couche utilisant les lignes avec anticrênelages

  • définir ANTIALIAS TRUE dans l’élément STYLE de la CLASS avec des lignes avec anticrênelages

L’exemple de mapfile suivant active les bordures avec anticrênelages sur county:

...
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éaire. 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ée à deux reprises et la ligne générée en sortie apparaitrait probablement légèrement plus épaisse. Alternativement, on peut utiliser un shapefile polygone, définir le TYPE à POLYGON, et utiliser OUTLINECOLOR à la place de COLOR dans l’élément STYLE.

Note

Vous pouvez personnaliser la combinaison de STYLE->WIDTH et SYMBOLSCALE pour modifier la largeur des lignes dans les images de sortie.

Voir aussi

Les symboles Cartoline peuvent être utilisés pour avoir des effets plus jolis.

Quelles spécifications OGC sont géré par MapServer ?

Voir: Support des spécifications OGC dans MapServer.

Pourquoi ma couche WMS demandée ne s’aligne pas correctement ?

Faire une requête vers certains connecteurs WMS ArcIMS entrainent une carte avec des données mal alignées (le ratio des pixels semble incorrect).

Certains sites ArcIMS ne sont pas configurés 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 :

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 :

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 pointe mon navigateur vers celui-ci, il me demande de télécharger mapserv.exe !

Qu’est ce que j’ai loupé?

Voici l’URL que j’utilise pour débugger une requête WMS 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) qui permet au client de 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 (c’est à dire 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 (c’est à dire 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 (c’est à dire 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 eu un changement majeur 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 suivants:

  • 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 compatibles 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 Serveur WMS et les spécifications OGC WMS 1.1.1

Pour plus d’informations détaillées, lisez le ticket 1088

Avertissement

STYLES, bien qu’un paramètre WMS nécessaire, est maintenant de nouveau optionnel dans MapServer. Pour plus d’informations détaillées, lisez le ticket 24277

En utilisant MapServer 6.0, pourquoi mes couches ne s’affichent plus dans les réponses de requêtes GetCapabilities ou ne sont plus trouvées du tout?

MapServer 6.0 introduit l’option de cacher des couches dans les appels aux Web Service de l’OGC. Les Web Services OGC peuvent fournir des accès très puissants pour vps données géospatiales. Il a été décidé de désactiver l’accès au niveau des couches par défaut. Voir la MS RFC 67: Enable/Disable Layers in OGC Web Services qui fournit l’explication complète des changements et de leurs implications.

Pour permettre de revenir au comportement avant la version 6.0, vous pouvez ajouter ce qui suit dans la section METADATA de l’objet :ref:`WEB`de votre mapfile:

"ows_enable_request" "*"

Cela permettra l’accès à toutes les couches pour tous les requêtes de Web Service OGC.

Où puis-je trouver mon code EPSG ?

There is a text file “epsg” in your PROJ4 installation (e.g. “/usr/local/share/proj/epsg”) which contain the EPSG information used by PROJ4. In Windows, MS4W users can find the epsg file at C:\ms4w\proj\nad, or it can be generally found with an environment variable called PROJ_LIB.

http://spatialreference.org and http://epsg.io/ allow you to search for EPSG codes.

More information on EPSG: http://www.epsg.org

More information on PROJ4: https://github.com/OSGeo/proj.4/wiki

Comment je peux reprojeter mes données en utilisant ogr2ogr

Avec ogr2ogr bien sûr! ogr2ogr est un utilitaire très puissant qui va transformer les projections de vos shapefiles quand vous lui passez les paramètres appropriés. Dans mon cas, j’utilisais Mapserver pour servir les données en “RI (Rhode Island) State Plane Feet”. Por faire ceci, les données devaient d’abord être converties en mètres. Voici les commandes que j’ai utilisé:

ogr2ogr -t_srs EPSG:32130 output.shp input.shp

Comme mes données avaient déjà une projection définie, je n’ai pas eu besoin de définir explicitement la projection de la source. Cette commande utilise la définition EPSG pour le “NAD83 Rhode Island (32130)” et fait la conversion des pieds vers les mètres.

Maintenant disons que ma donnée n’était pas déjà projetée? Voici comment nous pouvons gérer ce cas avec:

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

Laissez-loi examiner ce qu’il se passe ici:

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 previous 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 <>

Vous pouvez voir comment la définition dans la commande initiale est formulée. Notez que le paramètre “+units=m” a été changé à “+to_meter=0.3408”. C’est imporant pour la conversion. Vous vous demandez d’où la valeur de 0.3408 vient? Du fichier EPSG! Il y a de nombreux bonus cachés dedans ainsi en lançant simplement un ‘grep “to_meter” epsg’ vous pourrez rafraîchir votre mémoire si vous en avez besoin.

Le prochain paramètre dans la commande est “-t_srs EPSG:32130”. Cette commande dit à ogr2ogr de transformer la donnée vers le code EPSG 32130. Après que cette déclaration, tout ce qu’il reste à faire est de déclarer un nom de fichier pour votre nouveau fichier shape et de définir quel fichier est utilisé en entrée (attention: assurez-vous de ne pas inverser l’ordre de ces deux derniers).

Tapez entrée, laissez mouliner et apprécier votre nouvelle donnée en mètres!

Comment puis-je aider à améliorer la documentation sur ce site?

Des nouveaux contenus pour la documentation et des corrections sur la documentation existante sont particulèrement bienvenues. Ces contributions sont gérées par le même gestionnaire de suivi de problèmes utilisé pour suivre les bugs et les améliorations du logiciel.

Suivre les instructions pour soumettre des bugs à: http://www.mapserver.org/development/bugs.html. Quand vous créez un ticket, dans le champ Component, sélectionnez MapServer Documentation. Si votre ticket concerne porte sur une page web spécifique, merci d’inclure l’URL vers cette page.

Si vous avez des astuces ou des exemples qui ne paraissent pas correspondre au but de cette documentation, un bon endroit pour les partager est le wiki MapServer sur: https://github.com/mapserver/mapserver/wiki