*/
public class JavaFilterByLatitudeAndLongitude extends JavaFilter {
@Override
public void filterData(HashMap<String, Object> parameters) {
newDataFrame = new DataFrameFromCSV();
DataFrameFromCSV oldDataFrame = (DataFrameFromCSV) Controller.getInstance().getDataFrame();
newDataFrame.setVariableNames(oldDataFrame.getVariableNames());
Object[][] matrixOld = oldDataFrame.getMatrix();
int ewColumn = -1;
int latColumn = -1;
int longColumn = -1;
int nsColumn = -1;
for (int i = 0; i < oldDataFrame.getVariableNames().length; i++) {
if (oldDataFrame.getVariableNames()[i].equalsIgnoreCase("long")) {
longColumn = i;
}
if (oldDataFrame.getVariableNames()[i].contains("EW")) {
ewColumn = i;
}
if (oldDataFrame.getVariableNames()[i].contains("lat")) {
latColumn = i;
}
if (oldDataFrame.getVariableNames()[i].contains("NS")) {
nsColumn = i;
}
}
double longLow = (double) parameters.get("longLow");
double longUp = (double) parameters.get("longUp");
String ew = (String) parameters.get("ew");
double latLow = (double) parameters.get("latLow");
double latUp = (double) parameters.get("latUp");
String ns = (String) parameters.get("ns");
LinkedList<Object[]> help = new LinkedList<>();
int numberOfRows = 0;
for (int i = 0; i < matrixOld.length; i++) {
double longOld = Double.parseDouble((String) matrixOld[i][longColumn]);
String ewOld = (String) matrixOld[i][ewColumn];
double latOld = Double.parseDouble((String) matrixOld[i][latColumn]);
String nsOld = (String) matrixOld[i][nsColumn];
if (ewOld.equalsIgnoreCase(ew) && nsOld.equalsIgnoreCase(ns) && longOld >= longLow
&& longOld <= longUp && latOld >= latLow && latOld <= latUp) {
help.add(matrixOld[i]);
numberOfRows++;
}
}
Object[][] matrixNew = new String[numberOfRows][oldDataFrame.getVariableNames().length];
for (int i = 0; i < help.size(); i++) {
matrixNew[i] = help.get(i);
}