package mil.nga.giat.geowave.core.geotime.store.dimension;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import mil.nga.giat.geowave.core.geotime.store.dimension.GeometryWrapper;
import mil.nga.giat.geowave.core.geotime.store.dimension.LatitudeField;
import mil.nga.giat.geowave.core.geotime.store.dimension.LongitudeField;
import mil.nga.giat.geowave.core.index.sfc.data.NumericData;
import mil.nga.giat.geowave.core.index.sfc.data.NumericRange;
import mil.nga.giat.geowave.core.store.dimension.NumericDimensionField;
import org.junit.Test;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.PrecisionModel;
public class GeometryWrapperTest
{
private final GeometryFactory factory = new GeometryFactory(
new PrecisionModel(
PrecisionModel.FLOATING));
@Test
public void testLatitutde() {
NumericDimensionField[] fields = new NumericDimensionField[] {
new LatitudeField()
};
Geometry geo = factory.createLineString(new Coordinate[] {
new Coordinate(
-99.22,
33.75000000000001), // notice that
// this gets
// tiled as
// 33.75
new Coordinate(
-99.15,
33.75000000000001)
// notice that this gets tiled as 33.75
});
GeometryWrapper wrapper = new GeometryWrapper(
geo);
NumericRange rangeData = new NumericRange(
33.7442334433,
33.75 + (1E-10d));
assertTrue(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
rangeData = new NumericRange(
33.7442334433,
33.75 - (1E-10d));
assertFalse(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
rangeData = new NumericRange(
33.75 - (1E-10d),
33.751);
assertTrue(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
rangeData = new NumericRange(
33.75 + (1E-10d),
33.751);
assertFalse(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
}
@Test
public void testLongitude() {
NumericDimensionField[] fields = new NumericDimensionField[] {
new LongitudeField()
};
Geometry geo = factory.createLineString(new Coordinate[] {
new Coordinate(
-99.22,
33.75000000000001), // notice that
// this gets
// tiled as
// 33.75
new Coordinate(
-99.15,
33.75000000000001)
// notice that this gets tiled as 33.75
});
GeometryWrapper wrapper = new GeometryWrapper(
geo);
NumericRange rangeData = new NumericRange(
-99.15 - (1E-10d),
-99.140348473);
assertTrue(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
rangeData = new NumericRange(
-99.15 + (1E-10d),
-99.140348473);
assertFalse(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
rangeData = new NumericRange(
-99.23,
-99.22 + (1E-9d));
assertTrue(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
rangeData = new NumericRange(
-99.23,
-99.22 - (1E-10d));
assertFalse(wrapper.overlaps(
fields,
new NumericData[] {
rangeData
}));
}
}