Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Fri 18 April 2014 09:59

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Openlayers: superposer OpenStreetMap et WMS

Bonjour à tous,

Quasiment débutant en webmapping, j'essaie actuellement de créer une carte qui me permettrait de superposer une couche d'OpenStreetMap et la couche par défaut d'Openlayers. J'ai donc composé le code que voici, bricolé à partir de codes trouvés çà et là:

Code:

function init(){        
    
var la_carte = new OpenLayers.Map('div_ma_carte');
        
var mapnik         = new OpenLayers.Layer.OSM();
        var fromProjection = new OpenLayers.Projection("EPSG:4326");   // Transform from WGS 1984
        var toProjection   = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
        var position       = new OpenLayers.LonLat(3.41,47.52);
        var zoom           = 6;     
    
    
var openlayer = new OpenLayers.Layer.WMS(
                "OpenLayers WMS",
                "http://vmap0.tiles.osgeo.org/wms/vmap0",
                {isBaseMap: 'false', transparent: 'true', layers: 'basic'}
            );      
            
var couche3 = new OpenLayers.Layer.Vector("3e niveau", {
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.HTTP({
                url: "1.kml",
                format: new OpenLayers.Format.KML({
                  extractAttributes: true, extractStyles: true
                })
            })
        })

var scaleline = new OpenLayers.Control.ScaleLine();
        
la_carte.addLayer(mapnik);
la_carte.addLayer(openlayer);
la_carte.addLayer(couche3);

la_carte.setCenter(position, zoom );
la_carte.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':true}));
la_carte.addControl(scaleline);
}

Or j'ai visiblement un problème de projection: la couche "openlayer", centrée par défaut sur la France, représente celle-ci du côté du Nigéria si on se réfère à la carte de base d'OpenStreetMap. J'ai essayé de supprimer complètement les références à une projection dans le code ci-dessus, dans l'espoir que les deux couches en cause se calent automatiquement sur la même projection, mais rien à faire. Il faut dire que je ne sais même pas comment connaître la projection par défaut de ces deux couches, et que je ne sais donc pas comment faire pour les rendre compatibles... Le problème est le même si je change les paramètres "isBaseMap" ou "transparent" de la deuxième couche.

Quelqu'un a-t-il une idée? Merci d'avance pour tout tuyau!

Hors ligne

 

#2 Fri 18 April 2014 12:06

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour

