Opened 13 years ago

Closed 12 years ago

#866 closed defect (fixed)

[raster] Change the ST_MapAlgebra nodatavalueexpr text parameter to nodataval double precision

Reported by: pracine Owned by: Bborie Park
Priority: blocker Milestone: PostGIS 2.0.0
Component: raster Version: master
Keywords: Cc: dzwarg@…

Description

The original plan to support refering to neighbour pixel in Mapalgebra was to refer to them using their position relative to the pixel being compute. e.g.: "rast[-1,0] + 1" rast[-1,0] refering to the first pixel at the left of the pixel being computed. This prove to be hard to use when the desired neighbour area include most pixels of an area larger than the first neighbour.

The better alternative is to propose a variant to ST_MapAlgebra named ST_MapAlgebraNgb which would pass a vector of value (or a small raster) to a user defined summarizing function that would return the value to be assigned to the pixel.

The original ST_MapAlgebra nodatavalueexpr text parameter was intented to give a way to provide an alternative expression in case one pixel value refered by the relative neighbour syntax (rast[-1,0]) would be nodata.

Since this syntax will not be offered/implemented there is no more need for a nodatavalueexpr, a more simple nodatavaluereplacement value is sufficient.

Attachments (1)

rename-nodatavalueexpr.patch (4.7 KB ) - added by dzwarg 13 years ago.
Rename of "nodatavalueexpr" to "nodatavaluerepl".

Download all attachments as: .zip

Change History (9)

comment:1 by pracine, 13 years ago

Status: newassigned

comment:2 by dzwarg, 13 years ago

Cc: dzwarg@… added
Owner: changed from pracine to dzwarg
Status: assignednew

comment:3 by pracine, 13 years ago

Summary: [raster] Change the ST_MapAlgebra nodatavalueexpr text parameter for nadatavaluerepl[raster] Change the ST_MapAlgebra nodatavalueexpr text parameter for nodatavaluerepl

comment:4 by dzwarg, 13 years ago

Status: newassigned

Is this ticket intended to only change the name of the parameter from "nodatavalueexpr" to "nodatavaluerepl"?

Or does this ticket also imply that the evaluation of the "nodatavaluerepl" string will no longer occur, and that any text passed in as this parameter gets converted to the raster cell data type and stored as "newinitialvalue" in RASTER_mapAlgebra?

by dzwarg, 13 years ago

Rename of "nodatavalueexpr" to "nodatavaluerepl".

in reply to:  4 comment:5 by pracine, 13 years ago

Replying to dzwarg:

Is this ticket intended to only change the name of the parameter from "nodatavalueexpr" to "nodatavaluerepl"?

Or does this ticket also imply that the evaluation of the "nodatavaluerepl" string will no longer occur, and that any text passed in as this parameter gets converted to the raster cell data type and stored as "newinitialvalue" in RASTER_mapAlgebra?

This is not just a parameter name change. The expression passed should evaluate to a numeric value the same type of the resulting pixel type. I guess the best bet for the type of this parameter is double precision even if the requested resulting raster pixel type is int. Yes this value should be used to initialize the raster in order to avoid (skipping) computing values for nodata values.

I would change the script/plpgsql/st_mapalgebra.sql first.

Sorry for the late answer.

comment:6 by pracine, 13 years ago

More explanations:

-nodatavalueexpr would be an expression possibly containing "rast".

-nodatavaluerepl is not an expression, it is a constant replacement value of type double.

After analysis (done with David in Mtl) we concluded that it makes no sense to pass a nodata value expression (nodatavalueexpr) of "rast" since in this case "rast" is always "nodata" and hence a constant. So it is better, simpler and makes more sense to just pass a constant "nodata value replacement" (nodatavaluerepl).

Everything would work with nodatavalueexpr. But it makes more sense to pass a constant. It is also a bit faster as it does not have to be evaluated.

comment:7 by Bborie Park, 12 years ago

Owner: changed from dzwarg to Bborie Park
Status: assignednew
Summary: [raster] Change the ST_MapAlgebra nodatavalueexpr text parameter for nodatavaluerepl[raster] Change the ST_MapAlgebra nodatavalueexpr text parameter to nodataval double precision

comment:8 by Bborie Park, 12 years ago

Resolution: fixed
Status: newclosed

Fixed in r8110.

Note: See TracTickets for help on using tickets.