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

#1 Thu 02 July 2009 11:20

smile
Participant actif
Date d'inscription: 2 Jul 2009
Messages: 110

[MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

Je dois réalisé un outil cartographique basé sur MapServer. Je récupère mes couches via une base de données Oracle hébergé sur un serveur distant.

J'arrive à afficher mes couches statiques via MapServer en passant par le cgi-bin dans la barre d'adresse.

Jusque là, tout va bien. Je souhaite ajouter des outils de zoom, ..., en passant par OpenLayers et là tout se corse.

J'ai essayé plein de tutos, effectué des tonnes de recherches mais entre les bouts de codes, les messages datant de 2003 et des configurations de mapfile qui se ressemblent en rien à chaque fois, je poste mon mapfile et mon fichier .html.

Code:

MAP
    NAME "WMS-test"
    STATUS ON
    SIZE 800 800
    EXTENT        xxxxxxxxxxxxxxxx
    UNITS METERS
    SHAPEPATH    "c:/ms4w/map/"
    IMAGECOLOR    210 210 210

    
    PROJECTION
        "init=epsg:27591"   ##required
    END
    

    WEB
        IMAGEPATH "C:/ms4w/Apache/htdocs/img/"
        IMAGEURL "img/"
        METADATA
            "wms_title"                "WMS Demo Server"
            "wms_onlineresource"    "http://localhost/cgi-bin/mapserv.exe?"
            "wms_srs"                "epsg:27591"
        END
    END

#
# Start of layer definitions
#

    LAYER
        NAME "commune"
        METADATA
            "wms_title"    "Commune"
        END
        TYPE POLYGON
        STATUS DEFAULT
        CONNECTIONTYPE oraclespatial
        CONNECTION "user/user@blabla"
        DATA "GEOMETRY FROM COMMUNE"
        PROCESSING "CLOSE_CONNECTION=DEFER"
        CLASS
            STYLE
                COLOR 240 240 240
                OUTLINECOLOR 180 180 180
            END
        END
    END # Layer
    
END # Map File

Code:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>OpenLayers Example</title>
    <link rel="stylesheet" href="C:/ms4w/apps/OpenLayers/theme/default/style.css" type="text/css" />
    <link rel="stylesheet" href="style.css" type="text/css" />
    <script src="C:/ms4w/apps/OpenLayers/lib/OpenLayers.js"></script>
    <script type="text/javascript">
        // making this a global variable so that it is accessible for
        // debugging/inspecting in Firebug
        var map = null;

        function init(){
            var options = {units: 'm'};
            
            map = new OpenLayers.Map('map', options);

            var commune_wms = new OpenLayers.Layer.WMS(
                "Commune",
                "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/map/mapfile.map&",
                {layers: 'commune'}
            );

            map.addLayers([commune_wms]);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.zoomToMaxExtent();
        }
    </script>
  </head>
  <body onload="init()">
    <h1 id="title">OpenLayers Example</h1>
    <div id="tags"></div>
    <p id="shortdesc">
        Demonstrate a simple map with an overlay that includes layer switching controls.
    </p>
    <div id="map" class="smallmap"></div>
    <div id="docs"></div>
  </body>
</html>

Le résultat avec OpenLayers:
- Rien ne s'affiche, juste un fond gris
(rappel en passant juste par MapServer, ca fonctionne)
- Et lorsque j'avais ajouté un SCALEBAR dans la mapfile, celle-ci était affiché plein de fois comme une mosaïque avec une échelle de 6000km alors qu'à la base, je dois afficher les contours d'une commune


Voilà,

Si vous avez une solution à mon problème^^.

En tout cas, merci à l'ensemble de la communauté GeoRezo car cela m'a permis de bien avancer dans mon projet grâce aux différents tutos et autres topics.

Hors ligne

 

#2 Thu 02 July 2009 11:27

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

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

Il ne faut pas ajouter la barre d'échelle via MapServer, c'est normal qu'il s'affiche en "mosaique" (openlayers gère la carte sous forme de tuiles).

Cependant, cela donne quelques informations :
1. le service WMS fonctionne wink
2. OpenLayers gère correctement le service WMS côté client ;
3. la zone n'est pas correcte, on doit être en dehors de la zone de données wink
Conclusion :
Vérifier que OpenLayers a une projection définie correctement, par défaut WGS84, si aucune autre projection n'a été définie (au niveau de l'objet map ou layer), cela peut poser problème. Est ce que MapServer peut reprojeter les données ne WGS84 ?

