use of com.revolsys.geometry.model.BoundingBox in project com.revolsys.open by revolsys.
the class BoundingBoxTest method testMultiPoint.
@Test
public void testMultiPoint() {
for (final GeometryFactory geometryFactory : GEOMETRY_FACTORIES) {
final Punctual empty = geometryFactory.punctual();
final BoundingBox boundingBoxEmpty = empty.getBoundingBox();
assertBoundingBox(empty, boundingBoxEmpty, geometryFactory, true, 2, NULL_BOUNDS);
final Punctual geometry1 = geometryFactory.punctual(2, 3.0, 4.0, 1.0, 2.0);
final BoundingBox boundingBox1 = geometry1.getBoundingBox();
assertBoundingBox(geometry1, boundingBox1, geometryFactory, false, 2, 1.0, 2.0, 3.0, 4.0);
}
}
use of com.revolsys.geometry.model.BoundingBox in project com.revolsys.open by revolsys.
the class BoundingBoxTest method testConstructorCoordinatesArray.
@Test
public void testConstructorCoordinatesArray() {
final BoundingBox emptyList = BoundingBoxDoubleXY.newBoundingBox(new Point[0]);
assertBoundingBox(null, emptyList, GeometryFactory.DEFAULT_3D, true, 2, NULL_BOUNDS);
// Different number of axis and values
for (int axisCount = 2; axisCount < 6; axisCount++) {
for (int valueCount = 1; valueCount < 10; valueCount++) {
Point[] points = new Point[valueCount];
final double[] bounds = RectangleUtil.newBounds(axisCount);
for (int i = 0; i < valueCount; i++) {
final double[] values = new double[axisCount];
for (int axisIndex = 0; axisIndex < axisCount; axisIndex++) {
final double value = Math.random() * 360 - 180;
values[axisIndex] = value;
final double min = bounds[axisIndex];
if (Double.isNaN(min) || value < min) {
bounds[axisIndex] = value;
}
final double max = bounds[axisCount + axisIndex];
if (Double.isNaN(max) || value > max) {
bounds[axisCount + axisIndex] = value;
}
}
points[i] = new PointDouble(values);
}
final GeometryFactory noGf = GeometryFactory.DEFAULT_3D.convertAxisCount(axisCount);
final BoundingBox noGeometryFactory = noGf.newBoundingBox(axisCount, points);
assertBoundingBox(null, noGeometryFactory, noGf, false, axisCount, bounds);
final GeometryFactory gfFloating = GeometryFactory.floating(4326, axisCount);
assertBoundingBox(null, gfFloating.newBoundingBox(axisCount, points), gfFloating, false, axisCount, bounds);
final double[] scales = GeometryFactory.newScalesFixed(axisCount, 10.0);
final GeometryFactory gfFixed = GeometryFactory.fixed(4326, axisCount, scales);
points = gfFixed.getPrecise(points);
final double[] boundsPrecise = gfFixed.copyPrecise(bounds);
assertBoundingBox(null, gfFixed.newBoundingBox(axisCount, points), gfFixed, false, axisCount, boundsPrecise);
}
}
}
use of com.revolsys.geometry.model.BoundingBox in project com.revolsys.open by revolsys.
the class BoundingBoxTest method testConstructorIterable.
@Test
public void testConstructorIterable() {
final BoundingBox emptyNull = BoundingBoxDoubleXY.newBoundingBox((Iterable<Point>) null);
assertBoundingBox(null, emptyNull, GeometryFactory.DEFAULT_3D, true, 2, NULL_BOUNDS);
final BoundingBox emptyList = BoundingBoxDoubleXY.newBoundingBox(new ArrayList<Point>());
assertBoundingBox(null, emptyList, GeometryFactory.DEFAULT_3D, true, 2, NULL_BOUNDS);
final BoundingBox emptyListWithNulls = BoundingBoxDoubleXY.newBoundingBox(Collections.<Point>singleton(null));
assertBoundingBox(null, emptyListWithNulls, GeometryFactory.DEFAULT_3D, true, 2, NULL_BOUNDS);
final BoundingBox emptyNullCoordinatesList = BoundingBoxDoubleXY.newBoundingBox((Iterable<Point>) null);
assertBoundingBox(null, emptyNullCoordinatesList, GeometryFactory.DEFAULT_3D, true, 2, NULL_BOUNDS);
final BoundingBox emptyCoordinatesList = BoundingBoxDoubleXY.newBoundingBox(new ArrayList<Point>());
assertBoundingBox(null, emptyCoordinatesList, GeometryFactory.DEFAULT_3D, true, 2, NULL_BOUNDS);
// Different number of axis and values
for (int axisCount = 2; axisCount < 6; axisCount++) {
for (int valueCount = 1; valueCount < 10; valueCount++) {
final List<Point> points = new ArrayList<>();
final double[] bounds = RectangleUtil.newBounds(axisCount);
for (int i = 0; i < valueCount; i++) {
final double[] values = new double[axisCount];
for (int axisIndex = 0; axisIndex < axisCount; axisIndex++) {
final double value = Math.random() * 360 - 180;
values[axisIndex] = value;
final double min = bounds[axisIndex];
if (Double.isNaN(min) || value < min) {
bounds[axisIndex] = value;
}
final double max = bounds[axisCount + axisIndex];
if (Double.isNaN(max) || value > max) {
bounds[axisCount + axisIndex] = value;
}
}
points.add(new PointDouble(values));
}
final GeometryFactory noGf = GeometryFactory.DEFAULT_3D.convertAxisCount(axisCount);
final BoundingBox noGeometryFactory = noGf.newBoundingBox(axisCount, points);
assertBoundingBox(null, noGeometryFactory, noGf, false, axisCount, bounds);
final GeometryFactory gfFloating = GeometryFactory.floating(4326, axisCount);
assertBoundingBox(null, gfFloating.newBoundingBox(axisCount, points), gfFloating, false, axisCount, bounds);
final double[] scales = GeometryFactory.newScalesFixed(axisCount, 10.0);
final GeometryFactory gfFixed = GeometryFactory.fixed(4326, axisCount, scales);
final double[] boundsPrecise = gfFixed.copyPrecise(bounds);
assertBoundingBox(null, gfFixed.newBoundingBox(axisCount, points), gfFixed, false, axisCount, boundsPrecise);
}
}
}
use of com.revolsys.geometry.model.BoundingBox in project com.revolsys.open by revolsys.
the class BoundingBoxTest method testPoint.
@Test
public void testPoint() {
for (final GeometryFactory geometryFactory : GEOMETRY_FACTORIES) {
final Point empty = geometryFactory.point();
final BoundingBox boundingBoxEmpty = empty.getBoundingBox();
assertBoundingBox(empty, boundingBoxEmpty, geometryFactory, true, 2, NULL_BOUNDS);
final Point geometry1 = geometryFactory.point(1, 2);
final BoundingBox boundingBox10 = geometry1.getBoundingBox();
assertBoundingBox(geometry1, boundingBox10, geometryFactory, false, 2, 1.0, 2.0, 1.0, 2.0);
}
}
use of com.revolsys.geometry.model.BoundingBox in project com.revolsys.open by revolsys.
the class GeometryTestUtil method coordinates.
public static double[] coordinates(final GeometryFactory geometryFactory, final double delta) {
final int axisCount = geometryFactory.getAxisCount();
final double[] coordinates = new double[axisCount];
double x;
double y;
final CoordinateSystem coordinateSystem = geometryFactory.getCoordinateSystem();
if (coordinateSystem == null || geometryFactory.isGeographics()) {
x = -123.123456;
y = 52.123456;
} else {
final BoundingBox areaBoundingBox = coordinateSystem.getAreaBoundingBox();
x = Math.round(areaBoundingBox.getCentreX());
y = Math.round(areaBoundingBox.getCentreY());
}
coordinates[0] = x;
coordinates[1] = y;
if (axisCount > 2) {
coordinates[2] = 2.1234567;
}
if (axisCount > 3) {
coordinates[3] = 3.1234567;
}
for (int i = 0; i < coordinates.length; i++) {
coordinates[i] += delta;
}
return coordinates;
}
Aggregations