Pages: 1
- Sujet précédent - Problèmes d'affichage WMS et WFS avec openlayers/Mapserver - Sujet suivant
#1 Tue 23 March 2010 09:03
- APierre
- Participant occasionnel
- Date d'inscription: 23 Mar 2010
- Messages: 14
Problèmes d'affichage WMS et WFS avec openlayers/Mapserver
Bonjour,
Je suis étudiant et assez débutant dans le domaine du webmapping.
Dans le cadre d'un projet pour les études j'essaye de faire un guichet cartographique pour une commune.
Il s'agit d'afficher un fond de plan (choix orthophoto ou google maps) et par dessus d'afficher des données vectorielles type conduites, plan de zones...
Mon problème actuellement est l'affichage des orthophotos : j'utilise Mapserver voici le code du .map :
Code:
MAP
  NAME "Vallorbe"
  STATUS ON
  SIZE 200 200
  EXTENT 460000 60000 850000 300000
  UNITS    METERS
  SHAPEPATH    "Swissimage04/"
  IMAGETYPE    PNG
  
  PROJECTION
   "init=epsg:21781"
  END
    
  WEB
    IMAGEPATH   "C:/ms4w/tmp/ms_tmp/"
    IMAGEURL    "/ms_tmp/"
    LOG         "C:/ms4w/tmp/log/"
    METADATA
      "wms_title"           "WMS Test"
      "wms_onlineresource"  "http://apache/cgi-bin/mapserv.exe?map=D:/projets/2010/geo/meyer/TS_2010/Vallorbe.map&"
      "wms_srs"             "epsg:21781"
      "wms_format"          "image/png"
      
      "wfs_title"             "WFS Test"
      "wfs_onlineresource"    "http://apache/cgi-bin/mapserv.exe?map=D:/projets/2010/geo/meyer/TS_2010/Vallorbe.map&"
      "wfs_srs"               "epsg:21781"
    END
  END
  
  LAYER
    NAME "1201_42"
    TYPE RASTER
    STATUS ON
    DATA "1201_42.jpg"
    PROJECTION
     "init=epsg:21781"
    END
    METADATA
    "wms_title" "Ortho" 
    END
  END  
  
  LAYER
    NAME "Parcelles"
    TYPE POLYGON
    STATUS ON
    DATA "Bie_Bien_fonds_ili.shp"
    
    CLASS
      NAME "Parcelles"
      
      STYLE
        OUTLINECOLOR 0 0 0
      END
      
    END #CLASS
    
    PROJECTION
      "init=epsg:21781"
    END
    
    METADATA
      "wfs_title" "Parcelles"
      "gml_featureid" "Nom"
      "gml_include_items" "all"
    END
    DUMP TRUE
    
  END #LAYER
  
  
