Package org.geotools.geometry.iso.coordinate

Examples of org.geotools.geometry.iso.coordinate.LineStringImpl


    PositionImpl p2 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{-3030}));
    PositionImpl p3 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{050}));
    PositionImpl p4 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{3030}));
    PositionImpl p5 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{500}));

    LineStringImpl line1 = null;
   
    /* Testing constructor of LineString with Array with size of 0 */
   
    //System.out.println("\n***** TEST: Constructors");
    //PositionImpl arrayOfPoints[] = new PositionImpl[0];
    ArrayList<Position> positionList = new ArrayList<Position>();
    try {
      line1 = tCoordFactory.createLineString(positionList);
    } catch (IllegalArgumentException e) {
      //System.out.println("LineStringImpl - Number of Positions in array: 0 - Not accepted");
    }
    assertEquals(line1,null);

    /* Testing constructor of LineString with Array with size of 1 */

    positionList.add(p1);
    try {
      line1 = tCoordFactory.createLineString(positionList);
    } catch (IllegalArgumentException e) {
      //System.out.println("LineStringImpl - Number of Positions in array: 1 - Not accepted");
    }
    assertEquals(line1 , null);

    /* Testing constructor of LineString with Array with size of 2 */

    positionList.add(p2);
    try {
      line1 = tCoordFactory.createLineString(positionList);
      //System.out.println("LineStringImpl - Number of Positions in array: 2 - accepted");
    } catch (IllegalArgumentException e) {
      //System.out.println("LineStringImpl - Number of Positions in array: 2 - Not accepted");
    }
    assertNotNull(line1);
   
    /* Testing constructor of LineString with Array with size of 5 */

    positionList.add(p3);
    positionList.add(p4);
    positionList.add(p5);
    try {
      line1 = tCoordFactory.createLineString(positionList);
      //System.out.println("LineStringImpl - Number of Positions in array: 5 - accepted");
      //System.out.println("\n" + line1);

    } catch (IllegalArgumentException e) {
      //System.out.println("\nLineStringImpl - Number of Positions in array: 5 - Not accepted");
    }
    assertNotNull(line1);

    // ***** getEnvelope()
    //System.out.println("\n***** TEST: .envelope()");
    //System.out.println("Envelope of the LineString is " +  line1.getEnvelope());

    // ***** getStartPoint();
    //System.out.println("\n***** TEST: .startPoint()");
    //System.out.println("StartPoint: " + line1.getStartPoint());
    assertEquals(line1.getStartPoint().getOrdinate(0) , -50.0);
    assertEquals(line1.getStartPoint().getOrdinate(1) , 0.0);

    // ***** getEndPoint();
    //System.out.println("\n***** TEST: .endPoint()");
    //System.out.println("EndPoint: " + line1.getEndPoint());
    assertEquals(line1.getEndPoint().getOrdinate(0) , 50.0);
    assertEquals(line1.getEndPoint().getOrdinate(1) , 0.0);
   
    // Set curve for further LineString tests
    ArrayList<CurveSegment> tLineList = new ArrayList<CurveSegment>();
    tLineList.add(line1);
   
    CurveImpl curve1 = tPrimFactory.createCurve(tLineList);
    line1.setCurve(curve1);
   
    // ***** length()
    //System.out.println("\n***** TEST: .length()");
    //System.out.println("Length of LineString is " + line1.length());
    assertEquals(14422, Math.round(line1.length() * 100));

    // ***** getStartParam();
    //System.out.println("\n***** TEST: .startParam()");
    //System.out.println("StartParam: " + line1.getStartParam());
    assertEquals(line1.getStartParam() , 0.0);

    // ***** getEndParam();
    //System.out.println("\n***** TEST: .endParam()");
    //System.out.println("EndParam: " + line1.getEndParam());
    assertEquals(14422, Math.round(line1.getEndParam() * 100));

    // ***** getStartConstructiveParam();
    //System.out.println("\n***** TEST: .startConstrParam()");
    //System.out.println("ConstrStartParam: " + line1.getStartConstructiveParam());
    assertEquals(line1.getStartConstructiveParam() , 0.0);
   
    // ***** getEndConstructiveParam();
    //System.out.println("\n***** TEST: .endConstrParam()");
    //System.out.println("ConstrEndParam: " + line1.getEndConstructiveParam());
    assertEquals(line1.getEndConstructiveParam() , 1.0);

   
   
    // Receive LineSegments from LineString
    List<LineSegment> segments = line1.asLineSegments();
    assertEquals(segments.size() , 4);

    LineSegment seg1 = segments.get(0);
    LineSegment seg2 = segments.get(1);
    LineSegment seg3 = segments.get(2);
    LineSegment seg4 = segments.get(3);

    //System.out.println("LineSegment: " + seg1); 
    //System.out.println("LineSegment: " + seg2); 

    // ***** LineSegment.getStartParam()
    //System.out.println(seg1.getStartParam());
    assertEquals(seg1.getStartParam() , 0.0);
   
    // ***** LineSegment.getEndParam()
    //System.out.println(seg1.getEndParam());
    assertEquals( 36, Math.round(seg1.getEndParam()) );

    //System.out.println(seg2.getStartParam());
    assertEquals( 36, Math.round(seg2.getStartParam()) );
   
    //System.out.println(seg2.getEndParam());
    assertEquals( 72, Math.round(seg2.getEndParam()) );
   
    // ***** LineSegment.getStartConstructiveParam()
    // ***** LineSegment.getEndConstructiveParam()
    //System.out.println(seg1.getStartConstructiveParam());
    assertEquals(seg1.getStartConstructiveParam() , 0.0);
    //System.out.println(seg1.getEndConstructiveParam());
    assertEquals(seg1.getEndConstructiveParam() , 0.25);
    assertEquals(segments.get(1).getStartConstructiveParam() , 0.25);
    assertEquals(segments.get(1).getEndConstructiveParam() , 0.50);
    assertEquals(segments.get(2).getStartConstructiveParam() , 0.50);
    assertEquals(segments.get(2).getEndConstructiveParam() , 0.75);
    assertEquals(segments.get(3).getStartConstructiveParam() , 0.75);
    assertEquals(segments.get(3).getEndConstructiveParam() , 1.0);


    // ***** LineSegment.forParam(double)
    // Parameter for forParam() is 0.0 (startparam)
    DirectPosition resultPos = seg1.forParam(0.0);
    //System.out.println(resultPos);
    assertEquals(resultPos.getOrdinate(0) , -50.0);
    assertEquals(resultPos.getOrdinate(1) , 0.0);

    // Parameter for forParam() is endparam
    resultPos = seg1.forParam(seg1.getEndParam());
    //System.out.println(resultPos);
    assertEquals(resultPos.getOrdinate(0) , -30.0);
    assertEquals(resultPos.getOrdinate(1) , 30.0);

    // Parameter for startParam out of param range
    resultPos = null;
    try {
      resultPos = seg1.forParam(180);
    } catch(IllegalArgumentException e) {
      // Shall throw exception
    }
    //System.out.println(resultPos);
    assertEquals(resultPos , null);

    resultPos = seg1.forParam(30);
    //System.out.println(resultPos);
   
    // ***** LineSegment.getControlPoints()
    assertEquals(seg1.getControlPoints().size() , 2);
   
    // ***** LineSegment.asLineSegments()
    assertEquals(seg2.asLineSegments().size() , 1);
   
    // ***** forParam(double distance)
    double[] dp = line1.forParam(0).getCoordinate();
    assertEquals( -50.0, dp[0] );
    assertEquals( 0.0, dp[1]);
   
    dp = line1.forParam(line1.length()).getCoordinate();
    assertEquals(50.0, dp[0]);
    assertEquals(0.0, dp[1]);
   
    dp = line1.forParam(seg1.getEndParam()).getCoordinate();
    assertEquals(-30.0, dp[0]);
    assertEquals(30.0, dp[1]);

    dp = line1.forParam(50).getCoordinate();
    ////System.out.println("forParam: " + dp[0] + "," + dp[1]);
    assertEquals(Math.round(dp[0]*1000) , -18397);
    assertEquals(Math.round(dp[1]*1000) , 37735);

    // ***** forConstructiveParam(double distance)
    dp = line1.forConstructiveParam(0.0).getCoordinate();
        assertEquals(-50.0, dp[0] );
        assertEquals(0.0, dp[1]);

    dp = line1.forConstructiveParam(1.0).getCoordinate();
        assertEquals(50.0, dp[0]);
        assertEquals(0.0, dp[1]);
   
    dp = line1.forConstructiveParam(50 / line1.length()).getCoordinate();
        assertEquals(Math.round(dp[0]*1000) , -18397);
        assertEquals(Math.round(dp[1]*1000) , 37735);

    // ***** getTangent(double distance)
    dp = line1.getTangent(0);
    ////System.out.println("tangent: " + dp[0] + "," + dp[1]);
        assertEquals(Math.round(dp[0]*1000) , -49445);
        assertEquals(Math.round(dp[1]*1000) , 832);

    dp = line1.getTangent(40);
        assertEquals(Math.round(dp[0]*100) , -2589);
        assertEquals(Math.round(dp[1]*100) , 3274);

    dp = line1.getTangent(line1.getEndParam());
    //System.out.println("tangent: " + dp[0] + "," + dp[1]);
        assertEquals(Math.round(dp[0]*100) , 5055);
        assertEquals(Math.round(dp[1]*100) , -83);
   
    // ***** merge(LineString)
    PositionImpl p6 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{8040}));
    PositionImpl p7 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{13060}));
    ArrayList<Position> positionList2 = new ArrayList<Position>();
    positionList2.add(p5);
    positionList2.add(p6);
    positionList2.add(p7);
    LineStringImpl line2 = tCoordFactory.createLineString(positionList2);
   
    LineStringImpl line3 = line1.merge(line2);
    //System.out.println("Line1: " + line1);
    //System.out.println("Line2: " + line2);
    //System.out.println("MergedLine: " + line3);
    // Lists of line1 and line2 are not modified
    assertEquals(line1.getControlPoints().size(), 5);
        assertEquals(line2.getControlPoints().size() , 3);
    // New LineString has combined positions
        assertEquals(line3.getControlPoints().size() , 7);
   
    line3 = line2.merge(line1);
    //System.out.println("MergedLine: " + line3);
    // Lists of line1 and line2 are not modified
        assertEquals(line1.getControlPoints().size() , 5);
        assertEquals(line2.getControlPoints().size() , 3);
    // New LineString has combined positions
        assertEquals(line3.getControlPoints().size() , 7);

    positionList2.remove(0);
    line3 =  null;
    try {
      line3 = line2.merge(line1);
    } catch (IllegalArgumentException e){
      // the exception shall be thrown, hence do nothing
    }
    // Merge of two not touching linestrings does not work
    // assertEquals( null, line3);
   
    // ***** getNumDerivatesAtStart()
        assertEquals(line1.getNumDerivativesAtStart() , 0);
    // ***** getNumDerivativesInterior()
        assertEquals(line1.getNumDerivativesInterior() , 0);
    // ***** getNumDerivativesAtEnd()
        assertEquals(line1.getNumDerivativesAtEnd() , 0);
   
    // ***** reverse()
    line1.reverse();
    // number of control points is unchanged
    PointArray controlPoints = line1.getControlPoints();
    assertEquals(controlPoints.size() , 5);
    // control points are in opposite order
    assertEquals(controlPoints.getDirectPosition(0, null), p5.getPosition());
    assertEquals(controlPoints.getDirectPosition(1, null), p4.getPosition());
    assertEquals(controlPoints.getDirectPosition(2, null), p3.getPosition());
    assertEquals(controlPoints.getDirectPosition(3, null), p2.getPosition());
    assertEquals(controlPoints.getDirectPosition(4, null), p1.getPosition());
    //System.out.println("Reversed. Line1: " + line1);
   
   
    // test more curvesegment methods using tLineList
    CurveSegmentImpl cseg = (CurveSegmentImpl) tLineList.get(0);
    assertNotNull(cseg.getBoundary());
    assertNotNull(cseg.getInterpolation());
    assertTrue(cseg.length(0,1) > 0);
    try {
      cseg.setCurve(null);
      fail()// should not get here
    }
    catch (IllegalArgumentException e) {
      // good
    }
   
    // test more linestringimpl methods
    //line1.split(1); broken?
    LineStringImpl newline = line1.asLineString(1, 1);
    assertNotNull(newline);
   
    // test toString
    String toS = newline.toString();
    assertTrue(toS != null);
    assertTrue(toS.length() > 0);
   
    // test obj equals
    assertTrue(newline.equals((Object) line1.asLineString(1, 1)));
    assertTrue(line1.equals((Object) line1));
    assertFalse(line1.equals((Object) controlPoints));
    assertFalse(line1.equals((Object) null));
    assertFalse(line1.equals(line1.asLineString(0.5, 0.5)));
  }
