Search in sources :

Example 26 with BoundingBox

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);
    }
}
Also used : GeometryFactory(com.revolsys.geometry.model.GeometryFactory) Punctual(com.revolsys.geometry.model.Punctual) BoundingBox(com.revolsys.geometry.model.BoundingBox) Test(org.junit.Test)

Example 27 with BoundingBox

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);
        }
    }
}
Also used : PointDouble(com.revolsys.geometry.model.impl.PointDouble) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) BoundingBox(com.revolsys.geometry.model.BoundingBox) Point(com.revolsys.geometry.model.Point) Point(com.revolsys.geometry.model.Point) Test(org.junit.Test)

Example 28 with BoundingBox

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);
        }
    }
}
Also used : PointDouble(com.revolsys.geometry.model.impl.PointDouble) GeometryFactory(com.revolsys.geometry.model.GeometryFactory) BoundingBox(com.revolsys.geometry.model.BoundingBox) ArrayList(java.util.ArrayList) Point(com.revolsys.geometry.model.Point) Point(com.revolsys.geometry.model.Point) Test(org.junit.Test)

Example 29 with BoundingBox

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);
    }
}
Also used : GeometryFactory(com.revolsys.geometry.model.GeometryFactory) BoundingBox(com.revolsys.geometry.model.BoundingBox) Point(com.revolsys.geometry.model.Point) Test(org.junit.Test)

Example 30 with BoundingBox

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;
}
Also used : CoordinateSystem(com.revolsys.geometry.cs.CoordinateSystem) BoundingBox(com.revolsys.geometry.model.BoundingBox) Point(com.revolsys.geometry.model.Point)

Aggregations

BoundingBox (com.revolsys.geometry.model.BoundingBox)307 Point (com.revolsys.geometry.model.Point)83 GeometryFactory (com.revolsys.geometry.model.GeometryFactory)76 ArrayList (java.util.ArrayList)45 Geometry (com.revolsys.geometry.model.Geometry)41 LineString (com.revolsys.geometry.model.LineString)26 List (java.util.List)26 BoundingBoxDoubleXY (com.revolsys.geometry.model.impl.BoundingBoxDoubleXY)19 Polygon (com.revolsys.geometry.model.Polygon)14 PointDoubleXY (com.revolsys.geometry.model.impl.PointDoubleXY)14 Project (com.revolsys.swing.map.layer.Project)14 CreateListVisitor (com.revolsys.visitor.CreateListVisitor)12 CoordinateSystem (com.revolsys.geometry.cs.CoordinateSystem)11 LayerRecord (com.revolsys.swing.map.layer.record.LayerRecord)11 Edge (com.revolsys.geometry.graph.Edge)10 HashMap (java.util.HashMap)10 Record (com.revolsys.record.Record)9 Graphics2D (java.awt.Graphics2D)9 MapEx (com.revolsys.collection.map.MapEx)8 LinearRing (com.revolsys.geometry.model.LinearRing)8