Salve a tutti.
Sto cercando di visualizzare dati postgis attraverso mapserver con openlayer. Ho provato realizzando un server WFS ma ho avuto una serie di problemi. Sono passato allora ad un server WMS. L'overlay di un layer postgis su un base layer OSM è filata via abbastanza liscia. Ovviamente mi sono bloccato subito dopo sull'interrogazione del layer. Infatti il getfeatureinfo mi restituisce una serie di errori. Ho utilizzato una funzione che ho trovato in rete e che posto qui di seguito
Quando vado a cliccare su un elemento mi si apre la nuova finestra ma mi restituisce un errore
mapserv(): Web application error. Traditional BROWSE mode requires a TEMPLATE in the WEB section, but none was provided.
Se faccio una GetFeature request, questo è quello che ottengo
<?xml version='1.0' encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengis.net/wms/1.1.1/exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1">
<ServiceException code="LayerNotQueryable">
msWMSFeatureInfo(): WMS server error. Requested layer(s) are not queryable.
</ServiceException>
</ServiceExceptionReport>
Immagino quindi che ci sia qualcosa di sbagliato nel .map ma non riesco a capire cosa. Oltre a non aver evidentemente configurato un template web, ma come sarebbe questo template? Una oagina html qualsiasi? I proxy mi sembra di averlo settato (OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";). Dove sto sbagliando?
Salve a tutti.
Sto cercando di visualizzare dati postgis attraverso mapserver con openlayer. Ho provato realizzando un server WFS ma ho avuto una serie di problemi. Sono passato allora ad un server WMS. L'overlay di un layer postgis su un base layer OSM è filata via abbastanza liscia. Ovviamente mi sono bloccato subito dopo sull'interrogazione del layer. Infatti il getfeatureinfo mi restituisce una serie di errori. Ho utilizzato una funzione che ho trovato in rete e che posto qui di seguito
In effetti è uno stato uno dei miei primi tentativi ma probabilmente sbaglio qualcosa nel codice. All'inizio, dato che si trattava di un controllo, lo avevo brutalmente aggiunto con map.addcontrol. Poi:
il risultato è che non si vede più niente, osm compreso.
Per quanto riguarda il web template ho letto la documentazione di mapserver ma quando dice che si deve inserire per ogni layer il tag TEMPLATE non specifica come questo va fatto (il DUMP va messo TRUE e infatti è ok). Allora ho fatto una paginetta html e ho provato a mettergli quella (tipo TEMPLATE "template.html") ma il risultato è che mi dice (con lo script precedente):
Content-type: text/html isValidTemplate(): Web application error. Missing magic string, /var/www/template.html doesn't look like a MapServer template.
Il 04/11/2010 16:38, Luca Casagrande ha scritto:
Il 04/11/2010 16:19, Francesco Geri ha scritto:
Salve a tutti.
Sto cercando di visualizzare dati postgis attraverso mapserver con openlayer. Ho provato realizzando un server WFS ma ho avuto una serie di problemi. Sono passato allora ad un server WMS. L'overlay di un layer postgis su un base layer OSM è filata via abbastanza liscia. Ovviamente mi sono bloccato subito dopo sull'interrogazione del layer. Infatti il getfeatureinfo mi restituisce una serie di errori. Ho utilizzato una funzione che ho trovato in rete e che posto qui di seguito
Quando vado a cliccare su un elemento mi si apre la nuova finestra ma mi restituisce un errore
mapserv(): Web application error. Traditional BROWSE mode requires a TEMPLATE in the WEB section, but none was provided.
Se faccio una GetFeature request, questo è quello che ottengo
<?xml version='1.0' encoding="UTF-8" standalone="no" ?>
<!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengis.net/wms/1.1.1/exception_1_1_1.dtd">
<ServiceExceptionReport version="1.1.1">
<ServiceException code="LayerNotQueryable">
msWMSFeatureInfo(): WMS server error. Requested layer(s) are not queryable.
</ServiceException>
</ServiceExceptionReport>
Ciao Francesco,
ti conviene usare OpenLayers.Control.WMSGetFeatureInfo per effettuare questo tipo di operazione
piuttosto che scrivere tutto a mano.
Luca
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
Per quanto riguarda il web template ho letto la documentazione di mapserver
ma quando dice che si deve inserire per ogni layer il tag TEMPLATE non
specifica come questo va fatto (il DUMP va messo TRUE e infatti è ok).
Allora ho fatto una paginetta html e ho provato a mettergli quella (tipo
TEMPLATE "template.html") ma il risultato è che mi dice (con lo script
precedente):
a quanto ricordo quello specifico template viene richiesto se usi come
mime/type per getfeatureinfo il tipo html, se specifichi text/plain
lui ti genera un file di testo standard, ignora il contenuto del tag e
funziona tutto.
in ogni caso basati sugli esempi che trovi qui per capire come
configurare correttamente mapserver come wms : http://ms-ogc-workshop.maptools.org/
In effetti è uno stato uno dei miei primi tentativi ma probabilmente sbaglio qualcosa nel codice. All'inizio, dato che si trattava di un controllo, lo avevo brutalmente aggiunto con map.addcontrol. Poi:
il risultato è che non si vede più niente, osm compreso.
Prova a definirlo così
info = new OpenLayers.Control.WMSGetFeatureInfo({
url: 'http://localhost/',
title: 'Identify features by clicking',
layers: [layer],
queryVisible: false,
infoFormat:'text/plain'
Ciao,
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il javascript sta facendo la differenza (in negativo). Per chè appena provo a mettere questo spezzone di codice
In effetti è uno stato uno dei miei primi tentativi ma probabilmente sbaglio qualcosa nel codice. All'inizio, dato che si trattava di un controllo, lo avevo brutalmente aggiunto con map.addcontrol. Poi:
il risultato è che non si vede più niente, osm compreso.
Prova a definirlo così
info = new OpenLayers.Control.WMSGetFeatureInfo({
url: 'http://localhost/',
title: 'Identify features by clicking',
layers: [layer],
queryVisible: false,
infoFormat:'text/plain'
Ciao
Luca
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il
javascript sta facendo la differenza (in negativo). Per chè appena provo a
il fatto che l'errore ti venga da mapserver (TEMPLATE null) significa
che comunque l'errore è lato server, e openlayers potrà aiutarti ben
poco.
Ti consiglio di preparare un url "finto" (ne avevi postato uno tu
all'inizio) e chiamalo dal browser, cercando i farlo funzionare (segui
gli esempi e la documentazione di mapserver alla lettera, è fatta
bene). Una volta sistemata la parte server, divertiti col javascript
Ciao
Luca
Il 05/11/2010 11:51, Francesco Geri ha scritto:
Ciao,
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il javascript sta facendo la differenza (in negativo). Per chè appena provo a mettere questo spezzone di codice
title: 'Identify features by clicking',
layers: [bioitaly_v],
queryVisible: 'false',
infoFormat:'text/plain'
})
Mi sparisce tutto?
Il 04/11/2010 19:47, Luca Casagrande ha scritto:
Il 04/11/2010 17:20, Francesco Geri ha scritto:
In effetti è uno stato uno dei miei primi tentativi ma probabilmente sbaglio qualcosa nel codice. All'inizio, dato che si trattava di un controllo, lo avevo brutalmente aggiunto con map.addcontrol. Poi:
il risultato è che non si vede più niente, osm compreso.
Prova a definirlo così
info = new OpenLayers.Control.WMSGetFeatureInfo({
url: 'http://localhost/',
title: 'Identify features by clicking',
layers: [layer],
queryVisible: false,
infoFormat:'text/plain'
C'è sicuramente un errore lato server. Proverò a seguire alla lettera i doc di mapserver e vediamo. Firebug.....sinceramente non so bene neanche dove guardare (io l'ho sempre usato solo per scopiazzare i fogli di stile ).
Il 05/11/2010 12:02, Luca Casagrande ha scritto:
iao,
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il javascript sta facendo la differenza (in negativo). Per chè appena provo a mettere questo spezzone di codic
Diego ha ragione, tuttavia devi essere sicuro di fare la richiesta in modo corretto.
Firebug è fondamentale per questo tipo di problemi..attiva console,net e ricarica la pagina..dovresti vedere l'errore in basso a destra. http://www.youtube.com/watch?v=2xxfvuZFHsM
Ciao
Luca
Il 05/11/2010 12:45, Francesco Geri ha scritto:
C'è sicuramente un errore lato server. Proverò a seguire alla lettera i doc di mapserver e vediamo. Firebug.....sinceramente non so bene neanche dove guardare (io l'ho sempre usato solo per scopiazzare i fogli di stile ).
Il 05/11/2010 12:02, Luca Casagrande ha scritto:
iao,
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il javascript sta facendo la differenza (in negativo). Per chè appena provo a mettere questo spezzone di codic
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
Ok grazie. Un errore risolto: non avevo messo il nome del layer tra apici (scusate!)
Adesso ne ho altri 2....
info.events.on("getfeatureinfo":showInfo)\n
1) missing ) after argument list wms.html (riga 54)
quindi sarebbe all'altezza di info.events.on("getfeatureinfo":showInfo)
2) init is not defined
Il 05/11/2010 12:50, Luca Casagrande ha scritto:
Diego ha ragione, tuttavia devi essere sicuro di fare la richiesta in modo corretto.
Firebug è fondamentale per questo tipo di problemi..attiva console,net e ricarica la pagina..dovresti vedere l'errore in basso a destra. http://www.youtube.com/watch?v=2xxfvuZFHsM
Ciao
Luca
Il 05/11/2010 12:45, Francesco Geri ha scritto:
C'è sicuramente un errore lato server. Proverò a seguire alla lettera i doc di mapserver e vediamo. Firebug.....sinceramente non so bene neanche dove guardare (io l'ho sempre usato solo per scopiazzare i fogli di stile ).
Il 05/11/2010 12:02, Luca Casagrande ha scritto:
iao,
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il javascript sta facendo la differenza (in negativo). Per chè appena provo a mettere questo spezzone di codic
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
Allora credo di aver risolto la questione client: firebug non mi da nessun errore. Mi sono ispirato all'esempio http://www.openlayers.org/dev/examples/getfeatureinfo-popup.html
nel quale la richiesta viene visualizzata in un popup.
Quello che ho capito è che si aggiunge
Come dicevo non ho nessun errore, il problema è che in realtà se clicco sugli elementi non succede niente, immagino perchè c'è sempre da risolvere il problema lato server perchè il layer non è queryable. Almeno credo.
Il 05/11/2010 12:50, Luca Casagrande ha scritto:
Diego ha ragione, tuttavia devi essere sicuro di fare la richiesta in modo corretto.
Firebug è fondamentale per questo tipo di problemi..attiva console,net e ricarica la pagina..dovresti vedere l'errore in basso a destra. http://www.youtube.com/watch?v=2xxfvuZFHsM
Ciao
Luca
Il 05/11/2010 12:45, Francesco Geri ha scritto:
C'è sicuramente un errore lato server. Proverò a seguire alla lettera i doc di mapserver e vediamo. Firebug.....sinceramente non so bene neanche dove guardare (io l'ho sempre usato solo per scopiazzare i fogli di stile ).
Il 05/11/2010 12:02, Luca Casagrande ha scritto:
iao,
sto cercando di seguire i vari consigli ma credo che la mia ignoranza con il javascript sta facendo la differenza (in negativo). Per chè appena provo a mettere questo spezzone di codic
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
Gfoss@lists.gfoss.it http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
474 iscritti al 18.9.2010
Allora credo di aver risolto la questione client: firebug non mi da nessun errore. Mi sono ispirato all'esempio http://www.openlayers.org/dev/examples/getfeatureinfo-popup.html
nel quale la richiesta viene visualizzata in un popup.
Quello che ho capito è che si aggiunge
Come dicevo non ho nessun errore, il problema è che in realtà se clicco sugli elementi non succede niente, immagino perchè c'è sempre da risolvere il problema lato server perchè il layer non è queryable. Almeno credo.
Bene..ora, sempre da firebug, apri la tab net e dovresti veder passare la chiamata getfeatureinfo.
Cliccaci con il destro ed aprila in una nuova tab.
in teoria dovresti vedere con firebug la richiesta che lancia il tuo
browser verso il server.
copia l'url e lancialo nel browser "as is", li non hai problemi di
proxy e/o altro e così puoi capire se è il server che non riceve, se
il server riceve ma non risponde, se il client non capisce la risposta
ecc ecc.
come regola generale, non mettere titti i pezzi insieme sperando che
funzioni tutto, ma fai un pezzettino per volta.