View Full Code Here


    PositionImpl p2 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{-3030}));
    PositionImpl p3 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{050}));
    PositionImpl p4 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{3030}));
    PositionImpl p5 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{500}));

    LineStringImpl line1 = null;
   
    ArrayList<Position> positionList = new ArrayList<Position>();
    positionList .add(p1);
    positionList.add(p2);
    positionList.add(p3);
    positionList.add(p4);
    positionList.add(p5);
    line1 = tCoordFactory.createLineString(positionList);

    /* Set parent curve for LineString */
    ArrayList<CurveSegment> tLineList = new ArrayList<CurveSegment>();
    tLineList.add(line1);

    // PrimitiveFactory.createCurve(List<CurveSegment>)
    CurveImpl curve1 = tPrimFactory.createCurve(tLineList);
    //System.out.println("\nCurve1: " + curve1);
   
    assertTrue(curve1.isCycle() == false);
   
    // Set curve for further LineString tests
    line1.setCurve(curve1);

    //System.out.println("\n*** TEST: Curve\n" + curve1);
   
    // ***** getStartPoint()
    //System.out.println("\n*** TEST: .getStartPoint()\n" + curve1.getStartPoint());
    assertTrue(curve1.getStartPoint().getOrdinate(0) == -50);
    assertTrue(curve1.getStartPoint().getOrdinate(1) == 0);
   
    // ***** getEndPoint()
    //System.out.println("\n*** TEST: .getEndPoint()\n" + curve1.getEndPoint());
    assertTrue(curve1.getEndPoint().getOrdinate(0) == 50);
    assertTrue(curve1.getEndPoint().getOrdinate(1) == 0);

    // ***** getStartParam()
    //System.out.println("\n*** TEST: .getStartParam()\n" + curve1.getStartParam());
    assertTrue(curve1.getStartParam() == 0.0);

    // ***** getEndParam()
    //System.out.println("\n*** TEST: .getEndParam()\n" + curve1.getEndParam());
    assertTrue(Math.round(line1.getEndParam()) == 144.0);

    // ***** getStartConstructiveParam()
    //System.out.println("\n*** TEST: .getStartConstructiveParam()\n" + curve1.getStartConstructiveParam());
    assertTrue(curve1.getStartConstructiveParam() == 0.0);

