[Gfoss] R: problema proiezioni postgis+mapserver

Ciao, provo a dire la mia.

La chiamata WMS e quella CGI sono cose abbastanza differenti per mia esperienza il fatto che la chiamata WMS non funzioni è quasi sempre legata a due cose:

  1. la definizione dei layer come WMS all’interno del filemap che poi richiami
  2. la chiamata al servizio (come già sottolineato da Andrea)

Per verificare che il WMS funzioni e sia ben definito nel mapfile, sul browser dovresti invocare il servizio con una stringa simile a questa:
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.[map&SERVICE=WMS&VERSION=1.1.1&REQUEST=getmap&BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&SRS=EPSG:3003](http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=getmap&BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&SRS=EPSG:3003)
(prova eventualmente ad aggiungere anche il valore dell’extent (BBOX) e del srs (con EPSG scritto maiuscolo mi raccomando) nel caso avessi problemi sulla chiamata)

Per trovare eventuali errori nella definizione dei layer
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.[map&SERVICE=WMS&VERSION=1.1.1&REQUEST=getcapabilities&BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&SRS=EPSG:3003](http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=getcapabilities&BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&SRS=EPSG:3003)

per quel che riguarda la chiamata cgi sul browser è corretto quello che riporti direi
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/elettrodottiPostgis.map&layer=elettrodotti&mode=map"
Questo però ti aiuta poco per quel che riguarda il WMS in quanto questa chiamata richiama il layer in modalità CGI e non WMS.

In sintesi ti consiglio di verificare che la getcapabilities non ti restituisca errori e che la chiamata al servizio funzioni sul browser
QGIS aggiunge di default i parametri che ti abbiamo segnalato per cui nella chiamata al servizio puoi ometterli dichiarando semplicemente il nome del file.map (però ti servono sul browser per capire se il servizio funziona)

Resta il mistero di come mai nel primo caso senza i parametri
obbligatori il browser ti visualizzava la mappa.
Puo’ anche darsi che mapserver sia cosi’ “smart” da non richiedere i
parametri obbligatori, ma sarebbe un comportamento non standard e
questo rischia di generare confusione su come deve essere fatta una
chiamata wms.
Faccio un’ipotesi per risolvere questo “mistero”:
Dentro il tuo mapfile (moreLayers.map?) sono contenuti dei layer visualizzabili con una semplice chiamata CGI, non definiti quindi come layer WMS?
In quel caso giustamente il browser li deve visualizzare. Sbaglio?

Saluti, Francesco Massa


Message: 7
Date: Fri, 12 Sep 2008 20:59:03 +0200
From: “Andrea Peri” <peri.rtoscana@gmail.com>
Subject: [Gfoss] R: problema proiezioni postgis+mapserver
To: gfoss@faunalia.it
Message-ID:
<86ee9eaa0809121159m50275d34nb3d1c20956cb2dc8@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

ho fatto dei test creando un servizio wms appoggiato a degli shp, e da qgis
faccio la chiamata al wms in questo modo
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.map
e in questo caso vedo i layer su qgis!
quindi anche questa è sbagliata?

Il discorso non e’ semplice, e va al di la’ di quello che vorrei
discutere in questo thread,
ma poiche’ non posso ne rispondere “si”, ne “no”, devo cercare di spiegarmi:

Quello che determina una chiamata wms corretta sono i parametri che si
impone nella chiamata.
Eventuali parametri che esulano da quelli previsti dallo standard sono
peculiarita’ del server specifico,
ma che non determinano la correttezza della chiamata (dal punto di
vista delle specifiche wms).

in una chiamata wms ci devono essere dei parametri, in loro assenza il
server wms non deve rispondere.

alcuni dei parametri sono questi:

…?BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&
WIDTH=400&HEIGHT=300&SRS=EPSG:3003&Layers=_idreg,idprov,idcomuni&
version=1.1.0&service=WMS&FORMAT=JPEG&TRANSPARENT=TRUE& request=getmap

naturalmente non tutti sono obbligatori (o meglio se non li indichi
prende il default)

Ma alcuni sono obbligatori.
Gli obbligatori sono:

request=getmap
service=WMS

se questi mancano il server wms non deve rispondere una mappa ! Se in
questa situazione risponde con una mappa adotta un comportamento che
non e’ standard.

Ora bisogna chiarirsi, perche’ nella prima email avevi detto

se
richedo la mappa da browser con
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/elettrodottiPostgis.map&layer=elettrodotti&mode=map
mi ritorna la mappa, se invece accedo al servizio wms da qgis, ottengo un
layer ke “sembra vuoto”.

E questo era strano perche’ nella chiamata con il browser non avevi
messo i due parametri obbligatori, ma la mappa ti era arrivata.
Mentre su qgis non ti arrivava.
Questo appariva quasi come se la chiamata i questione rispondesse a
una specificita’ di MapServer, ma che fosse fuori standard wms.

Nella tua seconda email invece spieghi che:

ho fatto dei test creando un servizio wms appoggiato a degli shp, e da qgis
faccio la chiamata al wms in questo modo
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.map
e in questo caso vedo i layer su qgis!

se sia o no una chiamata corretta di un server wms non posso capirlo
da quello che mostri.

L’unico modo per saperlo e’ provare a chiamarla da browser.
La chiami tale e quale e ti dve ritornare un messaggio di pagina vuota
o di errore.
poi ci metti i due parametri obbligatori e deve tornarti una mappa.

Infatti il browser non aggiunge automaticamente i parametri
obbligatori, cosa che invece fa’ qgis.

