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

Powered by FluxBB