[Gfoss] openlayers e wms

Il mapfile, molto semplice, è il seguente (se tramite browser richiedo
http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/edifici.map&service=WMS

, firefox tenta di scaricarmi il file xml per cui dovrebbe essere tutto
corretto):

Alessio,
prima di tutto prova se il tuo wms fa davvero la mappa.
quel file che il browser ti offre di scaricare deve essere letto per vedere che output da. potrebbe darti anche un errore in formato xml.

prova a vedere questa richiesta:
http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/edifici.map&service=WMS&version=1.0&layers=&request=getMap

se da una immagine come te l'aspetti vuol dire che sei un passo avanti.

magari correggi nel mapfile "edifci" con "edifici", se ti piace di più

se vuoi essere sicuro puoi forzare comunque molti dei parametri.
un esempio usando spearfish:
-------------------------------------------------------------------------------------------------------------------

map = new OpenLayers.Map( $('map') );

            layer = new OpenLayers.Layer.WMS( "Ominiverdi Spearfish WMS", "http://www.ominiverdi.org/cgi-bin/mapserv?map=/home/doktoreas/data/wms/mapfile/pywps_wms_spearfish_OL.map",
  {layers: 'dem,roads','VERSION': "1.0.0",'units': 'meters'},{'maxExtent': new OpenLayers.Bounds(588913,4913720,610067,4928011),'maxResolution': "auto"} );
            
            map.addLayer(layer);
map.zoomToMaxExtent();

-------------------------------------------------------------------------------------------------------------------

vi sono altri modi per debuggare open layers ma dovrei vederlo online.

leggi comunque bene la documentazione.
leggersi anche qualche tutorial o ancora meglio le specifiche di WMS dovrebbe fare bene.

OpenLayer è uno strumento potente ma usarlo al pieno delle sue possibilità non è banale.

ciao
Lorenzo

Ciao Lorenzo, grazie per le indicazioni innanzitutto. Allora:

ho controllato l'output xml del GetCapabilities e c'erano dei problemi che ho risolto.
Ora con il GetMap

http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/edifici.map&service=WMS&version=1.0&layers=&request=getMap

effettivamente ottengo la mappa, quindi il wms dovrebbe essere settato correttamente.

Purtroppo openlayers ancora non sono riuscito a farlo andare. Oggi ho avuto poco tempo da dedicarci ma spero di essere più libero nei prossimi giorni.
Ad ogni modo il codice della paginetta di prova che ho scritto è su per giù lo stesso dell'altra volta.

<html>
    <head>
        <title>OpenLayers-2.3-Prova</title>
        <style type="text/css">
        #map {
            width: 800px;
            height: 475px;
            border: 1px solid black;
        }
        </style>
        <script type="text/javascript" src="../lib/OpenLayers.js" />
        <script type="text/javascript">
        function init(){
                map = new OpenLayers.Map( $('map') );
                   layer1 = new OpenLayers.Layer.WMS( "il mio WMS",
                                         "http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/edifici.map&quot;,
                                         {layers: 'edifici','VERSION': "1.1.1",'units': 'meters'},
                                         {'maxExtent': new OpenLayers.Bounds(264278.668849, 4881611.855837, 568214.216620, 5136103.343204),'maxResolution': "auto"});
                            map.addLayer(layer1);
                map.zoomToMaxExtent();
        }
          </script>
      </head>
  <body onload="init()">
    <div id="map"></div>
  </body>
</html>

Se qualcuno nota l'errore accetto più che volentieri suggerimenti =).
Nel frattempo continuo a leggere wiki e documentazione alla ricerca del bandolo della matassa.
grazie a tutti

Lorenzo Becchi ha scritto:

Alessio,
prima di tutto prova se il tuo wms fa davvero la mappa.
quel file che il browser ti offre di scaricare deve essere letto per vedere che output da. potrebbe darti anche un errore in formato xml.

prova a vedere questa richiesta:
http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/edifici.map&service=WMS&version=1.0&layers=&request=getMap

se da una immagine come te l'aspetti vuol dire che sei un passo avanti.

magari correggi nel mapfile "edifci" con "edifici", se ti piace di più

se vuoi essere sicuro puoi forzare comunque molti dei parametri.
un esempio usando spearfish:
-------------------------------------------------------------------------------------------------------------------

