Opened 16 years ago

Closed 14 years ago

#2603 closed defect (worksforme)

Too many responses with raster queries

Reported by: mdoyle Owned by: warmerdam
Priority: normal Milestone:
Component: WMS Server Version: svn-trunk (development)
Severity: normal Keywords: raster query getfeatureinfo
Cc:

Description

While testing ticket #2586 we discovered that a GetFeatureInfo query on raster data layers returns too many features per layer, regardless of the FEATURE_COUNT attribute. This is a flaw with the raster query mechanism.

Email context:

To be honest I was surprised to get 15 responses too. Actually, on review of the ticket, I see it was 16 (numbered 0 through 15), and this was with FEATURE_COUNT=2.

Tracing through the code in the debugger, I have discovered that FEATURE_COUNT is getting passed into the generic msQueryByPoint() function, but not on to the msRasterQueryByPoint(). Furthermore, the msRasterQueryByPoint() is recieving a buffer distance of "0" which it interpretes as "not set", and it uses the layer tolerances defined for the layer. So this is why we are getting a 4x4 region of pixel values.

These are both (in my opinion) bugs with the raster query mechanism.
I would encourage you to file a distinct bug on the "too many responses" problem with raster queries and I'll look into it too.

MapFile, Raster Data and Projections

Query to reproduce error:

mapserv QUERY_STRING='map=latest.map&SERVICE=wms&VERSION=1.1.1&REQUEST=getfeatureinfo&LAYERS=rain_ann,rain_jan&QUERY_LAYERS=rain_ann,rain_jan&X=200&Y=150&INFO_FORMAT=text/plain&SRS=EPSG:4283&BBOX=144,-43,149,-40&FORMAT=image/png&WIDTH=400&HEIGHT=300&STYLES&FEATURE_COUNT=2'

Example output:

Content-type: text/plain

GetFeatureInfo results:

Layer 'rain_ann'
  Feature 0: 
    x = '146.4625'
    y = '-41.4625'
    value_0 = '1116'
    value_list = '1116'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 1: 
    x = '146.4875'
    y = '-41.4625'
    value_0 = '1078'
    value_list = '1078'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 2: 
    x = '146.5125'
    y = '-41.4625'
    value_0 = '1077'
    value_list = '1077'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 3: 
    x = '146.5375'
    y = '-41.4625'
    value_0 = '1053'
    value_list = '1053'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 4: 
    x = '146.4625'
    y = '-41.4875'
    value_0 = '1115'
    value_list = '1115'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 5: 
    x = '146.4875'
    y = '-41.4875'
    value_0 = '1084'
    value_list = '1084'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 6: 
    x = '146.5125'
    y = '-41.4875'
    value_0 = '1072'
    value_list = '1072'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 7: 
    x = '146.5375'
    y = '-41.4875'
    value_0 = '1059'
    value_list = '1059'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 8: 
    x = '146.4625'
    y = '-41.5125'
    value_0 = '1113'
    value_list = '1113'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 9: 
    x = '146.4875'
    y = '-41.5125'
    value_0 = '1089'
    value_list = '1089'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 10: 
    x = '146.5125'
    y = '-41.5125'
    value_0 = '1069'
    value_list = '1069'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 11: 
    x = '146.5375'
    y = '-41.5125'
    value_0 = '1076'
    value_list = '1076'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 12: 
    x = '146.4625'
    y = '-41.5375'
    value_0 = '1126'
    value_list = '1126'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 13: 
    x = '146.4875'
    y = '-41.5375'
    value_0 = '1103'
    value_list = '1103'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 14: 
    x = '146.5125'
    y = '-41.5375'
    value_0 = '1075'
    value_list = '1075'
    class = '1000-1200 mm'
    red = '142'
     green = '206'
    blue = '165'
  Feature 15: 
    x = '146.5375'
    y = '-41.5375'
    value_0 = '1084'
    value_list = '1084'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'