ENDCode javascript, openlayers
Code:
<script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAMnUP2OscziB71LfPQBVDTBS36fy1C67uFvqw6k5574VKBBkJhxRBUPP4gx_hzn2xUl_73xpvKBjOcw"></script>
    <script src="libraries/proj4js-EPSG21781.js"></script>
    <script src="libraries/proj4js-combined.js"></script>
  <script type="text/javascript">
   
      var map;
        var layerList = new Array();
        var layerButton = new Array();
        
      function init() {
     
      // Options de la carte
      var options = {
        projection:     new OpenLayers.Projection("EPSG:21781"),
        maxResolution:  "auto",
        controls:       [
          new OpenLayers.Control.Navigation(),
          new OpenLayers.Control.PanZoomBar(),      
              new OpenLayers.Control.MousePosition(),
              new OpenLayers.Control.LayerSwitcher()
        ],
      numZoomLevels: 13, minZoomLevel: 10, maxZoomLevel: 22
      };
      map = new OpenLayers.Map("map", options);
     
     
       //déclaration des couches
        var g_hybrid= new OpenLayers.Layer.Google(
        "Google Hybrid",
        {type: G_HYBRID_MAP}
        );
        
      var g_streets = new OpenLayers.Layer.Google(
            "Google Streets"
             );
     
      var g_physical = new OpenLayers.Layer.Google(
          "Google Physical",
         {type: G_PHYSICAL_MAP}
        );
 
      var g_satellite = new OpenLayers.Layer.Google(
        "Google Satellite",
         {type: G_SATELLITE_MAP}
        );
        
      //Création de la couche Ortho
       var wms_ortho = new OpenLayers.Layer.WMS(
          "Orthophoto 2007",
          "http://apache/cgi-bin/mapserv.exe?map=D:/projets/2010/geo/meyer/TS_2010/Vallorbe.map&",
          { Layers: "1201_42",
            format: "image/png"
          }
        );
        
      //Création des couches SIT
        var Parcelles = new OpenLayers.Layer.WFS(
          "Parcelles",
          "http://apache/cgi-bin/mapserv.exe?map=D:/projets/2010/geo/meyer/TS_2010/Vallorbe.map&",
          { Layers: "Parcelles",
            format: "image/png"
          }
        );
        
       
       // un tableau avec la liste des couches
       layerList["GStreets"] = g_streets;
       layerList["GHybrid"] = g_hybrid;
       layerList["GSatellite"] = g_satellite;
       layerList["Ortho"] = wms_ortho;
       layerList["Parcelles"] = Parcelles;
       
       // un tableau avec la liste des boutons d'options
       layerButton["GStreets"] = "GStreets";
       layerButton["GHybrid"] = "GHybrid";
       layerButton["GSatellite"] = "GSatellite";
       layerButton["Ortho"] = "Ortho";
       layerButton["Parcelles"] = "Parcelles";
       
      map.addLayers([
          g_hybrid,
             g_streets,
        g_physical,
        g_satellite,
        wms_ortho,
        Parcelles
      ]);
      
      map.setCenter(new OpenLayers.LonLat(6.376463, 46.711525), 4);
      
        document.getElementById('GHybrid').checked = true;
      }
      
       // fin init() 
      
      
      function update() {
      
           var layer;
           var button;
           
        for (i in layerList){
            layer = layerList[i];
            button = layerButton[i];
            layer.setVisibility(document.getElementById(button).checked);
            if (document.getElementById(button).checked) {map.setBaseLayer(layer)};
        }
      }
     
    </script>Les orthophotos apparaissent blanches de même que les données dans le système ESPG:21781
Que faire pour afficher correctement ces orthophotos en gardant le même niveau de zoom?
Le problème est qu'il faudrait que j'affiche plusieurs orthophotos pour couvrir la commune : comment faire, quel code utiliser ?
De même pour les WFS.
Merci d'avance
Dernière modification par APierre (Tue 23 March 2010 11:47)
Hors ligne
#2 Wed 31 March 2010 12:32
- Delu
- Participant actif
- Lieu: Briançon
- Date d'inscription: 29 Apr 2008
- Messages: 76
Re: Problèmes d'affichage WMS et WFS avec openlayers/Mapserver
Bonjour,
Est-ce que tu as résolu tes pb ?
pour afficher plusieurs Orthos il est possible de passer par un fichier shape qui défini l'emprise de plus orthos.
Code:
LAYER
  NAME "ortho_tile"
  TYPE POLYGON
  GROUP fonds
  DATA "raster/Ortho2003.shp"
  CLASS
    STYLE
      OUTLINECOLOR 255 0 0
    END
  END
  METADATA
    "wms_title" "dalage des Orthophotos IGN"
    "wms_extent" "870000 1940000 943685 2030790"
    "wms_srs" "EPSG:27572 EPSG:4326"
  END
  MAXSCALE 10000
  MINSCALE 100
END
LAYER
  NAME "Ortho2003"
  TYPE RASTER
  GROUP fonds
  TILEINDEX "ortho_tile"
  METADATA
    "wms_title" "Orthophoto IGN"
    "wms_extent" "870000 1940000 950000 2040000"
    "wms_srs" "EPSG:27572 EPSG:4326"
  END
  MAXSCALE 10000
  MINSCALE 100