View Full Code Here

    // the following length uses getParamForPoint and it's not fully implemented yet)
    //double e = curve.length(positionA, positionB);
    //System.out.println(e);
   
    // test asLineString
    LineStringImpl linestring = curve.asLineString();
    List<Position> posList = new ArrayList<Position>();
    posList.add(positionA);
    posList.add(positionB);
    assertTrue(linestring.equals(new LineStringImpl(posList)));
   
    // test getDimension
    assertEquals(curve.getDimension(positionA), 1);
   
    // test toString
View Full Code Here

    PositionImpl p2 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{-3030}));
    PositionImpl p3 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{050}));
    PositionImpl p4 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{3030}));
    PositionImpl p5 = new PositionImpl(tCoordFactory.createDirectPosition(new double[]{500}));

    LineStringImpl line1 = null;
   
    ArrayList<Position> positionList = new ArrayList<Position>();
    positionList .add(p1);
    positionList.add(p2);
    positionList.add(p3);
    positionList.add(p4);
    positionList.add(p5);
    line1 = tCoordFactory.createLineString(positionList);

    /* Set parent curve for LineString */
    ArrayList<CurveSegment> tLineList = new ArrayList<CurveSegment>();
    tLineList.add(line1);

    // PrimitiveFactory.createCurve(List<CurveSegment>)
    CurveImpl curve1 = tPrimFactory.createCurve(tLineList);
    //System.out.println("\nCurve1: " + curve1);
   
    assertTrue(curve1.isCycle() == false);
   
    // Set curve for further LineString tests
    line1.setCurve(curve1);

    //System.out.println("\n*** TEST: Curve\n" + curve1);
   
    // ***** getStartPoint()
    //System.out.println("\n*** TEST: .getStartPoint()\n" + curve1.getStartPoint());
    assertTrue(curve1.getStartPoint().getOrdinate(0) == -50);
    assertTrue(curve1.getStartPoint().getOrdinate(1) == 0);
   
    // ***** getEndPoint()
    //System.out.println("\n*** TEST: .getEndPoint()\n" + curve1.getEndPoint());
    assertTrue(curve1.getEndPoint().getOrdinate(0) == 50);
    assertTrue(curve1.getEndPoint().getOrdinate(1) == 0);

    // ***** getStartParam()
    //System.out.println("\n*** TEST: .getStartParam()\n" + curve1.getStartParam());
    assertTrue(curve1.getStartParam() == 0.0);

    // ***** getEndParam()
    //System.out.println("\n*** TEST: .getEndParam()\n" + curve1.getEndParam());
    assertTrue(Math.round(line1.getEndParam()) == 144.0);

    // ***** getStartConstructiveParam()
    //System.out.println("\n*** TEST: .getStartConstructiveParam()\n" + curve1.getStartConstructiveParam());
    assertTrue(curve1.getStartConstructiveParam() == 0.0);

