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 Mon 20 July 2009 10:27

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

[MapServer/OpenLayers]Affichage d'un layer de type LINE

Bonjour Ă  tous,

Je souhaite afficher le contenu d'un shapefile en utilisant MapServer avec Openlayers. J'ai rĂ©ussit Ă  le faire dans le cas oĂč le type du layer est POLYGON mais je n'arrive pas Ă  le faire quand  le type du layer est LINE.

Voici les infos du fichier shape Ă  afficher:

INFO: Open of `C:\ms4w\Apache\htdocs\my_shape_files\shape_ams\EXP_SEGMENT_FONCTIONNEL.shp'
using driver `ESRI Shapefile' successful.

Layer name: EXP_SEGMENT_FONCTIONNEL
Geometry: Line String
Feature Count: 6
Extent: (633527.743437, 2517184.387950) - (669562.958005, 2556945.272294)
Layer SRS WKT:
(unknown)
ID_SEGMENT: Real (24.5)
ID_RESEAU: Real (24.5)
TYPE_ETB_O: String (5.0)
ID_ETB_ORI: Real (24.5)
TYPE_ETB_E: String (5.0)
ID_ETB_EXT: Real (24.5)
CODE_OUVRA: String (30.0)
ID_RAMONAB: Real (24.5)
CLASSIFICA: String (80.0)
LONGUEUR_S: Real (24.5)
PME: Real (24.5)
EXPL_DEGS_: String (80.0)
COMMENTAIR: String (255.0)
PK_INIT: Real (24.5)
ID_ENTITE_: String (30.0)
STATUT_CON: String (1.0)
AUTEUR: String (80.0)
DATE_DERNI: Date (10.0)


Voici le contenu du mapfile que j'ai écrit:

Code:

MAP
  IMAGETYPE      PNG
  EXTENT         633527.743437 2517184.387950 669562.958005 2556945.272294
  SIZE           400 300
  SHAPEPATH      "/ms4w/Apache/htdocs/my_shape_files/shape_ams"
  IMAGECOLOR     255 255 255
  LAYER
    NAME         EXP_SEGMENT_FONCTIONNEL
    DATA         EXP_SEGMENT_FONCTIONNEL
    TYPE         Line
    STATUS       DEFAULT
    CLASS
      NAME       "AMS Example"
      STYLE
        COLOR        232 232 232
        OUTLINECOLOR 32 32 32
      END
    END
  END
END

et enfin voici le contenu du fichier .html cotenant le code javascript de openlayers:

Code:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>MapServer Layer: AMS Example</title>
    <script src="../../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var map, layer, mybounds;

        function init(){
            map = new OpenLayers.Map("map");
            layer = new OpenLayers.Layer.MapServer( "Exemple AMS", "http://localhost:8081/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/my_examples_MS/ams_exp.map", {layers: "EXP_SEGMENT_FONCTIONNEL", format: 'image/png', isBaseLayer: false, opacity: 1});
            map.addLayer(layer);
            mybounds = new OpenLayers.Bounds(633527.743437,2517184.387950,669562.958005,2556945.272294);
            map.zoomToExtent(mybounds);
            map.addControl( new OpenLayers.Control.LayerSwitcher() );
        }
        
    </script>
  </head>
  <body onload="init()">
    <div id="title">MapServer Layer: AMS Example</div>
    <div id="map"></div>
  </body>
</html>

Quelqu'un a-t-il une idée de ce qui ne va pas ici dans mon code?

Merci

Hors ligne

 

#2 Mon 20 July 2009 11:12

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

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Bonjour abir_rzg,

Pour dĂ©buguer, tu devrais tenter d'Ă©crire la requĂȘte MapServer pour visualiser ta couche afin de vois si le problĂšme vient de MapServer ou d'OpenLayers.

Par contre je te dĂ©conseille d'utiliser la classe OpenLayers.Layer.MapServer et t'invite Ă  utiliser  OpenLayers.Layer.WMS. Cela sera plus simple Ă  utiliser et Ă  dĂ©buguer Ă  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

 

#3 Mon 20 July 2009 13:38

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Yves a écrit:

Bonjour abir_rzg,

Pour dĂ©buguer, tu devrais tenter d'Ă©crire la requĂȘte MapServer pour visualiser ta couche afin de vois si le problĂšme vient de MapServer ou d'OpenLayers.

Par contre je te dĂ©conseille d'utiliser la classe OpenLayers.Layer.MapServer et t'invite Ă  utiliser  OpenLayers.Layer.WMS. Cela sera plus simple Ă  utiliser et Ă  dĂ©buguer Ă  mon avis !

Y.


J'ai essayé de visualiser le layer en question avec la requÚte MapServer sans avoir recourt à OpenLayers et ça marche. Le problÚme est donc en relation avec OpenLayers.

Mais je ne comprend pas ou car avec le mĂȘme code (cĂ d en utilisant OpenLayers.Layer.MapServer) j'arrive Ă  visualiser d'autres layers de TYPE POLYGON en utilisant OpenLayers mais j'ai toujours un problĂšme avec ce layer lĂ  en particulier.