Resta il mistero di come mai nel primo caso senza i parametri
obbligatori il browser ti visualizzava la mappa.
Puo’ anche darsi che mapserver sia cosi’ “smart” da non richiedere i
parametri obbligatori, ma sarebbe un comportamento non standard e
questo rischia di generare confusione su come deve essere fatta una
chiamata wms.

Scusa la complicatezza del discorso, ma una semplice risposta si/no
non avrebbe aiutato la discussione.

§ Andrea §
§ Peri §


Iscriviti all’associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss mailing list
Gfoss@faunalia.com
http://www.faunalia.com/cgi-bin/mailman/listinfo/gfoss

Fine di Digest di Gfoss, Volume 39, Numero 23


ciao

Francesco Massa wrote:

Per verificare che il WMS funzioni e sia ben definito nel mapfile, sul
browser dovresti invocare il servizio con una stringa simile a questa:
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=getmap&BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&SRS=EPSG:3003

provando questo mapserver mi ritorna (credo) un'errore, in quanto mi dice di
scaricare/aprire il file mapserver.exe e non mi visualizza niente.

Francesco Massa wrote:

http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/moreLayers.map&SERVICE=WMS&VERSION=1.1.1&REQUEST=getcapabilities&BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000&SRS=EPSG:3003

anche quà stesso discorso

Francesco Massa wrote:

per quel che riguarda la chiamata cgi sul browser è corretto quello che
riporti direi
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/elettrodottiPostgis.map&layer=elettrodotti&mode=map&quot;
Questo però ti aiuta poco per quel che riguarda il WMS in quanto questa
chiamata richiama il layer in modalità CGI e non WMS.

inoltre ti volevo chiedere come faccio a chiamare il mio servizio in
modalità wms e non cgi? per esporre poi un servizio via web, dovrei usare il
wms? in che modo? infatti mi ero chiesto questa cosa perchè tutti i servizi
che ho trovato in rete usano il wms e non il cgi, ma non ho capito come fare
per esporre/e poi richiamare il mio servizio.

Francesco Massa wrote:

Resta il mistero di come mai nel primo caso senza i parametri
obbligatori il browser ti visualizzava la mappa.
Puo' anche darsi che mapserver sia cosi' "smart" da non richiedere i
parametri obbligatori, ma sarebbe un comportamento non standard e
questo rischia di generare confusione su come deve essere fatta una
chiamata wms.

Faccio un'ipotesi per risolvere questo "mistero":
Dentro il tuo mapfile (moreLayers.map?) sono contenuti dei layer
visualizzabili con una semplice chiamata CGI, non definiti quindi come
layer WMS?

chiamando i miei servizi dal browser, (entrambi con una chiamata cgi) ho una
mappa come risultato senza passare i parametri da voi indicatomi, se invece
passo i parametri, mi ritorna un'errore. Non ho capito se i parametri sono
obbligatori per le chiamate wms, o anche per quelle cgi.
per una maggiore comprensione ti allego il mio mapfile
"elettrodottiPostgis", che chiamandolo dal browser in questo modo funziona e
ritorna la mappa
(http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/elettrodottiPostgis.map&layer=elettrodotti&mode=map),
aggiungendo i parametri obbligatori mi ritorna un errore. Se invece punto
qgis all'url precedente (
http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/elettrodottiPostgis.map&layer=elettrodotti&mode=map
) ottengo una mappa vuota.

MAP
  NAME 'name'
  SIZE 600 540
  UNITS meters

  EXTENT 1434718.013226 4954934.459157 1711821.362581 5159947.827392
  PROJECTION
    "init=epsg:3003"
  END

  IMAGECOLOR 192 192 192
  IMAGEQUALITY 95
  IMAGETYPE png
  OUTPUTFORMAT
    NAME png
    DRIVER 'GD/PNG'
    MIMETYPE 'image/png'
    #IMAGEMODE PC256
    EXTENSION 'png'
  END
  LEGEND
      IMAGECOLOR 255 255 255
    STATUS ON
    KEYSIZE 18 12
    LABEL
      TYPE BITMAP
      SIZE MEDIUM
      COLOR 0 0 89
    END
  END

  WEB
    IMAGEPATH '/tmp/'
    IMAGEURL '/tmp/'

    # WMS server settings
    METADATA
      'wms_title' 'name'
      'wms_onlineresource'
'http://localhost:81/cgi-bin/mapserv.exe?map=/ms4w/Apache/htdocs/lombardia/elettrodottiPostgis.map
      'wms_srs' 'EPSG:3003'
    END
  END

  LAYER
    NAME 'elettrodotti'
    TYPE LINE
    CONNECTIONTYPE postgis
    CONNECTION 'host=localhost user=postgres password=*** dbname=dbGeo'
    DATA 'the_geom FROM public.elettrodotti'
    METADATA
      'wms_title' 'elettrodotti'
    END
    STATUS DEFAULT
    TRANSPARENCY 100
  PROJECTION
    "init=epsg:3003"
  END
    CLASS
       NAME 'elettrodotti'
       STYLE
         SYMBOL 0
         SIZE 10
         OUTLINECOLOR 97 136 146
         COLOR 0 0 0
       END
    END
  END
END

sapresti dirmi come fare una chiamata wms a questo file? o devo modificare
qualcosa?
sai eventualmente indicarmi dove trovare qualche manuale/tutorial in rete?
purtroppo oggi non funziona neanche il sito di mapserver
(http://mapserver.gis.umn.edu/) dove ho preso un pò di spunti per i miei
test.
scusate per la lunghezza dei miei messaggi, ma vorrei capire un pò sul
funzionamento di mapserver
ciao
peppe
--
View this message in context: http://www.nabble.com/R%3A-problema-proiezioni-postgis%2Bmapserver-tp19469576p19492167.html
Sent from the Gfoss mailing list archive at Nabble.com.