Opened 11 years ago

Last modified 10 years ago

#376 closed defect

Bad (and time-varying) WCPS operations results with multi-band coverages — at Initial Version

Reported by: Piero Campalani Owned by: abeccati
Priority: blocker Milestone: 9.0
Component: petascope Version: 8.4
Keywords: wcps multiband operation Cc: j.oosthoek@…, uagha
Complexity: Hard

Description

Petascope seems to provide wrong (and different at every request) results to operations applied on multiband coverages, whether the operation is applied on a single band (it seems to return {0} in any case) or not (weird numbers are returned).

Simple examples on the rgb test coverage:

  1. AVG on 1 RGB cell (should return the cell itself?):
    for m in (rgb) return encode(
        trim(m,
            {x:"CRS:1"(200:200),y:"CRS:1"(200:200)}),
        "csv") 
    
    ==> {"242 27 103"}
    
    for m in (rgb) return encode(
        avg(
            trim(m,
                {x:"CRS:1"(200:200),y:"CRS:1"(200:200)})
        ), "csv") 
    
    ==> {"0 8.70018e-313 7.19645e-262"}
    
  1. AVG on 1 RGB cell, only the RED band (should return the single value itself):
    for m in (rgb) return encode(
        trim(m,
            {x:"CRS:1"(200:200),y:"CRS:1"(200:200)}),
        "csv") 
    
    ==> {242}
    
    for m in (rgb) return encode(
        avg(
            trim(m,
                {x:"CRS:1"(200:200),y:"CRS:1"(200:200)})
        ), "csv") 
    
    ==> {0}
    
  1. ADD over a multiple bands:
    for m in (rgb) return encode(
        trim(m,
            {x:"CRS:1"(200:201),y:"CRS:1"(200:201)}),
        "csv") 
    
    ==> {"242 27 103","242 27 103"}
    
    for m in (rgb) return encode(
        add(
            (float)trim(m,
                {x:"CRS:1"(200:200),y:"CRS:1"(200:201)})
        ), "csv") 
    
    ==> {"7.26573e-262 3.61544e-313 8.49162e-314"}
    ==> {"484 7563062 16"} without (float) cast
    ==> {"484 7563062 0"}  without (float) cast
    
  1. ADD over a single band:
    for m in (rgb) return encode(
        trim(m.red,
            {x:"CRS:1"(200:201),y:"CRS:1"(200:201)}),
        "csv") 
    
    ==> {242,242}
    
    for m in (rgb) return encode(
        add(
            (float)trim(m.red,
                {x:"CRS:1"(200:200),y:"CRS:1"(200:201)})
        ), "csv") 
    
    ==> {8.10648e+16}
    

. Multiplication of multi-band results (but maybe this is not implemented at all):

for m in (rgb) return encode(
    (float)trim(m,{x:"CRS:1"(200:200),y:"CRS:1"(200:200)}) *
    (float)trim(m,{x:"CRS:1"(200:200),y:"CRS:1"(200:200)}), "csv") 

==> Error: Could not evaluate rasdaman query: 
'select csv((float)(((m[200:200,200:200])*((float)(m[200:200,200:200]))))) from rgb AS m'
Cause: Error evaluating rasdaman query: 'select csv((float)(((m[200:200,200:200])*((float)(m[200:200,200:200]))))) from rgb AS m

Change History (0)

Note: See TracTickets for help on using tickets.