View Full Code Here

    List<Primitive> primitives = this.getElements();
    if (primitives == null || primitives.isEmpty())
      return null;
    // JR error: parameter maxSpacing and maxOffset were not passed
    LineStringImpl result = ((CurveImpl) primitives.get(0)).asLineString(
        maxSpacing, maxOffset);
    for (int i = 1; i < primitives.size(); ++i) {
      CurveImpl curve = ((CurveImpl) primitives.get(i));
      result = result.merge(curve.asLineString(maxSpacing, maxOffset));
    }
    return result;

  }
View Full Code Here

      Edge e = (Edge) it.next();
      Label label = e.getLabel();

            List<Position> positions = CoordinateArrays.toPositionList(crs, e
                    .getCoordinates());
      LineString line = new LineStringImpl(new PointArrayImpl( positions ), 0.0); //coordinateFactory.createLineString( positions );         
      LinkedList<CurveSegment> tLineStrings = new LinkedList<CurveSegment>();
      tLineStrings.add((CurveSegment) line);
      CurveImpl curve = new CurveImpl(crs, (List<CurveSegment>) tLineStrings); //primitiveFactory.createCurve((List<CurveSegment>) tLineStrings);
      resultLineList.add(curve);
      e.setInResult(true);
View Full Code Here

      }
    }   
    positionList.add(curves.get(curves.size()-1).getEndPoint());
   
    // Create List of CurveSegment´s (LineString´s)
    LineStringImpl lineString = new LineStringImpl(new PointArrayImpl(positionList), 0.0);
    // LineStringImpl lineString =
    // coordFactory.createLineString(aPositions);
    List<CurveSegment> segments = new ArrayList<CurveSegment>();
    segments.add(lineString);
   
