[Gfoss] Raster query in Mapserver 4 Windows

Sto lavorando con MS4W (versione 2.2.3) via CGI e sto sperimentando problemi nelle query di alcuni formati raster.
Nel dettaglio e molto semplicemente eseguo query senza problemi su un Landsat in formato .IMG mentre nel caso di un .BIL (che comunque viene ben mostrato e classificato in modalità browse) ricevo il seguente errore:

msDrawShape(): General error message. Unknown layer type.

Le query per i due layer sono definite allo stesso identico modo nel mapfile, attraverso definizione di TOLERANCE, TOLERANCEUNITS e TEMPLATE (query, header, footer).
Altri raster .BIL mi danno identici errori.
E’ un problema noto legato al formato?
Essendo pressoché novello utente di Mapserver, dove devo intervenire?

Thanks,
M

Recupero una mia precedente richiesta di aiuto, che non aveva avuto risposta anche perché ho appurato che in realtà il problema era diverso. La discriminante errore/non errore infatti non è il formato raster ma il fatto di eseguire query su layer raster non classificati o classificati. In questo secondo caso, indipendentemente dal formato raster, una query mi restituisce l’errore che vi ho già indicato.

msDrawShape(): General error message. Unknown layer type.

Remmando completamente le definizioni delle CLASS la query viene eseguita correttamente, ovviamente senza fornire l’informazione [class].
Posto l’estratto di mapfile riferito al layer e ad una sua classe. Se qualcuno mi illuminasse sulle query su raster classificati … anche spulciando a fondo sul sito di Mapserver e negli archivi di varie liste non ne sono davvero venuto a capo. Ribadisco che come utente Mapserver sono davvero nella prima infanzia.

LAYER # Classificazione vegetazione 2000

NAME class_2000

DATA “2000/final_after_merging.bil”

STATUS OFF

TYPE RASTER

OFFSITE 0 0 0

GROUP “Uso e copertura del suolo”

TOLERANCE 0

TOLERANCEUNITS pixels

PROJECTION

“init=epsg:4326”

END

METADATA

TITOLO “Classificazione vegetazione da satellite - Anno 2000”

ORDINE “0044”

END

HEADER “class2000_header.html”

FOOTER “class2000_footer.html”

CLASSITEM “[pixel]”

CLASS

NAME “Latifoglie (pure o dominanti)”

EXPRESSION ([pixel] = 2)

STYLE

COLOR 0 255 0

END

TEMPLATE “class_query.html”

END

END # Fine raster classificazione vegetazione 2000

Il 16/04/07, Marco Cerruti <cerruti.marco@gmail.com> ha scritto:

Sto lavorando con MS4W (versione 2.2.3) via CGI e sto sperimentando problemi nelle query di alcuni formati raster.
Nel dettaglio e molto semplicemente eseguo query senza problemi su un Landsat in formato .IMG mentre nel caso di un .BIL (che comunque viene ben mostrato e classificato in modalità browse) ricevo il seguente errore:

msDrawShape(): General error message. Unknown layer type.

Le query per i due layer sono definite allo stesso identico modo nel mapfile, attraverso definizione di TOLERANCE, TOLERANCEUNITS e TEMPLATE (query, header, footer).
Altri raster .BIL mi danno identici errori.
E’ un problema noto legato al formato?
Essendo pressoché novello utente di Mapserver, dove devo intervenire?

Thanks,

M

Nuova ripresa della mia mail … a questo punto corro il rischio che Lorenzo inizi a parlare anche nel mio caso di monologhi deliranti, come già per Maurizio Napolitano :DDD

Il mio problema (impossibilità di eseguire query su raster classificati, ma commentando la classificazione le query sono eseguite senza problemi) è finito direttamente nelle mani di Frank Warmerdam, obiettivamente preoccupato che si tratti di un bug:

“I think this is a bug in mapserver. That I did not touch all the parts
of the code I should have when implementing raster query support”

Anche attraverso il Trac di OsGEO ho fatto avere a Frank una minidemo del mio progetto su cui potesse sperimentare l’errore. Ecco la sua quasi immediata risposta, che conferma il problema, propone degli interventi (trattare il raster come point layer solo in caso di query!) pur non essendone convinto, si ripropone di rimettere il tutto in lista dev, e chiede di “convincerlo” dell’importanza della cosa.

"I could potentially modify msDrawShape() to treat raster layers as point
layers since the features returned by a query on the raster layer will be
points. But I’m really not too comfortable with this. Really, I’m not
sure that it makes a lot of sense to drawing a map of raster query
results. And if we decide this is worth doing, it is problematic to have a
raster layer treated as a raster for some purposes, and as a point layer
for others. In particular, how do we provide styling info that will be
appropriate in these fairly different circumstances.

I’m tempted to modify msDrawQueryLayer() to do nothing raster layers, but
to issue a debug message indicating that the layer is being skipped since
drawing raster query results is considered an unclear request. I will
post to mapserver-dev to see if any of the other developers have an
opinion.

If you see a very valuable use case for plotting raster query results,
perhaps you could explain it here."

Vi giro tutto questo innanzitutto per informarvi di come si è evoluta la cosa e soprattutto per chiedervi:

  • non c’è veramente nessun altro che ha sperimentato problemi con query su raster classificati in mapserver?
  • quali possono essere dei “valuable use fot plotting raster query results” secondo voi: io, come ricordato, sono nuovissimo di mapserver ma mi è venuto naturale includere nel mio progetto raster classificati (due casi banali: un DEM classificato per fasce di quota; un raster derivante da una classificazione supervised) e dunque avere la necessità di eseguire anche se essi la mia nquery.
  • voi come operereste per un workaround del problema? potrei sicuramente passare dai raster a dei vettoriali e smettere di avere problemi con le query però, come diceva la nonna, che “stufìda”!

M

Il 19/04/07, Marco Cerruti <cerruti.marco@gmail.com > ha scritto:

Recupero una mia precedente richiesta di aiuto, che non aveva avuto risposta anche perché ho appurato che in realtà il problema era diverso. La discriminante errore/non errore infatti non è il formato raster ma il fatto di eseguire query su layer raster non classificati o classificati. In questo secondo caso, indipendentemente dal formato raster, una query mi restituisce l’errore che vi ho già indicato.

msDrawShape(): General error message. Unknown layer type.

Remmando completamente le definizioni delle CLASS la query viene eseguita correttamente, ovviamente senza fornire l’informazione [class].
Posto l’estratto di mapfile riferito al layer e ad una sua classe. Se qualcuno mi illuminasse sulle query su raster classificati … anche spulciando a fondo sul sito di Mapserver e negli archivi di varie liste non ne sono davvero venuto a capo. Ribadisco che come utente Mapserver sono davvero nella prima infanzia.

LAYER # Classificazione vegetazione 2000

NAME class_2000

DATA “2000/final_after_merging.bil”

STATUS OFF

TYPE RASTER

OFFSITE 0 0 0

GROUP “Uso e copertura del suolo”

TOLERANCE 0

TOLERANCEUNITS pixels

PROJECTION

“init=epsg:4326”

END

METADATA

TITOLO “Classificazione vegetazione da satellite - Anno 2000”

ORDINE “0044”

END

HEADER “class2000_header.html”

FOOTER “class2000_footer.html”

CLASSITEM “[pixel]”

CLASS

NAME “Latifoglie (pure o dominanti)”

EXPRESSION ([pixel] = 2)

STYLE

COLOR 0 255 0

END

TEMPLATE “class_query.html”

END

END # Fine raster classificazione vegetazione 2000

Il 16/04/07, Marco Cerruti <cerruti.marco@gmail.com > ha scritto:

Sto lavorando con MS4W (versione 2.2.3) via CGI e sto sperimentando problemi nelle query di alcuni formati raster.
Nel dettaglio e molto semplicemente eseguo query senza problemi su un Landsat in formato .IMG mentre nel caso di un .BIL (che comunque viene ben mostrato e classificato in modalità browse) ricevo il seguente errore:

msDrawShape(): General error message. Unknown layer type.

Le query per i due layer sono definite allo stesso identico modo nel mapfile, attraverso definizione di TOLERANCE, TOLERANCEUNITS e TEMPLATE (query, header, footer).
Altri raster .BIL mi danno identici errori.
E’ un problema noto legato al formato?
Essendo pressoché novello utente di Mapserver, dove devo intervenire?

Thanks,

M

Nuova ripresa della mia mail ... a questo punto corro il rischio che Lorenzo
inizi a parlare anche nel mio caso di monologhi deliranti, come già per
Maurizio Napolitano :DDD

sono affezionato ai monologhi di Napo, sono sempre stimolanti.
:slight_smile:

- non c'è veramente nessun altro che ha sperimentato problemi con query su
raster classificati in mapserver?

io ho usato largamente query su raster con servers linux e mac e non ho mai avuto problemi.
stamattina sono più addormentato del solito e forse non ho capito a cosa ti riferisci, ma se i raster sono classificati o meno non dovrebbe essere un problema per quanto riguarda le query.
Il valore che il raster ritorna è sempre quello del pixel, o sbaglio?

- quali possono essere dei "valuable use fot plotting raster query results"
secondo voi: io, come ricordato, sono nuovissimo di mapserver ma mi è venuto
naturale includere nel mio progetto raster classificati (due casi banali: un
DEM classificato per fasce di quota; un raster derivante da una
classificazione supervised) e dunque avere la necessità di eseguire anche se
essi la mia nquery.
- voi come operereste per un workaround del problema? potrei sicuramente
passare dai raster a dei vettoriali e smettere di avere problemi con le
query però, come diceva la nonna, che "stufìda"!

io lascerei stare winzoz, definitivamente
:wink:

  • non c’è veramente nessun altro che ha sperimentato problemi con query su
    raster classificati in mapserver?

io ho usato largamente query su raster con servers linux e mac e non ho
mai avuto problemi.
stamattina sono più addormentato del solito e forse non ho capito a cosa
ti riferisci, ma se i raster sono classificati o meno non dovrebbe
essere un problema per quanto riguarda le query.
Il valore che il raster ritorna è sempre quello del pixel, o sbaglio?

Una query sullo stesso raster non classificato ritorna correttamente il valore del pixel. La classificazione, pur settando correttamente nel mapfile i query-templates sia del layer e che delle classi, porta a quell’errore che proprio Warmerdam ha verificato esistere … almeno per MS4W … e dunque forse la conclusione finale è proprio la tua …

M