Pages: 1
- Sujet précédent - [OpenLayers,Mapserver et WMS] Affichage, interaction et calage couche - Sujet suivant
#1 Fri 28 December 2012 17:10
- mat19
- Juste Inscrit !
- Date d'inscription: 28 Dec 2012
- Messages: 4
[OpenLayers,Mapserver et WMS] Affichage, interaction et calage couche
Bonjour à tous,
Etant newbie sur ce forum et en développement, notamment en javascript, je viens solliciter votre aide et votre recul pour répondre à deux problématiques qui je pense ont un lien entre elles :
Pour information, je suis en local avec ms4w.
- La première problématique : comment activer le zoom (même à la molette) sur une couche WMS paramétrée en sigleTile.
Je l'ai vu sur d'autre post, le zoom s'effectue bien en terme de traitement mais charge systématique la même tuile (même taille). Je précise également que le "singleTile: true," a été rajouté pour éviter la duplication, la démultiplication de la france par commune : plusieurs carte de France apparaissait côte à côte.
Le but est véritable de permettre le zoom et le deplacement sur cette couche WMS.
J'ai plusieurs hypothèses en tête mais ne voit pas concrètement comment résoudre ce problème :
- Le fichier mapfile est mal paramétré au niveau de l'extend ou de la résolution
- Les projections sont également incorrect : moins probable car le mapfile est généré à partir de QGIS (ce constat a été fait sur une couche seulement)
- J'ai fait un getcapabilities pour voir le BB est essayé d'ajuster en fonction sans succès.
L'utilise de Tilecache peut-il résoudre ce problème. En lisant certains posts, j'avais cru comprendre que openlayers se chargeait de tuiler les fonds de carte à l'origine vectoriel : c'est un shape.
Le seconde problématique : caler deux fonds de cartes (problème d'affichage puis/ou de calage).
Ma carte de France apparaît beaucoup plus grosse que la couche WMS : http://vmap0.tiles.osgeo.org/wms/vmap0
Comment paramétrer et caler la carte à ce fond : problème du Mapfile au niveau de la projection (il s'affiche pourtant moins distandu sur mapserveur hors openlayers) ?
Vous trouverez les fichiers que j'utilise (js, mapfile dans un dossier htdocs.
Je reste à votre disposition s'il vous manque des informations. Je vous remercie par avance pour le temps et l'aide dont vous me temoignerez.
Cordialement.
Hors ligne
#2 Sun 13 January 2013 15:46
- mat19
- Juste Inscrit !
- Date d'inscription: 28 Dec 2012
- Messages: 4
Re: [OpenLayers,Mapserver et WMS] Affichage, interaction et calage couche
Bonjour tous les mondes,
Bon... Pas d'aide ! Ni de message pour recadrer si ma demande ne correspondait pas aux standards requis sur ce forum.
En tout cas pour information, pour ceux qui sont novices comme moi et qui ont besoin de cette aide, voilà les raisons de mon problème :
- La première problématique : comment activer le zoom (même à la molette) sur une couche WMS paramétrée en sigleTile.
Pour activer le zoom, il faut dans l'index .html désactiver par défaut les fonctionnalités openlayers :
//Chargement de la carte n°1
map = new OpenLayers.Map('map',
{
controls: []
}
);
De cette façon, vous annulez le zoom et le déplacement (drag and drop).
Vous personnalisez les fonctionnalités vous rajouter ces lignes en javascript :
//Chargement des couches
map.addLayers([communes,wms]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.PanZoomBar ());
map.addControl(new OpenLayers.Control.Scale ());
map.addControl(new OpenLayers.Control.MousePosition ());
map.addControl(new OpenLayers.Control.Navigation());
Le drag and drop correspond à la dernière ligne (Layers Control navigation)
Le seconde problématique : caler deux fonds de cartes (problème d'affichage puis/ou de calage).
Après avoir caler la carte, différentes manipulations ont été effectuées pour retrouver le fond du problème.
- Pas de problème d'extent (le résultat de QGIS)
- Le km (alors la projection est du wgs84) n'empêche pas ici le calage
- Le véritable fond du problème se situe dans le js et plus particulièrement l'url vers le mapfile :
//Description de la couche WMS france par commune
communes = new OpenLayers.Layer.WMS(
"Commune",
"http://localhost/cgi-bin/mapserv.exe?MAP=C:/ms4w/Apache/htdocs/Mapfiles/com_analyse.map&LAYERS=ALL&MODE=MAP",
[...]
Ce code qui reprend l'URL de QGIS ne fonctionne pas.
//Description de la couche WMS france par commune
communes = new OpenLayers.Layer.WMS(
"Commune",
"http://localhost/cgi-bin/mapserv.exe?MAP=C:/ms4w/Apache/htdocs/Mapfiles/com_analyse.map&",
Ce code est mis en place, les dalles deviennent rouge et ne sont pas chargées avec le code ci-dessous :
//Description de la couche WMS france par commune
communes = new OpenLayers.Layer.WMS(
"Commune",
"http://localhost/cgi-bin/mapserv.exe?MAP=C:/ms4w/Apache/htdocs/Mapfiles/com_analyse.map&",
{
layers: 'basic',
format: 'image/png',
transparent: true,
opacity: 0.7,
srs: 'epsg:4326'
},
{
singleTile: true,
ratio: 1
},
{
isBaseLayer: false
}
);
C'est complètement normal. La couche basic n'existe pas dans le mapfile comme le montre l'échantillon ci-dessous :
LAYER
METADATA
"wms_title" "Commune" ##required
END
NAME 'communes'
Nous devons donc reprendre le nom 'communes' dans l'index.html contenant le javascript
Voici le résultat final
//Description de la couche WMS france par commune
communes = new OpenLayers.Layer.WMS(
"Commune",
"http://localhost/cgi-bin/mapserv.exe?MAP=C:/ms4w/Apache/htdocs/Mapfiles/com_analyse.map&",
{
layers: 'communes',
format: 'image/png',
transparent: true,
opacity: 0.7,
srs: 'epsg:4326'
},
{
singleTile: true,
ratio: 1
},
{
isBaseLayer: false
}
);
De cette façon, en changeant l'URL et le nom de la couche la France par commune est désormais calée.
Notons que toutes les couches sont en WGS84 tout comme le shape qui est importé.
En espérant que ces explications pourront aidés les débutants comme moi.
Je vous souhaite un bonne journée.
Hors ligne
#3 Sun 13 January 2013 16:13
Re: [OpenLayers,Mapserver et WMS] Affichage, interaction et calage couche
bonjour mat19,
Merci du retour complet. Quelques remarques d'ordre général :
* Tes questions étaient simples et facile à résoudre mais tu as posté un 28 décembre, la plupart des contributeurs étaient en congés, relancer un sujet après une semaine n'est pas un problème !
* je suis persuader que même si tu penses avoir perdu du temps, tu as a appris beaucoup plus que si nous t'avions donné les réponses de suite
Bonne continuation en 2013,
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
Pages: 1
- Sujet précédent - [OpenLayers,Mapserver et WMS] Affichage, interaction et calage couche - Sujet suivant