map = new OpenLayers.Map( $('map') );

            layer = new OpenLayers.Layer.WMS( "Ominiverdi Spearfish WMS", "http://www.ominiverdi.org/cgi-bin/mapserv?map=/home/doktoreas/data/wms/mapfile/pywps_wms_spearfish_OL.map&quot;,
  {layers: 'dem,roads','VERSION': "1.0.0",'units': 'meters'},{'maxExtent': new OpenLayers.Bounds(588913,4913720,610067,4928011),'maxResolution': "auto"} );
            
            map.addLayer(layer);
map.zoomToMaxExtent();

-------------------------------------------------------------------------------------------------------------------

vi sono altri modi per debuggare open layers ma dovrei vederlo online.

leggi comunque bene la documentazione.
leggersi anche qualche tutorial o ancora meglio le specifiche di WMS dovrebbe fare bene.

OpenLayer è uno strumento potente ma usarlo al pieno delle sue possibilità non è banale.

ciao
Lorenzo

_______________________________________________
Gfoss mailing list
Gfoss@faunalia.com
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss

Ciao a tutti, dunque... sono quasi riuscito a far funzionare openlayers.
Cercherò di illustrare i passaggi nel modo più chiaro possibile.

1)Ho verificato che le richieste GetCapabilities e GetMap al WMS non restituissero errori:
- GetCapabilities produce un file XML senza errori o warning messages
- GetMap disegna la mappa correttamente nella finestra del browser

2)Ho scompattato lo zip di OpenLayers-2.3 nella DocumentRoot di Apache e sembra funzionare correttamente con tutti i file di esempio compresi nell'archivio zip (visto che, una volta aggiornato il path a OpenLayers.js visualizzo correttamente gli esempi nel browser)

3)Ho scritto (ammetto che ho scopiazzato un po'... Paolo =)) la paginetta html che riporto di seguito. Grazie alla documentazione sul sito di openlayers ho corretto varie cose nella parte in javascript rispetto al due giorni fa, quando openlayers non dava proprio segni di vita.

<html xmlns="http://www.w3.org/1999/xhtml&quot;&gt;
<head>
  <title>OpenLayers-2.3-Prova</title>
  <style type="text/css">
        #map {
            width: 760px;
            height: 380px;
            border: 1px solid black;
        }
  </style>
<body>
  <h2>Abruzzo - Prova OpenLayers-2.3</h2>
  <div id="map"></div>
  <script type="text/javascript" src="/var/www/OpenLayers-2.3/lib/OpenLayers.js"></script>
  <script defer="defer" type="text/javascript">
         var map = new OpenLayers.Map('map',{ controls: });
          var zoombar = new OpenLayers.Control.PanZoomBar();
             zoombar.zoomStopHeight = 11;
             map.addControl(zoombar);
             map.addControl(new OpenLayers.Control.MouseToolbar());
             map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
          // map.addControl(new OpenLayers.Control.Permalink());
          // map.addControl(new OpenLayers.Control.Permalink($('permalink')));
             map.addControl(new OpenLayers.Control.MousePosition());
          // map.addControl(new OpenLayers.Control.OverviewMap());

         var layer_1 = new OpenLayers.Layer.WMS( "Abruzzo",
                   "http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/CLC_2000_Abruzzo.map&service=WMS&quot;,

                      {layers:"clc2000",'REQUEST':"GetMap",'VERSION': "1.1.1",'units': "meters"},
           {'maxExtent': new OpenLayers.Bounds(328259.991928, 4614946.828576, 489866.744479, 4749706.007719),'maxResolution':"auto"}
           );
                              map.addLayer(layer_1);
            map.zoomToMaxExtent();
  </script>
</head>
</body>
</html>

4)Il risultato è una widjet perfettamente funzionante (all'apparenza...) ma che non visualizza il layer! (immagine allegata)

5)Se nel codice javascript sostituisco

var layer_1 = new OpenLayers.Layer.WMS( "Abruzzo",
                   "http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/CLC_2000_Abruzzo.map&service=WMS&quot;,

                      {layers:"clc2000",'REQUEST':"GetMap",'VERSION': "1.1.1",'units': "meters"},
           {'maxExtent': new OpenLayers.Bounds(328259.991928, 4614946.828576, 489866.744479, 4749706.007719),'maxResolution':"auto"}
           );

con un più semplice

var layer_1 = new OpenLayers.Layer.WMS( "Abruzzo",
                   "http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/CLC_2000_Abruzzo.map&service=WMS&quot;,

                      {layers:"clc2000",'REQUEST':"GetMap",'VERSION': "1.1.1",'units': "meters"} );

Vedo una mappa microscopica (circa 1x1 mm) al centro dell'area di OpenLayers...

