Package org.opentripplanner.common.geometry

Source Code of org.opentripplanner.common.geometry.GeometryUtilsTest

/* This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>. */

package org.opentripplanner.common.geometry;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.opentripplanner.common.model.P2;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.CoordinateSequenceFactory;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;

public class GeometryUtilsTest {
    @Test
    public final void testSplitGeometryAtFraction() {
        Coordinate[] coordinates = new Coordinate[4];

        coordinates[0] = new Coordinate(0, 0);
        coordinates[1] = new Coordinate(0, 1);
        coordinates[2] = new Coordinate(2, 1);
        coordinates[3] = new Coordinate(2, 2);

        Coordinate[][][] referenceCoordinates = new Coordinate[9][2][];

        referenceCoordinates[0][1] = coordinates;

        referenceCoordinates[1][0] = new Coordinate[2];
        referenceCoordinates[1][0][0] = coordinates[0];
        referenceCoordinates[1][0][1] = new Coordinate(0, 0.5);
        referenceCoordinates[1][1] = new Coordinate[4];
        referenceCoordinates[1][1][0] = referenceCoordinates[1][0][1];
        referenceCoordinates[1][1][1] = coordinates[1];
        referenceCoordinates[1][1][2] = coordinates[2];
        referenceCoordinates[1][1][3] = coordinates[3];

        referenceCoordinates[2][0] = new Coordinate[2];
        referenceCoordinates[2][0][0] = coordinates[0];
        referenceCoordinates[2][0][1] = coordinates[1];
        referenceCoordinates[2][1] = new Coordinate[3];
        referenceCoordinates[2][1][0] = coordinates[1];
        referenceCoordinates[2][1][1] = coordinates[2];
        referenceCoordinates[2][1][2] = coordinates[3];

        referenceCoordinates[3][0] = new Coordinate[3];
        referenceCoordinates[3][0][0] = coordinates[0];
        referenceCoordinates[3][0][1] = coordinates[1];
        referenceCoordinates[3][0][2] = new Coordinate(0.5, 1);
        referenceCoordinates[3][1] = new Coordinate[3];
        referenceCoordinates[3][1][0] = referenceCoordinates[3][0][2];
        referenceCoordinates[3][1][1] = coordinates[2];
        referenceCoordinates[3][1][2] = coordinates[3];

        referenceCoordinates[4][0] = new Coordinate[3];
        referenceCoordinates[4][0][0] = coordinates[0];
        referenceCoordinates[4][0][1] = coordinates[1];
        referenceCoordinates[4][0][2] = new Coordinate(1, 1);
        referenceCoordinates[4][1] = new Coordinate[3];
        referenceCoordinates[4][1][0] = referenceCoordinates[4][0][2];
        referenceCoordinates[4][1][1] = coordinates[2];
        referenceCoordinates[4][1][2] = coordinates[3];

        referenceCoordinates[5][0] = new Coordinate[3];
        referenceCoordinates[5][0][0] = coordinates[0];
        referenceCoordinates[5][0][1] = coordinates[1];
        referenceCoordinates[5][0][2] = new Coordinate(1.5, 1);
        referenceCoordinates[5][1] = new Coordinate[3];
        referenceCoordinates[5][1][0] = referenceCoordinates[5][0][2];
        referenceCoordinates[5][1][1] = coordinates[2];
        referenceCoordinates[5][1][2] = coordinates[3];

        referenceCoordinates[6][0] = new Coordinate[3];
        referenceCoordinates[6][0][0] = coordinates[0];
        referenceCoordinates[6][0][1] = coordinates[1];
        referenceCoordinates[6][0][2] = coordinates[2];
        referenceCoordinates[6][1] = new Coordinate[2];
        referenceCoordinates[6][1][0] = coordinates[2];
        referenceCoordinates[6][1][1] = coordinates[3];

        referenceCoordinates[7][0] = new Coordinate[4];
        referenceCoordinates[7][0][0] = coordinates[0];
        referenceCoordinates[7][0][1] = coordinates[1];
        referenceCoordinates[7][0][2] = coordinates[2];
        referenceCoordinates[7][0][3] = new Coordinate(2, 1.5);
        referenceCoordinates[7][1] = new Coordinate[2];
        referenceCoordinates[7][1][0] = referenceCoordinates[7][0][3];
        referenceCoordinates[7][1][1] = coordinates[3];

        referenceCoordinates[8][0] = coordinates;

        GeometryFactory geometryFactory = GeometryUtils.getGeometryFactory();
        CoordinateSequenceFactory coordinateSequenceFactory =
                geometryFactory.getCoordinateSequenceFactory();
        CoordinateSequence sequence = coordinateSequenceFactory.create(coordinates);
        LineString geometry = new LineString(sequence, geometryFactory);

        P2<LineString> result;
        LineString[][] results = new LineString[9][2];

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0);
        results[0][0] = result.first;
        results[0][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.125);
        results[1][0] = result.first;
        results[1][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.25);
        results[2][0] = result.first;
        results[2][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.375);
        results[3][0] = result.first;
        results[3][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.5);
        results[4][0] = result.first;
        results[4][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.625);
        results[5][0] = result.first;
        results[5][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.75);
        results[6][0] = result.first;
        results[6][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 0.875);
        results[7][0] = result.first;
        results[7][1] = result.second;

        result = GeometryUtils.splitGeometryAtFraction(geometry, 1);
        results[8][0] = result.first;
        results[8][1] = result.second;

        sequence = coordinateSequenceFactory.create(referenceCoordinates[0][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[0][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[0][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[0][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[1][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[1][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[1][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[1][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[2][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[2][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[2][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[2][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[3][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[3][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[3][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[3][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[4][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[4][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[4][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[4][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[5][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[5][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[5][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[5][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[6][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[6][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[6][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[6][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[7][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[7][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[7][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[7][1]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[8][0]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[8][0]);

        sequence = coordinateSequenceFactory.create(referenceCoordinates[8][1]);
        geometry = new LineString(sequence, geometryFactory);
        assertEquals(geometry, results[8][1]);
    }
}
TOP

Related Classes of org.opentripplanner.common.geometry.GeometryUtilsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.