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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

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 wink

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

 

Pied de page des forums

Powered by FluxBB