package iso.primitive; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.geotools.geometry.iso.FeatGeomFactoryImpl; import org.geotools.geometry.iso.coordinate.CoordinateFactoryImpl; import org.geotools.geometry.iso.coordinate.LineStringImpl; 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.geotools.geometry.iso.primitive.SurfaceBoundaryImpl; import org.geotools.geometry.iso.primitive.SurfaceImpl; import org.opengis.spatialschema.geometry.DirectPosition; import org.opengis.spatialschema.geometry.geometry.Position; import org.opengis.spatialschema.geometry.primitive.Curve; import org.opengis.spatialschema.geometry.primitive.CurveSegment; import org.opengis.spatialschema.geometry.primitive.Ring; import org.opengis.spatialschema.geometry.primitive.Surface; public class Dimension2o5DTest extends TestCase { public void testMain() { FeatGeomFactoryImpl tGeomFactory = FeatGeomFactoryImpl.getDefault2o5D(); this._testCurve1(tGeomFactory); this._testSurface(tGeomFactory); } private void _testCurve1(FeatGeomFactoryImpl aGeomFactory) { CurveImpl curve1 = (CurveImpl) this._createCurve1(aGeomFactory); this.printCurve(curve1); CurveImpl curve2 = (CurveImpl) this._createCurve2(aGeomFactory); this.printCurve(curve2); // GeometryImpl g = (GeometryImpl) curve1.intersection(curve2); // System.out.println("Intersection of curves: " + g); } private void printCurve(CurveImpl curve1) { System.out.print("\n******************* CURVE"); System.out.println("\n" + curve1); System.out.println("\nCoordinate Dimension: " + curve1.getCoordinateDimension()); System.out.println("\nDimension: " + curve1.getDimension(null)); System.out.println("\nDimension Model: " + curve1.getGeometryFactory().getDimensionModel()); System.out.println("Length of Curve is " + curve1.length()); System.out.println("Envelope of the Curve is " + curve1.getEnvelope()); } private void _testSurface(FeatGeomFactoryImpl aGeomFactory) { SurfaceImpl surface = (SurfaceImpl) this._createSurface1(aGeomFactory); System.out.print("\n******************* SURFACE GENERATED BY SURFACEBOUNDARY"); System.out.println("\n" + surface); System.out.println("\n Coordinate Dimension: " + surface.getCoordinateDimension()); System.out.println("\n Dimension: " + surface.getDimension(null)); System.out.println("\n Dimension Model: " + surface.getGeometryFactory().getDimensionModel()); System.out.println("\n Envelope: " + surface.getEnvelope()); } private Curve _createCurve1(FeatGeomFactoryImpl aGeomFactory) { CoordinateFactoryImpl tCoordFactory = aGeomFactory.getCoordinateFactory(); PrimitiveFactoryImpl tPrimFactory = aGeomFactory.getPrimitiveFactory(); PositionImpl p1 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{-50, 0, 0})); PositionImpl p2 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{-30, 30, 10})); PositionImpl p3 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{0, 50, 20})); PositionImpl p4 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{30, 30, 10})); PositionImpl p5 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{50, 0, 0})); LineStringImpl line1 = null; ArrayList positionList = new ArrayList(); positionList.add(p1); positionList.add(p2); positionList.add(p3); positionList.add(p4); positionList.add(p5); try { line1 = tCoordFactory.createLineString(positionList); } catch (IllegalArgumentException e) { System.out.println(e); } /* Set parent curve for LineString */ ArrayList tLineList = new ArrayList(); tLineList.add(line1); // PrimitiveFactory.createCurve(List) CurveImpl curve1 = tPrimFactory.createCurve(tLineList); // Set curve for further LineString tests line1.setCurve(curve1); return curve1; } private Curve _createCurve2(FeatGeomFactoryImpl aGeomFactory) { CoordinateFactoryImpl tCoordFactory = aGeomFactory.getCoordinateFactory(); PrimitiveFactoryImpl tPrimFactory = aGeomFactory.getPrimitiveFactory(); PositionImpl p1 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{10, 0, 100})); PositionImpl p2 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{50, 30, 100})); LineStringImpl line1 = null; ArrayList positionList = new ArrayList(); positionList.add(p1); positionList.add(p2); try { line1 = tCoordFactory.createLineString(positionList); } catch (IllegalArgumentException e) { System.out.println("e"); } /* Set parent curve for LineString */ ArrayList tLineList = new ArrayList(); tLineList.add(line1); // PrimitiveFactory.createCurve(List) CurveImpl curve1 = tPrimFactory.createCurve(tLineList); // Set curve for further LineString tests line1.setCurve(curve1); return curve1; } private Surface _createSurface1(FeatGeomFactoryImpl aGeomFactory) { CoordinateFactoryImpl tCoordFactory = aGeomFactory.getCoordinateFactory(); PrimitiveFactoryImpl tPrimFactory = aGeomFactory.getPrimitiveFactory(); List directPositionList = new ArrayList(); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {20, 10, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {40, 10, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {50, 40, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {30, 50, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {10, 30, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {20, 10, 100})); RingImpl exteriorRing = (RingImpl) tPrimFactory.createRingByDirectPositions(directPositionList); List interiors = new ArrayList(); SurfaceBoundaryImpl surfaceBoundary1 = tPrimFactory.createSurfaceBoundary(exteriorRing, interiors ); Surface surface2 = tPrimFactory.createSurface(surfaceBoundary1); return surface2; } public Surface _createSurface2(FeatGeomFactoryImpl aGeomFactory) { CoordinateFactoryImpl tCoordFactory = aGeomFactory.getCoordinateFactory(); PrimitiveFactoryImpl tPrimFactory = aGeomFactory.getPrimitiveFactory(); List directPositionList = new ArrayList(); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {20, 10, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {40, 10, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {50, 40, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {30, 50, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {10, 30, 100})); directPositionList.add(tCoordFactory.createDirectPosition(new double[] {20, 10, 100})); RingImpl exteriorRing = (RingImpl) tPrimFactory.createRingByDirectPositions(directPositionList); List interiors = new ArrayList(); SurfaceBoundaryImpl surfaceBoundary1 = tPrimFactory.createSurfaceBoundary(exteriorRing, interiors ); Surface surface2 = tPrimFactory.createSurface(surfaceBoundary1); return surface2; } }