English

Problem: Intersect count differs between ARC INTERSECTERR and ARCEDIT DRAWENVIRONMENT ARC INTERSECT

Description

The intersection count between the ARC INTERSECTERR and the ARCEDIT DRAWENVIRONMENT ARC INTERSECT commands disagree.

Cause

When there is a common, non-node vertex at the intersection of two line segments, the ARC INTERSECTERR command does not report any intersections, while ARCEDIT shows one intersection location.

The ARC BUILD command converts the non-node vertex to a node. The ARCEDIT BUILD command sees the non-node vertex as a potential problem and flags it with a square maker.

Solution or Workaround

The following examples show how the ARC INTERSECTERR and ARCEDIT DRAWENVIRONMENT ARC INTERSECT commands handle non-node vertices.

  • Two 2-point arcs intersect.

    Both ARC INTERSECTERR and ARCEDIT DRAWENVIRONMENT ARC INTERSECT report one intersection at the crossing point.

    BUILD POLY will fail on this coverage. Use CLEAN instead.

    O (5,5)
    |
    |
    (0,0) O-----------O (10,0)
    |
    |
    O (5,-5)
    The two arcs with beginning and ending nodes cross each other at their mid points. There are no intermediate vertices.

    Run the following AML to create a test coverage to illustrate the results of the ARC INTERSECTERR command and ARCEDIT DE ARC INTERSECT for this example.

    Code:
    /*Create the test coverage
    GENERATE c
    lines
    1
    0,0
    10,0
    end
    2
    5,-5
    5,5
    end
    end
    quit
    /* Build the test coverage
    BUILD c line
    INTERSECTERR c
    /*Run DE ARC INTERSECT In ArcEdit
    ARCEDIT
    DISPLAY 9999
    Edit c
    de all
    draw
    de arc intersect
    draw
    &return

    One intersection is returned by the ARC INTERSECTERR command. ARCEDIT draws a square marker at the intersection.
  • Two 3-point arcs intersecting at a common vertex.

    ARC INTERSECTERR does not report any errors since BUILD for polygons runs successfully. The ARCEDIT DRAWENVIRONMENT ARC INTERSECT command flags the intersection for editing prior to running BUILD POLY.

    O (5,5)
    |
    |
    (0,0) O-----*-----O (10,0)
    |
    |
    O (5,-5)

    This is the same as the previous example, except the lines now share a vertex at the crossing point (5,0). There is a vertex, not a node at(5,0).

    ARC INTERSECTERR returns zero intersections. ARCEDIT reports one intersection location at (5,0).
    Run the following AML to create a test coverage to illustrate the results of the ARC INTERSECTERR command and ARCEDIT DRAWENVIRONMENT ARC INTERSECT for this example.

    Code:
    GENERATE c2
    lines
    1
    0,0
    5,0
    10,0
    end
    2
    5,-5
    5,0
    5,5
    end
    end
    quit
    build c2 line
    ARCEDIT
    DISPLAY 9999
    EDIT c2
    DE ALL
    DRAW
    DE ARC INTERSECT
    DRAW
    &return


    Before running BUILD POLY, we have only 4 nodes in coverage C2, and a common
    vertex at (5,0). BUILD POLY converts the vertex to a node.

    Code:
    ARC: build c3 poly
    Building polygons...
    Re-building AAT...
    ARC: list c3.nat
    Record ARC# C3# C3-ID
    1 1 1 1
    2 2 2 2
    3 1 3 0
    4 3 4 3
    5 4 5 4

    Now there are 5 nodes. The vertex at the intersection point (5,0) is automatically converted to a node and the coverage builds successfully.

    Code:
    ARC: list c3.aat
    Record FNODE# TNODE# LPOLY# RPOLY# LENGTH C3# C3-ID
    1 3 1 1 1 5.000 1 2
    2 2 3 1 1 5.000 2 1
    3 3 4 1 1 5.000 3 1
    4 5 3 1 1 5.000 4 2