ENDJe peux te faire passer le zip de la shape à titre d'exemple.
Pour le reste, est-ce que ton .map fonctionne. C'est à dire est-ce qu'il y a au moins qq chose qui s'affiche ou bien le pb vient du coté Openlayers ?
Gil
Hors ligne
#3 Wed 31 March 2010 15:24
- APierre
- Participant occasionnel
- Date d'inscription: 23 Mar 2010
- Messages: 14
Re: Problèmes d'affichage WMS et WFS avec openlayers/Mapserver
Hello, j'ai pas résolu ce problème d'affichage des orthos... 
Elles sont en .jpg j'en ai 2 qui s'affichent sur mes 8 couvrant la commune donc le map fonctionne.
La resolution est crade aussi.
Pour ta solution c'est pour "couper" les orthos selon un polygone c'est ça ? 
Si tu connais quelqu'un de doué en programmation avec qui je pourrais communiquer par mail ca me dirait bien 
A+
Hors ligne
#4 Wed 31 March 2010 17:58
- Delu
- Participant actif
- Lieu: Briançon
- Date d'inscription: 29 Apr 2008
- Messages: 76
Re: Problèmes d'affichage WMS et WFS avec openlayers/Mapserver
Pour la résolution pourrie c'est surement un pb de nombre de couleurs. Mapserveur doit te retourner des images en 256 couleurs.
Dans la partie map de ton .map, avant la partie web, tu devrais ajouter des informations plus précises concernant le ou les formats de sortie des images que mapserver va servir par exemple:
Code:
    MAP
  NAME "toto"
  STATUS ON
  EXTENT 870000 1940000 950000 2040000
  SIZE 800 500
  UNITS METERS
  SHAPEPATH "/var/local"
  IMAGECOLOR -1 -1 -1
  SYMBOLSET "symbols.txt"
  FONTSET "fonts.txt"
  #IMAGETYPE png
  PROJECTION
    "init=epsg:27572"
  END
  CONFIG "MS_ERRORFILE" "/tmp/ms_error.txt"
    OUTPUTFORMAT
        NAME "aggtrans"
        MIMETYPE "image/png"
        DRIVER AGG/PNG
        EXTENSION "png"
        IMAGEMODE RGBA
        TRANSPARENT ON
        FORMATOPTION          "INTERLACE=OFF"
    END
    OUTPUTFORMAT
        NAME "png"
        MIMETYPE "image/png"
        DRIVER "GD/PNG"
        EXTENSION "png"
        IMAGEMODE RGB
        FORMATOPTION          "TRANSPARENT=OFF"
    END
    OUTPUTFORMAT
        NAME "agg"
        MIMETYPE "image/png"
        DRIVER AGG/PNG
        EXTENSION "png"
        IMAGEMODE RGB
        TRANSPARENT OFF
        FORMATOPTION          "INTERLACE=OFF"
        FORMATOPTION          "QUANTIZE_FORCE=ON"
        FORMATOPTION          "QUANTIZE_DITHER=OFF"
        FORMATOPTION          "QUANTIZE_COLORS=256"
    END
    OUTPUTFORMAT
        NAME "gif"
        DRIVER "GD/GIF"
        MIMETYPE "image/gif"
        IMAGEMODE PC256
        EXTENSION "gif"
        TRANSPARENT ON
    END    
  LEGEND
    STATUS ON
    KEYSIZE 15 10
    IMAGECOLOR 255 255 255
    LABEL
      TYPE TRUETYPE
      SIZE 8
      COLOR 0 0 0
      FONT vera
    END
  END
  WEB
....tout est là
http://fa.vdb.free.fr/MapServer/doc/map … tputformat
ou plus généralement là
http://fa.vdb.free.fr/MapServer/doc/map … ce_fr.html
pour ce qui concerne l'orthotile je ne suis pas expert, j'ai repris un exemple (que je peux te faire passer si tu me donne un mail). Mais ton pb vient peut-être de la transparence.
Essaie de mettre
IMAGECOLOR -1 -1 -1
après la clause SHAPEPATH par exemple.
Hors ligne
#5 Sun 11 April 2010 23:19
- APierre
- Participant occasionnel
- Date d'inscription: 23 Mar 2010
- Messages: 14
Re: Problèmes d'affichage WMS et WFS avec openlayers/Mapserver
Hello , merci pour la reponse.
J'etais absent quelques jours en vacances je reprends mon code demain.
Je te tiens au courant si tu es toujours pour me donner un coup de main.
A+
Hors ligne
Pages: 1
- Sujet précédent - Problèmes d'affichage WMS et WFS avec openlayers/Mapserver - Sujet suivant





