Diversity filter

This tool performs a diversity filter on a raster image. Grid cells in the output image report the number of different values within neighbourhood surrounding each grid cell in the input image. The input image should have a categorical or Boolean data scale. Generally, a diversity filter run on an image with a continuous data scale will result in each cell being assigned the number of grid cells in the neighbourhood.

Neighbourhood size, or filter size, is determined by the user-defined x and y dimensions. These dimensions should be odd integer values (e.g. 3, 5, 7, 9, etc.) The user may also define the neighbourhood shape as either squared or rounded. A rounded neighbourhood approximates an ellipse; a rounded neighbourhood with equal x and y dimensions approximates a circle.

NoData values in the input image are ignored during filtering. When the neighbourhood around a grid cell extends beyond the edge of the grid, NoData values are assigned to these sites.

See Also:

Scripting:

The following is an example of a Python script that uses this tool:

wd = pluginHost.getWorkingDirectory()
inputFile = wd + "input.dep"
outputFile = wd + "output.dep"
xDim = "3"
yDim = "3"
rounded = "false"
reflectEdges = "true"
args = [inputFile, outputFile, xDim, yDim, rounded, reflectEdges]
pluginHost.runPlugin("FilterDiversity", args, False)

This is a Groovy script also using the tool:

def wd = pluginHost.getWorkingDirectory()
def inputFile = wd + "input.dep"
def outputFile = wd + "output.dep"
def xDim = "7"
def yDim = "7"
def rounded = "true"
def reflectEdges = "true"
String[] args = [inputFile, outputFile, xDim, yDim, rounded, reflectEdges]
pluginHost.runPlugin("FilterDiversity", args, false)

Credits: