#1 Thu 29 May 2008 21:23
- didier.genier@bluewin.ch
- Participant actif
- Lieu: Bernex - Genève
- Date d'inscription: 8 Nov 2006
- Messages: 52
OpenLayers via Mapserver en Intranet
Bonsoir,
Je post, car je viens de chercher en vain une réponse sans doute toute simple...
Enoncé du problème :
Je désire publier sur un INTRANET des carte provenant d'une base POSTGIS au moyen de OPENLAYERS via MAPSERVER.
A ce point, j'arrive à afficher une carte de la manière suivante:
"http://160.53.xx.xx/cgi-bin/mapserv?map=/var/www/cartes/communes.map&layer=communes&mode=map"
Je rencontre un problème avec OpenLayers car je ne sais pas comment produire en local (INTRANET) les paramètres de vmap0 des exemples Openlayers...
Mes derniers test ne provoquent plus d'erreur mais ne s'affichent dans Openlayers que des carrés roses... pas d'image ? Je suis un peu à la dér... Yves!!!
Merci d'avance...
(Pour Yves, cette fois, ce ne sera pas un café... mais un resto si vous passez par Genève...)
Hors ligne
#2 Thu 29 May 2008 22:14
Re: OpenLayers via Mapserver en Intranet
Bonsoir,
Une première solution est de tester l'url envoyer par openlayer en utilisant l'extension firebug avec firefox, ouvrez l'extension (et activez pour le site), cliquez sur"inspect" puis cliquer sur la tuile (n'importe laquelle), vous pourrez récupérer l'url envoyer par openlayers, copiez la dans un navigateur, que donne t-elle ? l'url vous semble t elle correcte ?
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 Sat 31 May 2008 10:37
- didier.genier@bluewin.ch
- Participant actif
- Lieu: Bernex - Genève
- Date d'inscription: 8 Nov 2006
- Messages: 52
Re: OpenLayers via Mapserver en Intranet
Voilà voilà.
J'ai testé selon vos conseils.
L'URL provoque un html 404...
J'ai fais un print du fichier html révélé par firebug.
On y trouve l'URL de la première tuile en ligne 10.
Merci d'avance pour votre analyse et vos prochains conseils.
Didier
Dernière modification par didier.genier@bluewin.ch (Sat 31 May 2008 10:39)
Hors ligne
#4 Sat 31 May 2008 15:39
Re: OpenLayers via Mapserver en Intranet
Bonjour,
Y a t-il une couche "basic" dans ton mapfile ? Quel est le code javascript pour cette couche ? Quel est le mapfile (surtout la liste des couches) ?
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
#5 Wed 04 June 2008 13:23
- didier.genier@bluewin.ch
- Participant actif
- Lieu: Bernex - Genève
- Date d'inscription: 8 Nov 2006
- Messages: 52
Re: OpenLayers via Mapserver en Intranet
Bonjour,
Avant tout, je vous prie d'excuser la faible fréquence de mes réponses. Je travaille à l'organisation de l'EURO à Genève... Je vous laisse imaginer le stress.
Pour ce qui est de la question :
Non il n'y a pas la couche basic.
Il y a 1 raster et 18 couches vectorielles, certaines sont en DEFAULT ON,
Pas de javascript pour l'heure.
En fait j'essaye pour le moment simplement d'afficher ce que je peux afficher avec le lien cité dans mon premier post avec openlayers...
Il me manque un certain nombre de paramètres.
Hors ligne
#6 Wed 04 June 2008 13:46
Re: OpenLayers via Mapserver en Intranet
Bonjour,
Ton problème vient de là, tu as configurer ton code javascript pour qu'ille affiche une couche qui s'appelle basic, mais sans le code je ne peux rien te dire de plus.
Tu dois avoir quelque chose comme :
Code:
var precip = new OpenLayers.Layer.WMS( "Nom de la couche", "url du serveur", {layers: "basic", transparent: "true", format: "image/png", isBaseLayer: false, opacity: 1} );
Changer le paramètre layers: "basic" en layers: "couche1,couche2,couche3" en changeant couche1 par le nom d'une couche existante dans ton 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
#7 Wed 18 June 2008 13:47
- didier.genier@bluewin.ch
- Participant actif
- Lieu: Bernex - Genève
- Date d'inscription: 8 Nov 2006
- Messages: 52
Re: OpenLayers via Mapserver en Intranet
Bonjour,
Me re-voilà... toujours sans affichage.
Pouvez-vous m'aider à remettre de l'ordre dans ma pensée.
J'ai plusieurs tables spatiales en PostGis (gérée avec QGis pour l'aspect spatial et phpPgAdmin pour les attributs).
J'aimerais construire ceci :
PostGis --> MapServer --> OpenLayers --> MapFish (module géostatistique et saisie).
Jusqu'à MapServer, je me sors. J'arrive à produire une carte réactive aux données des tables PostGis.
Je n'arrive pas à passer sous OpenLayers!?!
Etant en Suisse, j'utilise epsg:21781
J'ai un raster du plan de ville et des couches points, polygones à disposition.
Je suis sur un Intranet, SANS accès au woueb.
Comment initialiser OpenLayers et y ajouter mes couches PostGis?
Hors ligne
#8 Wed 18 June 2008 13:56
Re: OpenLayers via Mapserver en Intranet
Bonjour,
Vous devez déjà mettre en place un service WMS par MapServer, ensuite vous créez votre code JavaScript avec la bibliothèque d'OpenLayers avec un objet map en définissant une projection pour la carte (objet map) et les couches (objet layers) avec la projection voulue. L'objet layers dans openlayers sera de type WMS.
Voici quelques infos (doc en français en mode brouillon pour OL) : http://wiki.gloobe.org/openlayers:start
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 Thu 19 June 2008 00:36
- @eshogues
- Participant actif
- Lieu: Lausanne/Chambéry
- Date d'inscription: 27 Sep 2007
- Messages: 82
Re: OpenLayers via Mapserver en Intranet
Bonjour messieurs
Merci pour ce lien Yves permettant de trouver de la doc complète pour bien démarrer avec Open Layer.
Un peu de francofolie ça fait pas de mal.
Je suis de pret cette discussion car je dois moi aussi mettre en oeuvre une appli cartographique basée sur une database Posgresql postGis, avec Mapserveur comme serveur carto, utilisant la bibliothèque OL pour manipuler les API Google ou Yahoo.
Bonne continuations
Cordialement
Arnaud.
Hors ligne
#10 Sat 21 June 2008 18:49
- @eshogues
- Participant actif
- Lieu: Lausanne/Chambéry
- Date d'inscription: 27 Sep 2007
- Messages: 82
Re: OpenLayers via Mapserver en Intranet
Bonjour
Pour ce à qui ça intéresse voici le code permettant de projeter les données issues de Mapserveur sous Openlayer par l'intermédiaire du WMS
Voici le code pour définir le Mapfile, tout d'abord la définition de l'élément WEB ex en local
Code:
# # Définition de l'interface WEB OWS # WEB TEMPLATE "map.html" IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" METADATA #"MAPFILE_ENCODING" "ISO-8859-1" "wfs_title" "WMS Demo Server" "wfs_onlineresource" "http://127.0.0.1/cgi-bin/mapserv.exe?" "wfs_srs" "EPSG:3035 EPSG:4326" END # Metadata END # Web
Puis viens la définition au niveau du Metadata du Layer
Code:
METADATA "ows_title" "projetcub"
Il faut ensuite déclarer notre serveur WMS sous Open Layer afin de superposer notre données aux autres fonds de cartes
Code:
var mapwms = new OpenLayers.Layer.WMS( "Mapserveur", "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/geosatmapper/pmapper-3.2.0/config/default/pmapper_demo.map", {layers: 'projetcub', transparent: "true", format: 'image/png', isBaseLayer: false, opacity: 1 } ); map.addLayer(mapwms);
et voilà le tour est joué.
Bonne continuation.
Arnaud
Hors ligne
#11 Sat 21 June 2008 19:14
- @eshogues
- Participant actif
- Lieu: Lausanne/Chambéry
- Date d'inscription: 27 Sep 2007
- Messages: 82
Re: OpenLayers via Mapserver en Intranet
Petite précision
Il faudra reprojeter votre layer afin de le superposer aux autres données "reproject: true" dans la définition du Layers
{layers: 'projetcub', transparent: "true", format: 'image/png', isBaseLayer: false, opacity: 1, reproject: true} );
A vous de jouer maintenant
Géomatiquement votre
Arnaud
Hors ligne
#12 Sat 21 June 2008 19:39
- @eshogues
- Participant actif
- Lieu: Lausanne/Chambéry
- Date d'inscription: 27 Sep 2007
- Messages: 82
Re: OpenLayers via Mapserver en Intranet
La solution du WMS reste tout de même limitée.
Elle permet de visualiser la donnée mais pas de l'interroger, il s'agit d'une image.
Je me demande donc quel est le meilleur moyen pour exploiter les données stockées par Postgis/Posgresql
Mon objectif est de pouvoir interroger les différents éléments géographiques et faire appel aux données attributaires stockées dans Posgresql et ce en utilisant la bibliothèques Open Layers.
Deux solutions se dessinent par l'intermédiaire de Mapserveur (contrainte):
# La création d'un serveur WFS dans le Mapfile puis un import par dans OL par la fonction // OpenLayers.Layer.WFS
# L'appel d'un fichier par la fonction // OpenLayers. Layer. MapServer
Qu'elle serait selon vous la meilleure méthode à employer?
Existe il d'autres méthodes?
Merci de votre attention
Arnaud.
Hors ligne
#13 Mon 23 June 2008 09:45
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: OpenLayers via Mapserver en Intranet
pourquoi on ne pourrait pas interroger en WMS ? et le GetFeatureInfo
alors ?
Guillaume
Hors ligne
#14 Mon 23 June 2008 11:46
- @eshogues
- Participant actif
- Lieu: Lausanne/Chambéry
- Date d'inscription: 27 Sep 2007
- Messages: 82
Re: OpenLayers via Mapserver en Intranet
Bonjour Guillaumme
Pense tu qu'il soit possible d'obtenir les informations par un clic sur notre "raster" dans Open Layer.???
à partir de l'image provenant de Mapserveur?
Hors ligne
#15 Mon 23 June 2008 11:53
- @eshogues
- Participant actif
- Lieu: Lausanne/Chambéry
- Date d'inscription: 27 Sep 2007
- Messages: 82
Re: OpenLayers via Mapserver en Intranet
Je pensais plustot déclarer un Layer WFS
Code:
var mapwfs = new OpenLayers.Layer.WFS( "Merignac", "http://localhost/cgi-bin/mapserv.exe?", {typename: "merignac", maxfeatures: 10}, { featureClass: OpenLayers.Feature.WFS}); map.addLayer(mapwfs); map.addControl(new OpenLayers.Control.LayerSwitcher());
Mais cela ne fonctionne pas??
Hors ligne
#16 Mon 23 June 2008 12:15
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: OpenLayers via Mapserver en Intranet
si ta source de données est au format raster il ne va pas falloir trop
espérer, mais si c du vectoriel oui.
Il te faut mettre on événement onClick sur ton layer, et faire une
requête WMS REQUEST=GetFeatureInfo en ajax par exemple
Guillaume
Hors ligne
#17 Mon 20 April 2009 14:31
- Sitelle
- Participant occasionnel
- Date d'inscription: 1 Feb 2009
- Messages: 31
Re: OpenLayers via Mapserver en Intranet
Bonjour,
Pour reprendre un questionnement posé plus haut, j'ai un problème de projection lorsque j'ajoute des fonds cartographiques comme celui d'OL ou celui de Google.
J'ai mis en place un serveur wms avec mapserver que j'interroge avec Mapfish.
Voici un mapfile en exemple :
Code:
MAP NAME "Test_L93" SIZE 4000 3000 #resolution EXTENT 394570.591855 6178633.421353 1074389.846908 6517405.031673 STATUS ON UNITS METERS SHAPEPATH "data/LII/" IMAGECOLOR 255 255 255 #IMAGETYPE PNG24 WEB IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" TEMPLATE ttt METADATA "wms_title" "WMS_L93" "wms_onlineresource" "http://******.fr/cgi-bin/mapserv.exe?map=wms_parc_L93.map&" "wms_srs" "EPSG:2154" END END PROJECTION "init=epsg:2154" END LAYER NAME "parc_national" DATA "PARCNATIONAL_2005_FR_C_DIREN" STATUS ON TYPE POLYGON PROJECTION "init=epsg:2154" END METADATA "wms_title" "parc" "wms_srs" "EPSG:2154" END CLASS NAME "Admin" STYLE OUTLINECOLOR 20 20 20 END END END # Layer END
Et voici mon code Javascript :
Code:
var options = { //projection: "EPSG:2154", projection: "EPSG:900913", displayProjection: "EPSG:2154", units: "m", maxResolution:156543.0339, maxExtent: new OpenLayers.Bounds(99226.53125,6049646.5,1242374.625,7110524.5) }; var map = new OpenLayers.Map($('center'), options); var wms = new OpenLayers.Layer.WMS("OpenLayers WMS", "http://labs.metacarta.com/wms/vmap0", {layers: 'basic', isBaseLayer: true}, {buffer: 0}); var wms2 = new OpenLayers.Layer.WMS("Test_L93", "http://*****.fr/cgi-bin/mapserv.exe?map=wms_parc_L93.map&", {layers: "parc_national", format: 'image/png', transparent: "true", isBaseLayer: false, opacity: 1, projection: map.displayProjection}); //transparent:true //format:"image/png", //isBaseLayer:false var wms3 = new OpenLayers.Layer.WMS("Test_dep", "http://*****.fr/cgi-bin/mapserv.exe?map=wms_postgis_L93.map&", {layers: "postgis_departement", transparent: "true", format: 'image/png', isBaseLayer: false, opacity: 1, projection: map.displayProjection});
Lorsque je veux afficher les trois couches, le fond OL s'affiche (à très petite échelle) mais pas les deux autres couches et le message suivant apparaît : "msWMSLoadGetMapParam() : WMS server error. Invalid SRS given : SRS must be valid for all requested layers".
Je précise que lorsque je n'affiche que mes deux couches WMS perso avec comme projection : "EPSG : 2154", ça fonctionne sans problème.
J'ai également essayé en indiquant reproject : true et SRS : 2154... sans succès.
Si certains d'entre vous ont résolu ce problème je suis preneuse.
Merci d'avance
Estelle
Hors ligne
#18 Mon 20 April 2009 14:46
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: OpenLayers via Mapserver en Intranet
Bonjour Estelle,
Il te suffit d'ajouter EPSG:900913 dans le paramètre wms_srs de chaque couche de ton mapfile. Ainsi le serveur WMS répondra aux requêtes effectuées en utilisant ce code.
Regarde : http://docs.openlayers.org/library/sphe … cator.html et plus particulièrement la section "Creating Spherical Mercator Raster Images", et pense à bien ajouter la définition du 900913 à ton fichier epsg comme expliqué.
Bon courage,
Guillaume
Hors ligne
#19 Mon 20 April 2009 17:12
- Sitelle
- Participant occasionnel
- Date d'inscription: 1 Feb 2009
- Messages: 31
Re: OpenLayers via Mapserver en Intranet
Merci beaucoup Guillaume,
C'est cela qu'il me manquait.
Bonne fin de journée
Estelle
Hors ligne