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

END

Code javascript, openlayers

Code:

<script src="http://openlayers.org/api/OpenLayers.js"></script>
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;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
END

Je 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 smile
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

 

Pied de page des forums

Powered by FluxBB