View Full Code Here

      Position dp = new PositionImpl( new DirectPositionImpl(crs, doubleCoords) );
      dpList.add(dp);
    }
   
    // Create List of CurveSegment´s (LineString´s)
    LineStringImpl lineString = new LineStringImpl(new PointArrayImpl(
        dpList), 0.0);
    List<CurveSegment> segments = new ArrayList<CurveSegment>();
    segments.add(lineString);
   
    // Create List of OrientableCurve´s (Curve´s)
View Full Code Here

      while (tCurveSegmentIter.hasNext()) {
        tSegment = tCurveSegmentIter.next();

        // TODO: This version only handles the CurveSegment type
        // LineString
        LineStringImpl tLineString = (LineStringImpl) tSegment;

        Iterator<LineSegment> tLineSegmentIter = tLineString
            .asLineSegments().iterator();
        while (tLineSegmentIter.hasNext()) {
          LineSegment tLineSegment = tLineSegmentIter.next();
          // Add new Coordinate, which is the start point of the
          // actual LineSegment
View Full Code Here

    List<Position> positionList = createPositions(aDirectPositions);
    // List<Position> positionList =
    // coordFactory.createPositions(aDirectPositions);

    // Create List of CurveSegment´s (LineString´s)
    LineStringImpl lineString = new LineStringImpl(new PointArrayImpl(
        positionList), 0.0);
    // LineStringImpl lineString =
    // coordFactory.createLineString(aPositions);
    List<CurveSegment> segments = new ArrayList<CurveSegment>();
    segments.add(lineString);
View Full Code Here

TOP

Related Classes of org.geotools.geometry.iso.coordinate.LineStringImpl

Copyright © 2018 www.massapicom. 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.