Si je regarde le code que tu as fournies, on remarque que tu n'as pas changé la projection dans OL, donc celle par défaut s'applique.

Au niveau du code du mapfile, tu définies une projection en 27591 ... et tu ne proposes pas 4326 (WGS84).

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 Thu 02 July 2009 12:09

smile
Participant actif
Date d'inscription: 2 Jul 2009
Messages: 110

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bon, j'ai effectué des recherches et de tests, alors:

Si on supprime toutes les références au système de projection dans le mapfile, en passant par le cgi-bin, cela fonctionne toujours.

Au niveau d'OpenLayers, j'ai effectué des recherches et je suis tombé sur ca et en modifiant le mapfile, toujours rien.

En effectuant une autre recherche, je suis tombé sur le bout de code suivant:

Code:

projection: new OpenLayers.Projection("epsg:27572"),
displayProjection:new OpenLayers.Projection("epsg:4326"),
units:"m"

J'ai effectué des essais en remplaçant 27572 par "mon" système de projection (27591 - Lambert I) et toujours rien au niveau d'OpenLayers...

Idem, en faisant un mix des 2, toujours rien...

PS: Merci pour cette réponse rapide^^

Hors ligne

 

#4 Thu 02 July 2009 12:19

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

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

Première chose à faire à mon avis est de revenir au code que tu as posté et de permettre à mapserver de reprojeter en WGS84. Pour cela tu dois rajouter EPSG:4326 à la suite de "epsg:27591" pour le paramètre "wms_srs"

Code:

"wms_srs" "epsg:27591 epsg:4326"

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 Thu 02 July 2009 12:59

smile
Participant actif
Date d'inscription: 2 Jul 2009
Messages: 110

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Justement,

Comme je l'ai dit, j'ai essayé plein de manips et aucune n'a fonctionné, y compris celle que vous citez.

Voici un bout de mon mapfile:

Code:

    PROJECTION
        "init=epsg:27591"   ##required
    END

    WEB
        IMAGEPATH "C:/ms4w/Apache/htdocs/img/"
        IMAGEURL "img/"
        METADATA
            "wms_title"     "WMS Demo Server"
            "wms_onlineresource"         "http://localhost/cgi-bin/mapserv.exe?"
            "wms_srs"        "epsg:27591 epsg:4326"
        END
    END


    LAYER
        NAME "commune"
        METADATA
            "wms_title"    "Commune"
            "wms_srs"     "epsg:27591 epsg:4326"    
        END
    END

J'ai essayé de commenter, décommenter, alterner les epsg, le tout avec mon ancien code html.

Il y a-t-il peut-être un soucis avec le EXTENT qui est en Lambert I dans le Mapfile ??? Ne faudrait-il pas affecter un EXTENT via OpenLayers ???

Merci !

PS: Je précise au cas où que je suis issu d'une formation en informatique et donc la géomatique, c'est pas mon dada.

Hors ligne

 

#6 Thu 02 July 2009 14:13

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

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Ah oui bien sur, l'extent côté openlayers doit être dans la projection utilisé par OpenLayers wink CQFD

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 Fri 03 July 2009 10:34

smile
Participant actif
Date d'inscription: 2 Jul 2009
Messages: 110

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

Oui je m'en était rendu compte. En fait, tout fonctionnait bien depuis le départ, sauf que la commune était projetée par défaut en WGS84 ce qui fait que c'était un minuscule pixel sur le fond gris. De plus, j'ai récupéré les données d'un mapfile existant et la projection utilisée était "deprecated" après une petite recherche sur le net.

Voilà, merci pour votre réponse.

J'arrive avec une autre question qui peut paraître bête mais qui a toute son importance pour la suite du projet.

Peut-on désactiver le tuilage sur OpenLayers ?

Hors ligne

 

#8 Fri 03 July 2009 10:39

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

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

On peut utiliser certaine couche non tuilé (une couche MapServer par exemple) mais celles-ci ne sont jamais conseillé.