Hors ligne

 

#4 Mon 20 July 2009 13:53

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

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Bonjour,

Peut ĂȘtre peux tu essayer de retrouver la requĂȘte envoyĂ©e par OpenLayers Ă  ton serveur MapServer pour voir si celle-ci est correcte wink

Je ne voie pas trop pour le moment de solution ou de piste.

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 Mon 20 July 2009 15:02

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Yves a écrit:

Bonjour,

Peut ĂȘtre peux tu essayer de retrouver la requĂȘte envoyĂ©e par OpenLayers Ă  ton serveur MapServer pour voir si celle-ci est correcte wink

Je ne voie pas trop pour le moment de solution ou de piste.

Y.


Le requĂȘte en question c'est cele ci non? layer = new OpenLayers.Layer.MapServer( "Exemple AMS", "http://localhost:8081/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/my_examples_MS/ams_exp.map", {layers: "EXP_SEGMENT_FONCTIONNEL", format: 'image/png', isBaseLayer: false, opacity: 1});


Si c'est bien ça je ne voix pas ou est le problÚme! J'ai fait le débogage du code javascript et je n'ai pas eu d'erreur! Je ne comprend plus!

Dernière modification par abir_rzg (Mon 20 July 2009 15:03)

Hors ligne

 

#6 Mon 20 July 2009 15:07

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

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Non ca c'est du code javascript. Openlayers lance des requĂȘtes vers le serveur pour rĂ©cupĂ©rer l'image.

http://georezo.net/wiki/main:logiciels: … rs:firebug

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 Mon 20 July 2009 15:51

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Yves a écrit:

Openlayers lance des requĂȘtes vers le serveur pour rĂ©cupĂ©rer l'image.


Je ne comprend pas. explique stp.

J'ai utilisé Firebug et il ne donne aucune erreur au déboggage. J'ai aussi essayé de débuguer à la main et j'ai le mm résultat.

Hors ligne

 

#8 Mon 20 July 2009 16:08

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

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Bonjour

Et bien le rĂŽle d'OL est de gĂ©rer l'interface pour traduire la volontĂ© de l'utilisateur (zoome sur une zone, choix des couches) en requete http qu'il appel en AJAX. Normalement tu dois voir passer ces requĂȘtes dans l'onglet "console" de Firebug.

tu peux ainsi voir ces requĂȘtes et les lancer directement dans un nouvel onglet de ffox ce qui te permet gĂ©nĂ©ralement d'obtenir un message d'erreur que le serveur carto aura renvoyĂ©. Mais il permet aussi de vĂ©rifier que le contenu des paramĂštres est correcte et logique.

Si tu obtiens une image blanche, l'erreur la plus souvent commise est le systĂšme de projection incorrecte ou une mauvaise bbox.

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 Mon 20 July 2009 17:35

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Yves a écrit:

Normalement tu dois voir passer ces requĂȘtes dans l'onglet "console" de Firebug.


la console de firebug n'affiche rien quand je charge la page html en question.

Yves a écrit:

Si tu obtiens une image blanche, l'erreur la plus souvent commise est le systĂšme de projection incorrecte ou une mauvaise bbox.


bbox c'est quoi?
effectivement le résultat affiché est une page contenant les boutons de zoom et le cadre de openlayers mais sans rien dedans. pour le systÚme de projection dans le cas d'un shape je n'arrive pas à le faire afficher dans les infos de OGR INFO. pour les rasters il s'affiche mais pas pour les shapfiles. alor si g pas les info de projections correspondant à mon fichiers d'ou je vais les avoir pour les utiliser? et autre chose, mon problÚme peut-il avoir un lien avec l'unité utilisée? (en mÚtre ou en degré ou en pixel par exp)

Dernière modification par abir_rzg (Mon 20 July 2009 17:36)

Hors ligne

 

#10 Tue 21 July 2009 11:24

abir_rzg
Participant occasionnel
Date d'inscription: 20 Jul 2009
Messages: 15

Re: [MapServer/OpenLayers]Affichage d'un layer de type LINE

Bonjour,

J'ai essayĂ© d'utiliser WMS au lieux de MapServer pour invoquer le serveur carto mais je n'arrive Ă  rien afficher correctement avec ça. MĂȘme les exemples que j'ai fait qui marchaient avant ne marchent pas avec ça!

Voici le code:

Code:

var map, layer, mybounds;

function init(){
map = new OpenLayers.Map("map");
layer = new OpenLayers.Layer.WMS("Exemple AMS", "http://localhost:8081/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/my_examples_MS/ams_exp.map", {layers: "exp_ams", transparent: "true", format: "image/png", isBaseLayer: false, opacity: 1});
map.addLayer(layer);
mybounds = new OpenLayers.Bounds(633527.743437,2517184.387950,669562.958005,2556945.272294);
map.zoomToExtent(mybounds);
map.addControl( new OpenLayers.Control.LayerSwitcher() );
}

Dernière modification par abir_rzg (Tue 21 July 2009 11:27)

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo