package ika.geo.grid;
import ika.geo.GeoGrid;
/**
* Changes all cells with a certain value to void.
*/
public class GridInvalidateOperator implements GridOperator{
private float v;
public GridInvalidateOperator() {
}
public GridInvalidateOperator(float v) {
this.v = v;
}
public String getName() {
return "Invalidate";
}
public GeoGrid operate(GeoGrid geoGrid) {
if (geoGrid == null) {
throw new IllegalArgumentException();
}
final int nrows = geoGrid.getRows();
final int ncols = geoGrid.getCols();
GeoGrid newGrid = new GeoGrid(ncols, nrows, geoGrid.getCellSize());
newGrid.setWest(geoGrid.getWest());
newGrid.setNorth(geoGrid.getNorth());
newGrid.setName(geoGrid.getName());
float[][] srcGrid = geoGrid.getGrid();
float[][] dstGrid = newGrid.getGrid();
for (int row = 0; row < nrows; ++row) {
float[] srcRow = srcGrid[row];
float[] dstRow = dstGrid[row];
for (int col = 0; col < ncols; ++col) {
dstRow[col] = (srcRow[col] == v) ? Float.NaN : srcRow[col];
}
}
return newGrid;
}
}