Raster Query ignores some classification methods.
The raster query stuff tries to apply classification to the raw raster values,
but does not take in account query expressions on [red], [green] and [blue], only
those that are based on the raw value.
For an example look at the result of msautotest/mspython/rqtest - test
rqtest_13. Currently it finds no results to the point query on the grid
line because the grid line is classified in msautotest/gdal/classtest1.map
as follows:
CLASS
NAME "Grid"
EXPRESSION ([red] == 96 and [green] == 32 and [blue] == 32)
COLOR 255 0 0
END
As opposed to the text for instance, which does work fine:
CLASS
NAME "Text"
EXPRESSION ([pixel] == 0)
COLOR -255 -255 -255
END
The problem is that the classification handling code in maprasterquery.c
is overly simplistic:
/* -------------------------------------------------------------------- */
/* Handle classification. */
/* -------------------------------------------------------------------- */
if( rlinfo->qc_class != NULL )
{
int p_class = msGetClass_Float(layer, values[0] );
if( p_class == -1 )
nodata = TRUE;
else
{
rlinfo->qc_class[rlinfo->query_results] = p_class;
red = layer->class[p_class].styles[0].color.red;
green = layer->class[p_class].styles[0].color.green;
blue = layer->class[p_class].styles[0].color.blue;
}
}
However the solution will be pretty involved I think, so I am just submitting
this bug report for now to keep track of the issue.
In particular, I am not keen on trying to fix this for the 4.4 release.
Change History
(3)
Resolution: |
→ fixed
|
Status: |
new → closed
|
Summary: |
Raster Query ignores some classification methods. → Raster Query ignores some classification methods.
|
Resolution: |
fixed
|
Status: |
closed → reopened
|
Description: |
modified (diff)
|
Keywords: |
raster query classified added
|
Resolution: |
→ fixed
|
Status: |
reopened → closed
|