private static CoordinateSequence createSequence(EnumSet<Ordinate> ordinateFlags, double[] xy) { // get the number of dimension to verify size of provided ordinate values array int dimension = requiredDimension(ordinateFlags); // inject additional values double[] ordinateValues = injectZM(ordinateFlags, xy); if ((ordinateValues.length % dimension) != 0) throw new IllegalArgumentException("ordinateFlags and number of provided ordinate values don't match"); // get the required size of the sequence int size = ordinateValues.length / dimension; // create a sequence capable of storing all ordinate values. CoordinateSequence res = GeometryTestCase.getCSFactory(ordinateFlags) .create(size, requiredDimension(ordinateFlags)); // fill in values int k = 0; for(int i = 0; i < ordinateValues.length; i+= dimension) { for (int j = 0; j < dimension; j++) res.setOrdinate(k, j, ordinateValues[i+j]); k++; } return res; }
public static void main(String args[]) { TestRunner.run(suite()); }
public void testReadPoint() throws Exception { // arrange double[] coordinates = new double[] {10, 10}; CoordinateSequence seqPt2D = createSequence(Ordinate.createXY(), coordinates); CoordinateSequence seqPt2DE = createSequence(Ordinate.createXY(), new double[0]); CoordinateSequence seqPt3D = createSequence(Ordinate.createXYZ(), coordinates); CoordinateSequence seqPt2DM = createSequence(Ordinate.createXYM(), coordinates); CoordinateSequence seqPt3DM = createSequence(Ordinate.createXYZM(), coordinates); // act Point pt2D = (Point) reader2D.read("POINT (10 10)"); Point pt2DE = (Point) reader2D.read("POINT EMPTY"); Point pt3D = (Point) reader3D.read("POINT Z(10 10 10)"); Point pt2DM = (Point) reader2DM.read("POINT M(10 10 11)"); Point pt3DM = (Point) reader3DM.read("POINT ZM(10 10 10 11)"); // assert assertTrue(GeometryTestCase.checkEqual(seqPt2D, pt2D.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqPt2DE, pt2DE.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqPt3D, pt3D.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqPt2DM, pt2DM.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqPt3DM, pt3DM.getCoordinateSequence())); }
public void testReadLinearRing() throws Exception { CoordinateSequence seqLs2D = createSequence(Ordinate.createXY(), coordinates); CoordinateSequence seqLs2DE = createSequence(Ordinate.createXY(), new double[0]); CoordinateSequence seqLs3D = createSequence(Ordinate.createXYZ(), coordinates); CoordinateSequence seqLs2DM = createSequence(Ordinate.createXYM(), coordinates); CoordinateSequence seqLs3DM = createSequence(Ordinate.createXYZM(), coordinates); assertTrue(GeometryTestCase.checkEqual(seqLs2D, ls2D.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs2DE, ls2DE.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs3D, ls3D.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs2DM, ls2DM.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs3DM, ls3DM.getCoordinateSequence())); fail(); assertTrue(e instanceof IllegalArgumentException); assertTrue(e.getMessage().contains("not form a closed linestring"));
private static double[] injectZM(EnumSet<Ordinate> ordinateFlags, double[] xy) { int size = xy.length / 2; int dimension = requiredDimension(ordinateFlags); double[] res = new double[size * dimension]; int k = 0; for (int i = 0; i < xy.length; i+=2) { res[k++] = xy[i]; res[k++] = xy[i+1]; if (ordinateFlags.contains(Ordinate.Z)) res[k++] = 10; if (ordinateFlags.contains(Ordinate.M)) res[k++] = 11; } return res; } }
public void testReadLargeNumbers() throws Exception { PrecisionModel precisionModel = new PrecisionModel(1E9); GeometryFactory geometryFactory = new GeometryFactory(precisionModel, 0); WKTReader reader = new WKTReader(geometryFactory); CoordinateSequence point1 = ((Point)reader.read("POINT (123456789.01234567890 10)")).getCoordinateSequence(); CoordinateSequence point2 = geometryFactory.createPoint(new Coordinate(123456789.01234567890, 10)).getCoordinateSequence(); assertEquals(point1.getOrdinate(0, CoordinateSequence.X), point2.getOrdinate(0, CoordinateSequence.X), 1E-7); assertEquals(point1.getOrdinate(0, CoordinateSequence.Y), point2.getOrdinate(0, CoordinateSequence.Y), 1E-7); }
public void testReadNaN() throws Exception { // arrange CoordinateSequence seq = createSequence(Ordinate.createXYZ(), new double[] {10, 10}); seq.setOrdinate(0, CoordinateSequence.Z, Double.NaN); // act Point pt1 = (Point)reader2DOld.read("POINT (10 10 NaN)"); Point pt2 = (Point)reader2DOld.read("POINT (10 10 nan)"); Point pt3 = (Point)reader2DOld.read("POINT (10 10 NAN)"); // assert assertTrue(GeometryTestCase.checkEqual(seq, pt1.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seq, pt2.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seq, pt3.getCoordinateSequence())); }
public void testReadLineString() throws Exception { // arrange double[] coordinates = new double[] {10, 10, 20, 20, 30, 40}; CoordinateSequence seqLs2D = createSequence(Ordinate.createXY(), coordinates); CoordinateSequence seqLs2DE = createSequence(Ordinate.createXY(), new double[0]); CoordinateSequence seqLs3D = createSequence(Ordinate.createXYZ(), coordinates); CoordinateSequence seqLs2DM = createSequence(Ordinate.createXYM(), coordinates); CoordinateSequence seqLs3DM = createSequence(Ordinate.createXYZM(), coordinates); // act LineString ls2D = (LineString) reader2D .read("LINESTRING (10 10, 20 20, 30 40)"); LineString ls2DE = (LineString) reader2D .read("LINESTRING EMPTY"); LineString ls3D = (LineString) reader3D .read("LINESTRING Z(10 10 10, 20 20 10, 30 40 10)"); LineString ls2DM = (LineString) reader2DM .read("LINESTRING M(10 10 11, 20 20 11, 30 40 11)"); LineString ls3DM = (LineString) reader3DM .read("LINESTRING ZM(10 10 10 11, 20 20 10 11, 30 40 10 11)"); // assert assertTrue(GeometryTestCase.checkEqual(seqLs2D, ls2D.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs2DE, ls2DE.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs3D, ls3D.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs2DM, ls2DM.getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(seqLs3DM, ls3DM.getCoordinateSequence())); }
createSequence(Ordinate.createXY(), coordinates[0]), createSequence(Ordinate.createXY(), coordinates[1])}; CoordinateSequence[] csMP3D = new CoordinateSequence[] { createSequence(Ordinate.createXYZ(), coordinates[0]), createSequence(Ordinate.createXYZ(), coordinates[1])}; CoordinateSequence[] csMP2DM = new CoordinateSequence[] { createSequence(Ordinate.createXYM(), coordinates[0]), createSequence(Ordinate.createXYM(), coordinates[1])}; CoordinateSequence[] csMP3DM = new CoordinateSequence[] { createSequence(Ordinate.createXYZM(), coordinates[0]), createSequence(Ordinate.createXYZM(), coordinates[1])}; assertTrue(GeometryTestCase.checkEqual(csMP2D[0], ((Point)mP2D.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMP2D[1], ((Point)mP2D.getGeometryN(1)).getCoordinateSequence())); assertTrue(mP2DE.isEmpty()); assertTrue(mP2DE.getNumGeometries() == 0); assertTrue(GeometryTestCase.checkEqual(csMP3D[0], ((Point)mP3D.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMP3D[1], ((Point)mP3D.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMP2DM[0], ((Point)mP2DM.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMP2DM[1], ((Point)mP2DM.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMP3DM[0], ((Point)mP3DM.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMP3DM[1], ((Point)mP3DM.getGeometryN(1)).getCoordinateSequence()));
public void testReadGeometryCollection() throws Exception { // arrange double[][] coordinates = new double[][] { new double[] {10, 10}, new double[] {30, 30}, new double[] {15, 15, 20, 20}, new double[0], new double[] {10, 10, 20, 20, 30, 40, 10, 10} }; CoordinateSequence[] css = new CoordinateSequence[] { createSequence(Ordinate.createXY(), coordinates[0]), createSequence(Ordinate.createXY(), coordinates[1]), createSequence(Ordinate.createXY(), coordinates[2]), createSequence(Ordinate.createXY(), coordinates[3]), createSequence(Ordinate.createXY(), coordinates[4]), }; // arrange WKTReader rdr = GeometryTestCase.getWKTReader(Ordinate.createXY(), 1); GeometryCollection gc0 = (GeometryCollection)rdr.read("GEOMETRYCOLLECTION (POINT (10 10), POINT (30 30), LINESTRING (15 15, 20 20))"); GeometryCollection gc1 = (GeometryCollection)rdr.read("GEOMETRYCOLLECTION (POINT (10 10), LINEARRING EMPTY, LINESTRING (15 15, 20 20))"); GeometryCollection gc2 = (GeometryCollection)rdr.read("GEOMETRYCOLLECTION (POINT (10 10), LINEARRING (10 10, 20 20, 30 40, 10 10), LINESTRING (15 15, 20 20))"); GeometryCollection gc3 = (GeometryCollection)rdr.read("GEOMETRYCOLLECTION EMPTY"); // assert assertTrue(GeometryTestCase.checkEqual(css[0], ((Point)gc0.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[1], ((Point)gc0.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[2], ((LineString)gc0.getGeometryN(2)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[0], ((Point)gc1.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[3], ((LinearRing)gc1.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[2], ((LineString)gc1.getGeometryN(2)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[0], ((Point)gc2.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[4], ((LinearRing)gc2.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(css[2], ((LineString)gc2.getGeometryN(2)).getCoordinateSequence())); assertTrue(gc3.isEmpty()); }
createSequence(Ordinate.createXY(), coordinates[0]), createSequence(Ordinate.createXY(), coordinates[1])}; CoordinateSequence[] csMls3D = new CoordinateSequence[] { createSequence(Ordinate.createXYZ(), coordinates[0]), createSequence(Ordinate.createXYZ(), coordinates[1])}; CoordinateSequence[] csMls2DM = new CoordinateSequence[] { createSequence(Ordinate.createXYM(), coordinates[0]), createSequence(Ordinate.createXYM(), coordinates[1])}; CoordinateSequence[] csMls3DM = new CoordinateSequence[] { createSequence(Ordinate.createXYZM(), coordinates[0]), createSequence(Ordinate.createXYZM(), coordinates[1])}; assertTrue(GeometryTestCase.checkEqual(csMls2D[0], ((LineString)mLs2D.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMls2D[1], ((LineString)mLs2D.getGeometryN(1)).getCoordinateSequence())); assertTrue(mLs2DE.isEmpty()); assertTrue(mLs2DE.getNumGeometries() == 0); assertTrue(GeometryTestCase.checkEqual(csMls3D[0], ((LineString)mLs3D.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMls3D[1], ((LineString)mLs3D.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMls2DM[0], ((LineString)mLs2DM.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMls2DM[1], ((LineString)mLs2DM.getGeometryN(1)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMls3DM[0], ((LineString)mLs3DM.getGeometryN(0)).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csMls3DM[1], ((LineString)mLs3DM.getGeometryN(1)).getCoordinateSequence()));
createSequence(Ordinate.createXY(), shell), createSequence(Ordinate.createXY(), ring1), createSequence(Ordinate.createXY(), ring2)}; CoordinateSequence csPoly2DE = createSequence(Ordinate.createXY(), new double[0]); CoordinateSequence[] csPoly3D = new CoordinateSequence[] { createSequence(Ordinate.createXYZ(), shell), createSequence(Ordinate.createXYZ(), ring1), createSequence(Ordinate.createXYZ(), ring2)}; CoordinateSequence[] csPoly2DM = new CoordinateSequence[] { createSequence(Ordinate.createXYM(), shell), createSequence(Ordinate.createXYM(), ring1), createSequence(Ordinate.createXYM(), ring2)}; CoordinateSequence[] csPoly3DM = new CoordinateSequence[] { createSequence(Ordinate.createXYZM(), shell), createSequence(Ordinate.createXYZM(), ring1), createSequence(Ordinate.createXYZM(), ring2)}; assertTrue(GeometryTestCase.checkEqual(csPoly2D[0], poly2D[2].getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2D[1], poly2D[2].getInteriorRingN(0).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2D[2], poly2D[2].getInteriorRingN(1).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DE, poly2DE.getExteriorRing().getCoordinateSequence(), 2)); assertTrue(GeometryTestCase.checkEqual(csPoly3D[0], poly3D[2].getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly3D[1], poly3D[2].getInteriorRingN(0).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly3D[2], poly3D[2].getInteriorRingN(1).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DM[0], poly2DM[2].getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DM[1], poly2DM[2].getInteriorRingN(0).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DM[2], poly2DM[2].getInteriorRingN(1).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly3DM[0], poly3DM[2].getExteriorRing().getCoordinateSequence()));
createSequence(Ordinate.createXY(), shell1), createSequence(Ordinate.createXY(), ring1), createSequence(Ordinate.createXY(), shell2)}; CoordinateSequence[] csPoly3D = new CoordinateSequence[] { createSequence(Ordinate.createXYZ(), shell1), createSequence(Ordinate.createXYZ(), ring1), createSequence(Ordinate.createXYZ(), shell2)}; CoordinateSequence[] csPoly2DM = new CoordinateSequence[] { createSequence(Ordinate.createXYM(), shell1), createSequence(Ordinate.createXYM(), ring1), createSequence(Ordinate.createXYM(), shell2)}; CoordinateSequence[] csPoly3DM = new CoordinateSequence[] { createSequence(Ordinate.createXYZM(), shell1), createSequence(Ordinate.createXYZM(), ring1), createSequence(Ordinate.createXYZM(), shell2)}; assertTrue(GeometryTestCase.checkEqual(csPoly2D[0], ((Polygon)poly2D[2].getGeometryN(0)).getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2D[1], ((Polygon)poly2D[2].getGeometryN(0)).getInteriorRingN(0).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2D[2], ((Polygon)poly2D[2].getGeometryN(1)).getExteriorRing().getCoordinateSequence())); assertTrue(poly2DE.isEmpty()); assertTrue(poly2DE.getNumGeometries() == 0); assertTrue(GeometryTestCase.checkEqual(csPoly3D[0],((Polygon)poly3D[2].getGeometryN(0)).getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly3D[1], ((Polygon)poly3D[2].getGeometryN(0)).getInteriorRingN(0).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly3D[2], ((Polygon)poly3D[2].getGeometryN(1)).getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DM[0], ((Polygon)poly2DM[2].getGeometryN(0)).getExteriorRing().getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DM[1], ((Polygon)poly2DM[2].getGeometryN(0)).getInteriorRingN(0).getCoordinateSequence())); assertTrue(GeometryTestCase.checkEqual(csPoly2DM[2], ((Polygon)poly2DM[2].getGeometryN(1)).getExteriorRing().getCoordinateSequence()));