#1 Wed 24 June 2009 13:38
- BBarthur
- Participant actif
- Date d'inscription: 17 Jun 2009
- Messages: 57
[Mapserver] WMS changer de projection
Bonjour
Mon MapServer sert un WMS actuellement en epsg 4326. J'aimerais pouvoir le changer en epsg 21781, car les cartes sont aplaties. Je suis un peu perdu dans mon mapfile, sachant que j'ai des attributs PROJECTION ou encore wms_srs un peu partout.
Voici Ă quoi ressemble mon mapfile:
Code:
MAP
OUTPUTFORMAT
NAME png
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE RGB
EXTENSION "png"
FORMATOPTION "INTERLACE=OFF"
END
NAME "Essai"
EXTENT -180 -90 180 90
IMAGECOLOR 255 255 255
IMAGETYPE png
SIZE 400 300
STATUS ON
UNITS METERS
MAXSIZE 4000
PROJECTION
"init=epsg:4326"
END
WEB
IMAGEPATH "..."
IMAGEURL "..."
METADATA
"wms_title" "WMS Essai"
"wms_onlineresource" "http://localhost/cgi-bin/mapserv?map=/.../mapfile.map&"
"wms_srs" "EPSG:4326"
END
END
LAYER
DATA "..."
NAME "..."
PROJECTION
"init=epsg:21781"
END
METADATA
"wms_title" "..."
"wms_srs" "EPSG:4326"
END
STATUS ON
TYPE RASTER
UNITS METERS
END
ENDCe mapfile fonctionne, mais lorsque je fais des modifs, soit le client me donne une erreur de srs, soit ça ne change rien.
Une idée ?
Merci
Hors ligne
#2 Wed 24 June 2009 13:45
Re: [Mapserver] WMS changer de projection
Bonjour,
Il faut réaliser deux choses pour que cela fonctionne :
1. permettre au serveur carto la reprojection, pour cela dans le mapfile il faut lui lister les projections autorisées :
Code:
"wms_srs" "EPSG:4326 EPSG:21781"
(de mémoire)
2. il faut demander la projection dĂ©sirĂ©e dans la requĂȘte envoyĂ©e au serveur WMS : LAYERS=babla&SRS=EPSG:21781
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#3 Wed 24 June 2009 13:48
Re: [Mapserver] WMS changer de projection
Bonjour,
Voici un exemple complet de MapFile pour un serveur WMS avec la configuration pour la reprojection :
http://mapserver.org/ogc/wms_server.htm … er-mapfile
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#4 Wed 24 June 2009 15:23
- BBarthur
- Participant actif
- Date d'inscription: 17 Jun 2009
- Messages: 57
Re: [Mapserver] WMS changer de projection
1. permettre au serveur carto la reprojection, pour cela dans le mapfile il faut lui lister les projections autorisées :
Code:
"wms_srs" "EPSG:4326 EPSG:21781"
Ajouté à mon mapfile.
2. il faut demander la projection dĂ©sirĂ©e dans la requĂȘte envoyĂ©e au serveur WMS : LAYERS=babla&SRS=EPSG:21781
Pour cela, j'imagine que MapFish/OpenLayers s'en occupent via:
Code:
map = new OpenLayers.Map('mymap', { projection: "EPSG:21781", ...Non ?
MalgrĂ© tout cela, le rĂ©sultat est le mĂȘme. Je fais Ă©videmment attention Ă modifier les bounds dans mon code JS et l'extent dans le mapfile avec des coordonnĂ©es correspondant Ă cet epsg, mais rien n'y fait.
Hors ligne
#5 Wed 24 June 2009 15:35
Re: [Mapserver] WMS changer de projection
Bonjour,
il faut peut ĂȘtre vider le cache du navigateur ![]()
Tu peux tester ton service WMS directement sans passer par OpenLayers histoire de voir si ta couche s'affiche correctement.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Wed 24 June 2009 16:04
- BBarthur
- Participant actif
- Date d'inscription: 17 Jun 2009
- Messages: 57
Re: [Mapserver] WMS changer de projection
Le cache du navigateur n'y est pour rien apparemment.
Par contre, je me demande si ce n'est pas mon map.setcenter(new OpenLayers.LonLat(...),...) qui pose problÚme, puisque je suis en epsg 21781 et plus en 4326. J'ai essayé de mettre des coordonnées en 21781 dedans mais c'est pareil. Il faut utiliser une autre fonction ?
Hors ligne
#7 Wed 24 June 2009 16:08
Re: [Mapserver] WMS changer de projection
Bonjour,
Vous devez dĂ©finir la projection de la carte (objet map) et des couches (objects layers) dans la mĂȘme projection. Il est toutefois possible de reprojeter des couches via OpenLayer (mais plus complexe).
Il vaut mieux garder une projection commune pour toute vos couches et réaliser la reprojection cÎté serveur.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#8 Wed 24 June 2009 16:22
- BBarthur
- Participant actif
- Date d'inscription: 17 Jun 2009
- Messages: 57
Re: [Mapserver] WMS changer de projection
Admettons que mon WMS soit entiÚrement en epsg 21781. CÎté client, je dois avoir:
Code:
map = new OpenLayers.Map('mymap', { projection: "EPSG:21781", ...ça c'est juste ?
Si oui, comment je fais mon map.setcenter(new OpenLayers.LonLat(...),...) ? Avec des coordonnées en 21781 ? ou malgré tout en 4326 ?
J'avoue que je suis un peu perdu dans tout ça.... et ça m'agace furieusement de passer une demi-journée sur un truc à priori trÚs simple.
Hors ligne
#9 Wed 24 June 2009 16:26
Re: [Mapserver] WMS changer de projection
Bonjour,
Je pense qu'il faut aussi définir la projection de la carte
Code:
var options = {
projection: new OpenLayers.Projection("EPSG:21781"),
units: 'm',
};
map = new OpenLayers.Map('map', options);Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#10 Wed 24 June 2009 17:47
- BBarthur
- Participant actif
- Date d'inscription: 17 Jun 2009
- Messages: 57
Re: [Mapserver] WMS changer de projection
YESSS !!
Merci Yves !
Ă l'origine de mes tracas d'une aprĂšs-midi entiĂšre: le units:'m'
Pas besoin de déclarer le new OpenLayers.Projection(...), le simple projection: 'EPSG:21781' suffit.
Encore merci, problÚme résolu !
Hors ligne
#11 Wed 08 July 2009 21:13
- chec
- Juste Inscrit !
- Date d'inscription: 18 Apr 2007
- Messages: 1
Re: [Mapserver] WMS changer de projection
Pourriez vous indiquer à la communauté comment vous avez réussi à résoudre votre problÚme
Hors ligne
#12 Wed 08 July 2009 21:45
- BBarthur
- Participant actif
- Date d'inscription: 17 Jun 2009
- Messages: 57
Re: [Mapserver] WMS changer de projection
TrĂšs volontiers, bonjour quand mĂȘme.
Eh bien comme je l'indique deux messages plus haut, le problÚme venait apparemment du fait que je ne spécifiais pas les unités à openlayers. Voilà .
Je précise que je ne reprojette pas mes données, contrairement à ce que le titre du topic pourrait laisser croire.
Bon allez, je vais ĂȘtre un peu plus prĂ©cis. Dans mon mapfile, j'ai:
Code:
PROJECTION
"init=epsg:21781"
END
WEB
IMAGEPATH "***"
IMAGEURL "***"
METADATA
"wms_title" "WMS_titi"
"wms_onlineresource" "/chemin/vers/mon/mapfile.map&"
"wms_srs" "EPSG:21781"
END
ENDEt dans chaque layer:
Code:
PROJECTION
"init=epsg:21781"
END
METADATA
"wms_title" "nom_de_ma_couche"
"wms_srs" "EPSG:21781"
ENDAttention, il semble qu'il soit superflu de prĂ©ciser la projection si aucune reprojection ne doit ĂȘtre faite, mais maintenant que mon mapfile fonctionne, je n'y touche plus.
...et enfin pour openlayers:
Code:
map=new OpenLayers.Map('mymap', {
projection: "EPSG:21781",
controls: [],
units: 'm',
maxExtent: new OpenLayers.Bounds(xxxxxx,xxxxxx,xxxxxx,xxxxxx),
resolutions: [xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx,xxxxxx]
});Et voilĂ ...
Hors ligne