Ho cercato la soluzione nel wiki di openlayers.org ma senza successo (anche perchè di molti capitoli c'è solo il titolo).
Qualcuno sa dirmi dove sta l'inghippo?
ciao e grazie

Alessio

OpenLayers.jpg

Non è che è un problema della proiezione, percui il Mapextent sbarella?

Giova

Il 01/03/07, Alessio Di Lorenzo < alessio.dilorenzo@gmail.com> ha scritto:

Ciao a tutti, dunque… sono quasi riuscito a far funzionare openlayers.
Cercherò di illustrare i passaggi nel modo più chiaro possibile.

1)Ho verificato che le richieste GetCapabilities e GetMap al WMS non
restituissero errori:

  • GetCapabilities produce un file XML senza errori o warning messages
  • GetMap disegna la mappa correttamente nella finestra del browser

2)Ho scompattato lo zip di OpenLayers-2.3 nella DocumentRoot di Apache e
sembra funzionare correttamente con tutti i file di esempio compresi
nell’archivio zip (visto che, una volta aggiornato il path a
OpenLayers.js visualizzo correttamente gli esempi nel browser)

3)Ho scritto (ammetto che ho scopiazzato un po’… Paolo =)) la
paginetta html che riporto di seguito. Grazie alla documentazione sul
sito di openlayers ho corretto varie cose nella parte in javascript
rispetto al due giorni fa, quando openlayers non dava proprio segni di vita.

OpenLayers-2.3-Prova #map { width: 760px; height: 380px; border: 1px solid black; }

Abruzzo - Prova OpenLayers-2.3

4)Il risultato è una widjet perfettamente funzionante (all’apparenza…)
ma che non visualizza il layer! (immagine allegata)

5)Se nel codice javascript sostituisco

var layer_1 = new OpenLayers.Layer.WMS( “Abruzzo”,

"http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/CLC_2000_Abruzzo.map&service=WMS ",

{layers:“clc2000”,‘REQUEST’:“GetMap”,‘VERSION’:
“1.1.1”,‘units’: “meters”},
{‘maxExtent’: new OpenLayers.Bounds(328259.991928,
4614946.828576, 489866.744479, 4749706.007719),‘maxResolution’:“auto”}
);

con un più semplice

var layer_1 = new OpenLayers.Layer.WMS( “Abruzzo”,

http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/CLC_2000_Abruzzo.map&service=WMS”,

{layers:“clc2000”,‘REQUEST’:“GetMap”,‘VERSION’:
“1.1.1”,‘units’: “meters”} );

Vedo una mappa microscopica (circa 1x1 mm) al centro dell’area di
OpenLayers…

Ho cercato la soluzione nel wiki di openlayers.org ma senza successo
(anche perchè di molti capitoli c’è solo il titolo).
Qualcuno sa dirmi dove sta l’inghippo?
ciao e grazie

Alessio


Gfoss mailing list
Gfoss@faunalia.com
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss

G. Allegri ha scritto:

Non è che è un problema della proiezione, percui il Mapextent sbarella?

Giova

mmmh, sì ci avevo pensato... ma anche aggiungendo il codice EPSG dell'UTM33-WGS84 (come nella parte di codice qui sotto) la situazione non cambia di una virgola...

var layer_1 = new OpenLayers.Layer.WMS( "Abruzzo",

"http://localhost/cgi-bin/mapserv?map=/home/alessio/Desktop/CLC_2000_Abruzzo.map&service=WMS&quot;,

                      {layers:"clc2000",'REQUEST':"GetMap",'VERSION':
"1.1.1",'units': "meters", projection: "EPSG:32633"},
           {'maxExtent': new OpenLayers.Bounds(328259.991928,
4614946.828576, 489866.744479, 4749706.007719),'maxResolution':"auto"}
           );

grazie comunque del suggerimento Giovanni

Continuo nella mia esporazione di openlayers...

ho notato che se cambio il colore di sfondo nel mapfile da bianco a grigio, openlayers mi visualizza lo sfondo grigio.... ma non la mappa dell'abruzzo che dovrebbe invece comparire.
In questo modo mi sono reso conto che anche prima, quando vedevo solo un riquadro bianco nello spazio di openlayers, in realtà visualizzavo lo sfondo.

In pratica, se imposto IMAGECOLOR 192 192 192 ciò che vedo in openlayers è un riquadro grigio (che però non corrisponde come dimensioni a quanto specifico in SIZE dell'oggetto MAP).
Ma la mappa (il mio layer) che fine ha fatto?
Ripeto, se dal browser lancio la richiesta GetMap la mappa viene disegnata correttamente...

ciao

Alessio