package org.geotools.geometry.jts; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Test; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Polygon; import com.vividsolutions.jts.io.WKTReader; public class WKTReader2Test { @Test public void verifyWKT() throws Exception { String WKT = "LINESTRING (60 380, 60 20, 200 400, 280 20, 360 400, 420 20, 500 400, 580 20, 620 400)"; WKTReader reader = new WKTReader2(); Geometry geometry = reader.read(WKT); assertNotNull(geometry); } /** * Draw a circle between the start and end point; or each group of three their after. * @throws Exception */ @Test public void circularString() throws Exception { String WKT = "CIRCULARSTRING(220268.439465645 150415.359530563,220227.333322076 150505.561285879,220227.353105332 150406.434743975)"; WKTReader reader = new WKTReader2(); Geometry geometry = reader.read(WKT); assertNotNull("parsed circularstring", geometry); assertEquals("segmentized as expected", 112, geometry.getNumPoints() ); WKT = "CIRCULARSTRING(143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 145.96132309891922 -34.985671061528784, 149.57565307617188 -33.41153335571289, 149.41972407584802 -29.824672680573517, 146.1209416055467 -30.19711586270431, 143.62025166838282 -30.037497356076827)"; geometry = reader.read(WKT); assertNotNull("parsed circularstring ring",geometry); Coordinate[] array = geometry.getCoordinates(); assertEquals( "forms a ring", array[0], array[ array.length-1]); WKT = "CIRCULARSTRING(143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 143.62025166838282 -30.037497356076827)"; geometry = reader.read(WKT); assertNotNull("parsed perfect circle",geometry); assertEquals( 129, geometry.getNumPoints() ); WKT = "CIRCULARSTRING EMPTY"; geometry = reader.read(WKT); assertNotNull(geometry); assertTrue( geometry.isEmpty() ); } @Test public void compoundCurve() throws Exception { String WKT = "COMPOUNDCURVE((153.72942375 -27.21757040, 152.29285719 -29.23940482, 154.74034096 -30.51635287),CIRCULARSTRING(154.74034096 -30.51635287, 154.74034096 -30.51635287, 152.39926953 -32.16574411, 155.11278414 -34.08116619, 151.86720784 -35.62414508))"; WKTReader reader = new WKTReader2(); Geometry geometry = reader.read(WKT); assertNotNull(geometry); WKT = "COMPOUNDCURVE((153.72942375 -27.21757040, 152.29285719 -29.23940482, 154.74034096 -30.51635287))"; geometry = reader.read(WKT); assertNotNull(geometry); WKT = "COMPOUNDCURVE(CIRCULARSTRING(154.74034096 -30.51635287, 154.74034096 -30.51635287, 152.39926953 -32.16574411, 155.11278414 -34.08116619, 151.86720784 -35.62414508))"; geometry = reader.read(WKT); assertNotNull(geometry); WKT = "COMPOUNDCURVE EMPTY"; geometry = reader.read(WKT); assertNotNull(geometry); assertTrue( geometry.isEmpty() ); } @Test public void curvePolygon() throws Exception { // perfect circle! WKTReader reader = new WKTReader2(); String WKT; Polygon polygon; Geometry geometry; WKT = "CURVEPOLYGON(CIRCULARSTRING(143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 143.62025166838282 -30.037497356076827))"; geometry = reader.read(WKT); assertNotNull("read curvepolygon", geometry); assertTrue( geometry instanceof Polygon ); polygon = (Polygon) geometry; assertTrue( "ring", polygon.getExteriorRing().isClosed() ); assertEquals( "segmented ring", 129, polygon.getExteriorRing().getNumPoints() ); assertEquals( "no holes", 0, polygon.getNumInteriorRing() ); WKT = "CURVEPOLYGON((144.84399355252685 -31.26123924022086, 144.20551952601693 -32.27215644886158, 145.55230712890625 -33.49203872680664, 147.97080993652344 -32.03618621826172, 146.38697244992585 -31.47406391572417, 144.84399355252685 -31.26123924022086))"; polygon = (Polygon) reader.read( WKT ); assertTrue( "ring", polygon.getExteriorRing().isClosed() ); assertEquals( "no holes", 0, polygon.getNumInteriorRing() ); WKT = "CURVEPOLYGON("+ "CIRCULARSTRING(143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 145.96132309891922 -34.985671061528784, 149.57565307617188 -33.41153335571289, 149.41972407584802 -29.824672680573517, 146.1209416055467 -30.19711586270431, 143.62025166838282 -30.037497356076827),"+ "(144.84399355252685 -31.26123924022086, 144.20551952601693 -32.27215644886158, 145.55230712890625 -33.49203872680664, 147.97080993652344 -32.03618621826172, 146.38697244992585 -31.47406391572417, 144.84399355252685 -31.26123924022086))"; polygon = (Polygon) reader.read( WKT ); assertTrue( "ring", polygon.getExteriorRing().isClosed() ); assertEquals( "one holes", 1, polygon.getNumInteriorRing() ); } }