Essayez en mettant tout vos couches dans la même fonction addlayer (idéalement cette fonction ne doit être présente qu'une seule fois je crois).

Votre fonction ressemblera donc à ça :

Code:

map.addLayers([mapnik, openlayer, couche3]);

Hors ligne

 

#3 Fri 18 April 2014 12:14

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Openlayers: superposer OpenStreetMap et WMS

Et peut-être aussi manque-t-il la ligne de code qui va transformer votre 1ère projection (EPSG:4326) en la 2nde (EPSG:900913).

Cette ligne va se positionner juste après la déclaration de vos projections, et ressembler à ça :

Code:

bounds.transform(fromProjection,toProjection);

Cela dit, il manque d'abord la déclaration de l'extend, qui devrait ressembler à ça pour la France :

Code:

var bounds = new OpenLayers.Bounds(-21,35,48,57);

Attention je ne suis pas encore expert sur OL, à vérifier !

Hors ligne

 

#4 Fri 18 April 2014 13:19

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour et merci pour votre réponse rapide! J'ai donc regroupé les différents addLayer en un seul (j'avais déjà essayé auparavant, mais échoué parce que j'oubliais le "s" à la fin du mot...), et ce point-là marche bien.

Pour les questions de projection, par contre, je ne suis arrivé à aucun changement utile. Où faut-il placer exactement la formule "bounds.transform(fromProjection,toProjection);"?

Voici le code que j'ai constitué avec vos conseils, et qui n'a pas produit de changement par rapport au premier code plus haut:

Code:

function init(){        
    
   var la_carte = new OpenLayers.Map('div_ma_carte');
   var bounds = new OpenLayers.Bounds(-21,35,48,57);
   
 var mapnik         = new OpenLayers.Layer.OSM();
        var fromProjection = new OpenLayers.Projection("EPSG:4326");   // Transform from WGS 1984
        var toProjection   = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
 bounds.transform(fromProjection,toProjection);
        var position       = new OpenLayers.LonLat(352000,5800000);
        var zoom           = 6;     
    
    
    var openlayer = new OpenLayers.Layer.WMS(
                "OpenLayers WMS",
                "http://vmap0.tiles.osgeo.org/wms/vmap0",
                {isBaseMap: 'false', transparent: 'true', layers: 'basic'}
            );      
            
                var couche3 = new OpenLayers.Layer.Vector("Gontran", {
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.HTTP({
                url: "1.kml",
                format: new OpenLayers.Format.KML({
                  extractAttributes: true, extractStyles: true
                })
            })
        })

    var scaleline = new OpenLayers.Control.ScaleLine();
    var dessin = new OpenLayers.Control.EditingToolbar(mapnik);
    var modifier = new OpenLayers.Control.ModifyFeature(couche3);
        
la_carte.addLayers([mapnik, openlayer, couche3]);


la_carte.setCenter(position, zoom );
la_carte.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':true}));
la_carte.addControl(scaleline);
la_carte.addControl(dessin);
}

J'ai aussi essayé de remplacer le morceau

Code:

bounds.transform(fromProjection,toProjection);
        var position       = new OpenLayers.LonLat(352000,5800000);

par celui-ci:

Code:

        var position       = new OpenLayers.LonLat(352000,5800000).transform(fromProjection,toProjection);

Quand je fais ça, le cadrage initial de la carte OSM est modifié au chargement, mais la couche Openlayers est toujours une tuile rose du côté du Nigéria.

Est-ce que je fais quelque chose de travers (oui certainement, mais quoi?)? Ou sinon, une autre idée, peut-être?

Hors ligne

 

#5 Fri 18 April 2014 13:59

Georgie
Participant assidu
Date d'inscription: 28 May 2011
Messages: 232

Re: Openlayers: superposer OpenStreetMap et WMS

Je ne sais pas trop je vous avoue, mais vous pouvez utiliser cet exemple-ci (Rokin) :

http://hg-map.fr/maps.html

Ce n'est pas un KML mais des données stockées dans une base PostGIS, mais ça ne change rien.

J'ai tout bien regroupé, divisé en 3 fichier clair et commenté. N'oubliez pas de cliquez sur le lien de la vraie interface (celle en plein écran) pour voir son code.

Seul hic : je n'arrive pas à récupérer les données attributaires. Mais la données géographiques s'affichent proprement.

Hors ligne

 

#6 Fri 18 April 2014 14:25

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Rebonjour,

Je ne suis pas sûr de vous avoir bien compris: superposer un kml avec une carte OSM, ça ne me pose aucun problème. C'est la cohabitation entre OSM et OpenLayers (les n° 1 et 2 de mon code) qui bloque.

Edit: je me suis trompé, sur la page que vous m'indiquez, ce ne sont pas des kml. Mais sauf erreur de ma part, ce ne sont pas non plus des WMS?

Dernière modification par Zventibald (Fri 18 April 2014 14:58)

Hors ligne

 

#7 Fri 18 April 2014 14:35

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

En fait, l'ajout de la portion que voici ne change absolument rien à l'affichage de ma carte

Code:

 var bounds = new OpenLayers.Bounds(-21,35,48,57);
bounds.transform(fromProjection,toProjection);

Hors ligne

 

#8 Mon 21 April 2014 22:08

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonsoir,

Va lire ceci : http://docs.openlayers.org/library/sphe … cator.html ca te donnera les indications nécessaires. Tu n'as pas besoin de transform, fromProjection et toProjection

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

 

#9 Tue 22 April 2014 23:21

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Bonsoir,

Yves, merci de votre réponse, mais mon faible niveau en webmapping ne me permet pas de tirer pleinement profit de ce site. J'ai essayé de l'appliquer comme ceci (sans intégrer de WMS pour l'instant):

Code:

function init(){        
    
var la_carte = new OpenLayers.Map('div_ma_carte');
        
var mapnik         = new OpenLayers.Layer.OSM("OSM", {
     sphericalMercator: true,
     maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34)
 });
            
var couche3 = new OpenLayers.Layer.Vector("Gontran", {
            strategies: [new OpenLayers.Strategy.Fixed()],
            protocol: new OpenLayers.Protocol.HTTP({
                url: "1.kml",
                format: new OpenLayers.Format.KML({
                  extractAttributes: true, extractStyles: true
                })
            })
        });
   
la_carte.addLayers([mapnik, couche3]);
la_carte.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':true}));
la_carte.addControl(scaleline);
}

Mais aucune couche ne s'affiche, alors qu'avec mon code précédent, j'avais au moins les couches mapnik et couche3. Qu'est-ce que j'ai manqué?

Hors ligne

 

#10 Sun 27 April 2014 10:25

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour,

Regarde là :
* exemple (mais sans le kml qui n'existe pas) http://bl.ocks.org/yjacolin/raw/11340324/
* le code https://gist.github.com/yjacolin/11340324

Tu devrais pouvoir remplacer le nom du kml sans peine. Celui-ci doit être situé à coté du fichier index.html

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

 

#11 Mon 28 April 2014 14:43

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour,

Yves: un grand merci! Grâce à toi, j'ai déjà bien avancé, puisque j'ai réussi à faire coexister OSM et du WMS (puisque je rappelle que c'était ça mon problème principal, l'ajout d'un kml ne posant pas de problème).

Mon code se présente à présent comme ceci (par rapport à celui que tu m'avais fourni, j'ai simplement ajouté des couches, modifié le zoom initial et ajouté un contrôle à la fin):

Code:

<html>
<head>
<title>Example OpenLayers avec une couche KML sur fond de plan KML</title>
<script
<script src="http://openlayers.org/api/OpenLayers.js"></script>
</head>
<body>
<div style="width:900px; height:700px" id="map"></div>
<script defer='defer' type='text/javascript'>
var map = new OpenLayers.Map('map', {
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
});

var layer = new OpenLayers.Layer.OSM({
sphericalMercator: true,
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
});

var opengeo = new OpenLayers.Layer.WMS(
                    "Satellite",
                    "http://maps.opengeo.org/geowebcache/service/wms",
                    {transparent: 'true', layers: "bluemarble", visibility: 'false'},
                    {tileOrigin: new OpenLayers.LonLat(-180, -90)}
             );
             

var geolall = new OpenLayers.Layer.WMS(
                    "géologie Allemagne",
                    "http://www.bgr.de/Service/geologie/gk1000/", 
                    {transparent: 'true', layers: "BGR_GK1000"}
);

var GeolFr50 = new OpenLayers.Layer.WMS(
                    "Géol. France, 50.000",
                    "http://mapdmz.brgm.fr/cgi-bin/mapserv?map=/carto/infoterre/mapFiles/geolWMS.map", 
                    {transparent: 'true', layers: "SCAN_GEOL50"}        
             );


var couche3 = new OpenLayers.Layer.Vector("Gontran", {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: "587.kml",
format: new OpenLayers.Format.KML({
extractAttributes: true, extractStyles: true
})
}), visibility: 'true'
});

var scaleline = new OpenLayers.Control.ScaleLine();
var bounds = new OpenLayers.Bounds(-670000, 4000000, 1500000, 7000000);


map.addLayers([layer, opengeo, couche3]);
map.zoomToExtent(bounds);
map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':true}));
map.addControl(scaleline);
map.addControl (new OpenLayers.Control.MousePosition({
     div: document.getElementById("mouseposition")
  }));

</script>
</body>
</html>

Mes questions sont désormais les suivantes:
- Question principale: pourquoi est-ce que ça marche avec certains WMS, mais pas avec tous? Quand j'affiche la couche "opengeo", ça fonctionne parfaitement, mais si je veux aussi afficher les couches "geolall" ou "GeolFr50", j'ai droit à la redoutable tuile rose...
- (moins urgent) pourquoi est-ce qu'avec la couche "opengeo", l'option visibility: 'false' ne fonctionne pas?
- (moins urgent) comment fait-on pour donner un nom personnalisé à la couche de base, celle d'OSM dans mon cas? Par défaut, dans mon Layerswitcher, elle s'appelle [object Object], ce qui n'est pas très joli.

Merci à tous pour votre suivi précieux!

Hors ligne

 

#12 Thu 01 May 2014 11:49

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour,

Zventibald a écrit:

Bonjour,
[..]
Mes questions sont désormais les suivantes:
- Question principale: pourquoi est-ce que ça marche avec certains WMS, mais pas avec tous? Quand j'affiche la couche "opengeo", ça fonctionne parfaitement, mais si je veux aussi afficher les couches "geolall" ou "GeolFr50", j'ai droit à la redoutable tuile rose...


Les services WMS utilisés doivent gérer la projection EPSG:3857 et/ou EPSG:900913 sinon elles ne sont pas capables de reprojeter les données dans cette projection. L'url des tuiles roses doit pouvoir être récupéré via firebug et tu auras le message d'erreur dans le navigateur (copie colle l'url dans un nouveau onglet).

Zventibald a écrit:

- (moins urgent) pourquoi est-ce qu'avec la couche "opengeo", l'option visibility: 'false' ne fonctionne pas?


Aucune idée, comme c'est quelque chose qui n'est pas géré par le service WMS mais par OpenLayers je partirai sur une typo quelque part. Par exemple utiliser une string plutôt qu'un boolean (à corriger en supprimant les simples quotes).

Toujours avec Firebug, onglet console regarde si tu n'as pas des messages d'erreur qui apparaissent quand tu fais des modifications de code ou des actions dans ton interface (afficher une couche, etc.)

Zventibald a écrit:

- (moins urgent) comment fait-on pour donner un nom personnalisé à la couche de base, celle d'OSM dans mon cas? Par défaut, dans mon Layerswitcher, elle s'appelle [object Object], ce qui n'est pas très joli.

Merci à tous pour votre suivi précieux!


Si tu as ca c'est que tu as utilisé une variable JavaScript qui est un Objet. En tout cas tu as une propriété name (http://dev.openlayers.org/docs/files/Op … SM-js.html) qui peut être utilisé je pense.

Code:

new OpenLayers.Layer.OSM('Mon nom de couche', {
sphericalMercator: true,
...
});

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

 

#13 Thu 08 May 2014 14:18

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour à tous, et une nouvelle fois, merci à Yves pour son aide! Grâce à lui, j'ai un peu avancé, mais je bloque encore sur certains points:

- réglage de l'option visibility d'une couche WMS: c'est réglé, c'était effectivement une erreur typo, ou plutôt je ne plaçais pas la commande au bon endroit.

- personnaliser le nom de la couche de base, en l'occurrence celle d'OSM: rien à faire. Par défaut j'ai la mention "object Object" dans mon layerswitcher, et si l'essaie d'utiliser la propriété name comme suggéré par Yves plus haut, plus rien ne s'affiche dans ma carte (j'ai essayé avec des guillemets simples ou doubles: bernique). Quelqu'un aurait-il une autre idée?

- enfin, le plus important, la superposition de WMS de nature différente: sur ce point-là, je n'ai pas encore réussi à utiliser firebug intelligemment pour trouver les caractéristiques des WMS qui posent problème. Il s'agit en particulier de:
http://cga6.cga.harvard.edu/arcgis/serv … WmsServer, couche "104"
http://mapdmz.brgm.fr/cgi-bin/mapserv?m … olWMS.map, couche "SCAN_GEOL50"
http://www2.demis.nl/wms/wms.asp?wms=WorldMap, couche "Topography". Ce sont toutes des couches que j'arrive à afficher dans QGis sans problème, mais pas dans le code que je vous décris dans le présent fil.

Je reviendrai donc vers vous quand j'aurai réussi à en savoir plus sur ce dernier point. Le présent message est donc très provisoire, mais je ne voulais pas donner l'impression que j'étais parti en douce sans remercier mes conseillers sur ce forum...

Pour info, la carte dont il est question (donc le code complet) se trouve sur cette page.

Hors ligne

 

#14 Thu 08 May 2014 15:06

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour,

Il y en a deux qui ne gèrent pas du tout le Web Mercator (code EPSG 3857 ou 900913) et celle de SCAN_GEOL50 uniquement en 3857, vérifie que l'url envoyé contient bien ce code dans le SRS ou le CRS et pas l'ancien code 900913. Tu dois pouvoir écraser pour cette couche la valeur de la projection dans les options de l'objet layer.

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

 

#15 Thu 08 May 2014 15:07

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour,

[humour]
Ton projet concerne ta proposition pour le redécoupage des Régions de France ?
[/humour]

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

 

#16 Thu 08 May 2014 15:26

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Yves a écrit:

[humour]
Ton projet concerne ta proposition pour le redécoupage des Régions de France ?
[/humour]


Oui, j'ai toujours trouvé que les réformes politiques d'après l'an 843 étaient inutiles. Y a trop de réformes en France wink.


Yves a écrit:

Il y en a deux qui ne gèrent pas du tout le Web Mercator (code EPSG 3857 ou 900913)


Ca veut dire que je n'ai aucune chance de les faire cohabiter avec OSM ni avec les autres couches?

Yves a écrit:

Tu dois pouvoir écraser pour cette couche la valeur de la projection dans les options de l'objet layer


Euh... dit comme ça, ça dépasse mes compétences. sad

Pour ce qui est de la variable name de la couche OSM, j'ai l'impression que c'est incompatible avec les paramètres qui suivent, à savoir

Code:

{
sphericalMercator: true,
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
}

Si je supprime le passage entre crochets, je peux nommer ça comme je veux.

Hors ligne

 

#17 Thu 08 May 2014 16:59

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

Re: Openlayers: superposer OpenStreetMap et WMS

Entre crochet ([]) ou entre accolade ({}) ?

Ton objet Layers.WMS() contient des options et des propriétés qui seront envoyées dans l'url dans la requête GetMap,les options permettent de configurer ton objet WMS. Tu peux mettre dans les paramètres de ton objet un srs ou crs (en fonction de la version du WMS utilisée): EPSG:3857 car le isSphericalMercator risque bien d'envoyer 900913 (tu peux voir ca dans l'url de stuiles de la couche avec firebug.

Autre option : définir la projection de ton objet Layers.WMS() mais via la options de l'objet et pas dans les paramètres envoyés dans l'url.

Regarde dans la doc le constructeur de ton objet WMS : http://dev.openlayers.org/docs/files/Op … .Layer.WMS

Pour les propriétés de l'objet WMS tu peux remonter jusqu'à l'objet LAYER et voir les propriétés disponibles par héritage : http://dev.openlayers.org/docs/files/Op … yers.Layer

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

 

#18 Thu 08 May 2014 17:28

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Yves a écrit:

Entre crochet ([]) ou entre accolade ({}) ?


Pardon, entre accolades.

Pour ce qui est de la définition de projection pour le WMS, j'ai tenté ça:

Code:

var relief = new OpenLayers.Layer.WMS(
                    "Relief",
                    "http://www2.demis.nl/wms/wms.asp?wms=WorldMap",
                    {transparent: 'true', layers: "SCAN_GEOL50", projection: "EPSG:3857"},
                    {visibility: false}
             );

Mais ça ne donne rien... que des jolies tuiles roses.

Hors ligne

 

#19 Thu 08 May 2014 17:32

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

Re: Openlayers: superposer OpenStreetMap et WMS

Récupère l'url de la tuile rose et copie colle la dans le navigateur, tu auras un message d'erreur retourné par le serveur. Vérifie que l'url est correcte, et copie colle la ici si nécessaire.

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

 

#20 Thu 08 May 2014 18:31

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Bon, après une heure de tâtonnements, je dois bien constater que je suis aussi mauvais dans l'usage de firebug que d'Openlayers en général. Pour une couche appelée "relief", que faut-il taper dans la console de firebug pour obtenir l'URL en question?

Par divers tâtonnements, j'ai obtenu l'adresse suivante pour une des tuiles roses:
http://www2.demis.nl/wms/wms.asp?wms=Wo … HEIGHT=256
Est-ce que ça peut faire avancer le schmilblick?

Hors ligne

 

#21 Thu 08 May 2014 19:10

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonjour,

Oui, voici le contenu renvoyé par l'url :

<?xml version='1.0' encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport SYSTEM "http://www2.demis.nl/WMS/exception_1_1_1.dtd"
>
<ServiceExceptionReport version="1.1.1">
<ServiceException code="InvalidSRS">
<![CDATA[
Invalid projection (EPSG:900913), only EPSG:4326 is supported
WMS Error: BBOX is out of range

]]>
</ServiceException>
</ServiceExceptionReport>


Il y a deux choses :
1. ton url indique un paramètre PROJECTION tu as donc mis le paramètre (JS) dans le mauvais endroits (dans la partie paramètre (de l'URL) alors que c'est une option de l'objet).
2. ton serveur ne gère que le 4326, pas de chance, c'est inutilisable en l'état

Pour Firebug, le wiki de GeoRezo te montre de jolie captures d'écran pour te montrer qu'il n'y a pas que la console JS pour faire des choses amusants : http://georezo.net/wiki/main/logiciels/ … rs/firebug

Y.
PS : paramètre peut avoir deux significations : paramètre dans du code JavaScript et paramètre dans l'url (VERSION= ou REQUEST= sont des paramètres du standard WMS).


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

 

#22 Thu 08 May 2014 19:27

Zventibald
Participant occasionnel
Date d'inscription: 7 Sep 2012
Messages: 46

Re: Openlayers: superposer OpenStreetMap et WMS

Bon eh ben ça en fait trois que je n'utiliserai pas... sad Pas très grave pour mon projet, mais ça m'étonne d'autant plus que sur certains sites (par exemple ici), OSM fait bon ménage avec l'un des WMS décrits plus haut, celui dont l'adresse est http://cga6.cga.harvard.edu/arcgis/serv … msServer). Pour ma part, je renonce provisoirement à comprendre comment ils font.

En tout cas, Yves, un grand merci pour ton aide précieuse ces derniers jours!

Hors ligne

 

#23 Thu 08 May 2014 20:41

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

Re: Openlayers: superposer OpenStreetMap et WMS

Bonsoir,

MapServer peut agir comme client WMS et reverser la couche côté serveur WMS en la reprojetant : http://mapserver.org/fr/ogc/wms_client.html

MapProxy permet de récupérer un flux WMS, de reprojeter une couche et de la retourner sous forme de flux WMS, voire même de la mettre en cache.

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