package com.esri;
import org.apache.hadoop.conf.Configuration;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
*/
public class SearchAverage extends SearchAbstract
{
private List<Feature> m_featureList;
protected float m_buffer;
@Override
public void setup(
final Configuration configuration,
final List<ColumnInterface> columnList) throws IOException
{
m_buffer = configuration.getFloat(GeoEnrichmentJob.KEY_BUFFER, 0.5F);
m_featureList = new ArrayList<Feature>();
m_featureList.add(createFeature(1, 1, 1));
m_featureList.add(createFeature(-1, 1, 1));
m_featureList.add(createFeature(1, -1, 1));
m_featureList.add(createFeature(-1, -1, 1));
}
private Feature createFeature(
final double lon,
final double lat,
final double value)
{
final Feature feature = new Feature();
feature.lon = lon;
feature.lat = lat;
feature.val = value;
return feature;
}
@Override
public boolean search(
final double lon,
final double lat,
final List<ColumnInterface> columnList) throws IOException
{
resetColumns(columnList);
final double lonmin = lon - m_buffer;
final double lonmax = lon + m_buffer;
final double latmin = lat - m_buffer;
final double latmax = lat + m_buffer;
for (final Feature feature : m_featureList)
{
if (feature.lon < lonmin)
{
continue;
}
if (feature.lon > lonmax)
{
continue;
}
if (feature.lat < latmin)
{
continue;
}
if (feature.lat > latmax)
{
continue;
}
final double weight = calcWeight(feature, lon, lat);
if (weight > 0.0)
{
m_found = true;
for (final ColumnInterface column : columnList)
{
column.addWeight(weight * feature.val);
}
}
}
return m_found;
}
protected double calcWeight(
final Feature feature,
final double lon,
final double lat)
{
return 1.0;
}
}