Layer 'rain_jan'
  Feature 0: 
    x = '146.4625'
    y = '-41.4625'
    value_0 = '50'
    value_list = '50'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 1: 
    x = '146.4875'
    y = '-41.4625'
    value_0 = '49'
    value_list = '49'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 2: 
    x = '146.5125'
    y = '-41.4625'
    value_0 = '49'
    value_list = '49'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 3: 
    x = '146.5375'
    y = '-41.4625'
    value_0 = '48'
    value_list = '48'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 4: 
    x = '146.4625'
    y = '-41.4875'
    value_0 = '51'
    value_list = '51'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'
  Feature 5: 
    x = '146.4875'
    y = '-41.4875'
    value_0 = '50'
    value_list = '50'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 6: 
    x = '146.5125'
    y = '-41.4875'
    value_0 = '49'
    value_list = '49'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 7: 
    x = '146.5375'
    y = '-41.4875'
    value_0 = '49'
    value_list = '49'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 8: 
    x = '146.4625'
    y = '-41.5125'
    value_0 = '52'
    value_list = '52'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'
  Feature 9: 
    x = '146.4875'
    y = '-41.5125'
    value_0 = '51'
    value_list = '51'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'
  Feature 10: 
    x = '146.5125'
    y = '-41.5125'
    value_0 = '50'
    value_list = '50'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 11: 
    x = '146.5375'
    y = '-41.5125'
    value_0 = '50'
    value_list = '50'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 12: 
    x = '146.4625'
    y = '-41.5375'
    value_0 = '53'
    value_list = '53'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'
  Feature 13: 
    x = '146.4875'
    y = '-41.5375'
    value_0 = '52'
    value_list = '52'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'
  Feature 14: 
    x = '146.5125'
    y = '-41.5375'
    value_0 = '51'
    value_list = '51'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'
  Feature 15: 
    x = '146.5375'
    y = '-41.5375'
    value_0 = '51'
    value_list = '51'
    class = '50-100 mm'
    red = '230'
    green = '236'
    blue = '164'

Attachments (1)

bug2603.zip (49.4 KB ) - added by warmerdam 14 years ago.
data to test the issue.

Download all attachments as: .zip

Change History (3)

comment:1 by mdoyle, 16 years ago

Component: WMS ClientWMS Server

comment:2 by warmerdam, 14 years ago

Resolution: worksforme
Status: newclosed

This appears to have been corrected already. I tested with trunk and I assume it was already fixed for 5.6.x. I get:

warmerda@gdal64[263]% mapserv QUERY_STRING='map=latest.map&SERVICE=wms&VERSION=1
.1.1&REQUEST=getfeatureinfo&LAYERS=rain_ann,rain_jan&QUERY_LAYERS=rain_ann,rain_
jan&X=200&Y=150&INFO_FORMAT=text/plain&SRS=EPSG:4283&BBOX=144,-43,149,-40&FORMAT
=image/png&WIDTH=400&HEIGHT=300&STYLES&FEATURE_COUNT=2' 
Content-type: text/plain

GetFeatureInfo results:

Layer 'rain_ann'
  Feature 0: 
    x = '199'
    y = '151.25'
    value_0 = '1084'
    value_list = '1084'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'
  Feature 1: 
    x = '201'
    y = '151.25'
    value_0 = '1072'
    value_list = '1072'
    class = '1000-1200 mm'
    red = '142'
    green = '206'
    blue = '165'

Layer 'rain_jan'
  Feature 0: 
    x = '199'
    y = '151.25'
    value_0 = '50'
    value_list = '50'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'
  Feature 1: 
    x = '201'
    y = '151.25'
    value_0 = '49'
    value_list = '49'
    class = '25-50 mm'
    red = '248'
    green = '245'
    blue = '174'

attaching the slightly modified data.

by warmerdam, 14 years ago

Attachment: bug2603.zip added

data to test the issue.

Note: See TracTickets for help on using tickets.