La tua chiamata e' buona per visualizzare mappe su un browser, ma non e' una chiamata valida per un server wms.
Il fatto che il browser ti visualizza una mappa, fa' penare che il server che stai chimanado non sia impostato per funzionare come un server wms, ma come un server di altro tipo.
Tanto per chiarirci subito, non basta che un server rimandi mappe geografiche per dire che e' un server wms.
Per essere un server wms deve rispondere a una chiamata che abbia dei dei parametri ben precisi.
E non sono quelli che metti te.
[>http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/esercitazioni/mapfiles/Esempio_WMS.map&layer=wms_aanp_f33&mode=map](http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/esercitazioni/mapfiles/Esempio_WMS.map&layer=wms_aanp_f33&mode=map)
Questa non e' una chiamata WMS , il fatto che in certi strumenti essa funziona, come nel browser, e' solo perche'
essa comunque e' una chiamata che ritorna una mappa, che poi in effetti e' solo una immagine prodotta al volo.
Ma la similitudine finisce qui.
Ammesso che quello che stai invocando (la url) sia effettivamente un server wms (questo lo sai te.)
Il problema e' nei parametri, ovverosia tutto quello che vi e' dopo il carattere '?'
dopo ci devono essere solo parametri, i parametri di una chiamata wms, e sottolineo : di una chiamata wms, sono svariati tra essi
ci sono i seguenti:
BBOX, esempio BBOX=1554750.736259,4678325.520000,1771722.760000,4924791.900000
indica l'estensione geografica da restituire
WIDTH, esempio WIDTH=400
HEIGHT, esempio HEIGHT=300
indicano le dimensioni della mappa che si richiede al server wms.
Ovviamente questo parametro lo immetti se lo chiami dal browser, se lo chiami tramite un client GIS, ci pensera' il software a metterci questi due parametri.
SRS=EPSG:3003
indica il sistema di riferimento in cui deve essere prodotta la mappa.
Layers, ad esempio: Layers=_idreg,idprov,idcomuni
Questo lo usi anche te, ma ti prego di notare che nella tua chiamata manca la 's' finale e non e' una differenza da poco.
Il server wms vuole sapere quali layers usare e se gli invii un parametro che si chiama "Layer" semplicemente per lui non vuol dire niente.
Poi ci devi mettere un parametro che indica il tipo di chiamata che invii come versione
version=1.1.0
anche questo in certi casi viene messo in automatico dal client GIS.
Poi ci metti questo
service=WMS
obbligatorio per il server wms, tante' che molti clcient gis lo mettono in automatico.
e quindi lo devi mettere quando chiami dal browser, perche' non e' un client GIS, mentre puoi ignorarlo nei client gis perche' lo metteranno loro in automatico (almeno nei client gis fatti bene)
Poi altri parametri sono:
FORMAT=JPEG
che indica che vuoi una mappa in formato jpeg (potevi dargli anche PNG)
e il parametro
TRANSPARENT=TRUE
E infine
ci metti il fatidico
request=getmap
che dice al server wms che stai effettuando una richiesta di produzione di una mappa.
(altro caso di parametro obbligario che il client gis mette automaticamente, mentre nel browser lo devi mettere te)
venendo alla querystring che hai mandato te,
Te ci metti il parametro seguente:
map=/ms4w/apps/esercitazioni/mapfiles/Esempio_WMS.map
Non ho mai visto prima questo parametro nelle chiamate wms e quindi per me non lo e'.
Probabilmente si tratta di un parametro specifico di un certo tipo di server ma che probabilmente e' fuori standard.
Non trattandosi di un parametro standard non verra' interpretato e forse provoca l'errore.
Altro parametro "strano":
mode=map
anche questo per me non e' un parametro del WMS.
Invece dovresti metterci
request=getmap
infine l'ultimo parametro che metti:
layer=wms_aanp_f33
a parte l'essere sicuro che l'identificativo del layer sia effettivamente "wms_aanp_f33", questo devi esserlo te.
Senz'altro non devi mettere "layer" ma bensi' "layers"
Ciao,
–
Andrea Peri
. . . . . . . . .
qwerty àèìòù