Pourquoi veux tu désactiver le tuilage sans indiscretion ? C'est un apport important à mon avis !

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 Fri 03 July 2009 10:51

smile
Participant actif
Date d'inscription: 2 Jul 2009
Messages: 110

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Si j'ai bien saisi ce que l'on m'a dit au service SIG, il y aurait un problème lorsqu'un objet occupe plusieurs tuiles. Pour l'afficher sur les 4 tuiles, il faudrait faire 4 requêtes SQL pour aller le rechercher dans la BDD Oraclespatial.

Aussi, j'ai vu qu'il y a un "tilecache" mais on m'a annoncé que les données changent quotidiennement dans la BDD alors je doute de l'intérêt.

Auriez-vous une suggestion d'un logiciel à intégrer à MapServer permettant de rajouter des outils comme OpenLayers sachant que par la suite, je devrai aussi des clics de souris pour récupérer l'ID des bâtiments, colorier des bâtiments en fonction des utilisateurs et des droits qui leur sont associés dans une BDD MySQL ?

Mapbender conviendrait-il ?

PS: Encore merci pour votre aide^^

Hors ligne

 

#10 Fri 03 July 2009 11:08

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

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

smile a écrit:

Si j'ai bien saisi ce que l'on m'a dit au service SIG, il y aurait un problème lorsqu'un objet occupe plusieurs tuiles. Pour l'afficher sur les 4 tuiles, il faudrait faire 4 requêtes SQL pour aller le rechercher dans la BDD Oraclespatial.


oui surtout qu'il y a 16 tuiles ;)Je ne savais pas qu'Oracle avait ce genre de soucis tongue

smile a écrit:

Aussi, j'ai vu qu'il y a un "tilecache" mais on m'a annoncé que les données changent quotidiennement dans la BDD alors je doute de l'intérêt.


Est ce que toutes les couches changent régulièrement ? Quelle est leur fréquence de mise à jour ? Sont elles mises à jour ou modifiées ? Y a t-il un intérêt d'avoir une fréquence de mise à jour élevé ? Créer des tuiles pour certaines couches qui n'évoluent que très peu est déjà une bonne manière d'optimiser l'appli, ensuite si les données évoluent mais à une fréquence qui permet de vider le cache tout en gardant l'apport de TileCache, c'est à dire si le nombre de visiteur est important et que la fréquence de mise à jour et d'une semaine par exemple. Est ce que les données en production sont les mêmes que celle de la saisie (même base de donnés par exemple).

Après tout est question d'équilibre.

smile a écrit:

Auriez-vous une suggestion d'un logiciel à intégrer à MapServer permettant de rajouter des outils comme OpenLayers sachant que par la suite, je devrai aussi des clics de souris pour récupérer l'ID des bâtiments, colorier des bâtiments en fonction des utilisateurs et des droits qui leur sont associés dans une BDD MySQL ?

Mapbender conviendrait-il ?

PS: Encore merci pour votre aide^^


CartoWeb ?

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 Fri 03 July 2009 11:14

smile
Participant actif
Date d'inscription: 2 Jul 2009
Messages: 110

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Est ce que toutes les couches changent régulièrement ? Quelle est leur fréquence de mise à jour ? Sont elles mises à jour ou modifiées ? Y a t-il un intérêt d'avoir une fréquence de mise à jour élevé ? Créer des tuiles pour certaines couches qui n'évoluent que très peu est déjà une bonne manière d'optimiser l'appli, ensuite si les données évoluent mais à une fréquence qui permet de vider le cache tout en gardant l'apport de TileCache, c'est à dire si le nombre de visiteur est important et que la fréquence de mise à jour et d'une semaine par exemple. Est ce que les données en production sont les mêmes que celle de la saisie (même base de donnés par exemple).


Alors là, je ne peux répondre...On m'a seulement dit ce que j'ai énoncé plus haut. Le service SIG doit bien avoir ses raisons enfin bon...

Je vais aller jeter un oeil du côté de CartoWeb...

Merci,

Bonne journée !

Hors ligne

 

#12 Wed 08 July 2009 16:40

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

Re: [MapServer/OpenLayers] Problème affichage via Openlayers

Bonjour,

La suite se passe ici : http://georezo.net/forum/viewtopic.php?pid=143535

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