package iso.primitive; import java.util.ArrayList; import junit.framework.TestCase; import org.geotools.geometry.iso.FeatGeomFactoryImpl; import org.geotools.geometry.iso.coordinate.CoordinateFactoryImpl; import org.geotools.geometry.iso.coordinate.PositionImpl; import org.geotools.geometry.iso.primitive.CurveImpl; import org.geotools.geometry.iso.primitive.PrimitiveFactoryImpl; import org.geotools.geometry.iso.primitive.RingImpl; import org.opengis.spatialschema.geometry.geometry.Position; import org.opengis.spatialschema.geometry.primitive.CurveSegment; import org.opengis.spatialschema.geometry.primitive.OrientableCurve; /** * @author sanjay * */ public class RingTest extends TestCase { public void testMain() { FeatGeomFactoryImpl tGeomFactory = FeatGeomFactoryImpl.getDefault2D(); //this._testTriangle1(tGeomFactory); this._testRing1(tGeomFactory); } private void _testRing1(FeatGeomFactoryImpl aGeomFactory) { CoordinateFactoryImpl tCoordFactory = aGeomFactory.getCoordinateFactory(); PrimitiveFactoryImpl tPrimFactory = aGeomFactory.getPrimitiveFactory(); /* Defining Positions for LineStrings */ ArrayList line1 = new ArrayList(); line1.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{50, 20}))); line1.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{30, 30}))); line1.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{20, 50}))); line1.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{20, 70}))); ArrayList line2 = new ArrayList(); line2.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{20, 70}))); line2.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{40, 80}))); line2.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{70, 80}))); ArrayList line3 = new ArrayList(); line3.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{70, 80}))); line3.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{90, 70}))); line3.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{100, 60}))); line3.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{100, 40}))); ArrayList line4 = new ArrayList(); line4.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{100, 40}))); line4.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{80, 30}))); line4.add(new PositionImpl(tCoordFactory.createDirectPosition(new double[]{50, 20}))); /* Setting up Array of these LineStrings */ ArrayList tLineList1 = new ArrayList(); tLineList1.add(tCoordFactory.createLineString(line1)); tLineList1.add(tCoordFactory.createLineString(line2)); ArrayList tLineList2 = new ArrayList(); tLineList2.add(tCoordFactory.createLineString(line3)); tLineList2.add(tCoordFactory.createLineString(line4)); /* Build Curve */ CurveImpl curve1 = tPrimFactory.createCurve(tLineList1); CurveImpl curve2 = tPrimFactory.createCurve(tLineList2); /* Build Ring */ ArrayList curveList = new ArrayList(); curveList.add(curve1); curveList.add(curve2); RingImpl ring1 = tPrimFactory.createRing(curveList); System.out.println(ring1); System.out.println(ring1.getEnvelope()); // Rings should be simple assertTrue(ring1.isSimple()); // Rings should be cyclic (=closed) assertTrue(ring1.isCycle()); // ***** getRepresentativePoint() double[] dp = ring1.getRepresentativePoint().getCoordinates(); assertTrue(dp[0] == 50); assertTrue(dp[1] == 20); assertTrue(ring1.isCycle() == true); //PaintGMObject.paint(curve1); } }