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

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

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)


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

Hors ligne

 

#4 Sat 31 May 2008 15:39

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

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

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

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

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

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

 

Pied de page des forums

Powered by FluxBB