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