Lady_Jane

Why is SplitLineAtPoint failing?

Discussion created by Lady_Jane on Apr 15, 2011
Latest reply on Apr 15, 2011 by Hornbydd
Hi everyone,
I am trying to use IPolycurve.QueryPointAndDistance to get the distance from the curve start to the location of a dam on a river.
The problem I encountered is that this seems to query existing vertices on the river, so if the particular segment has only a start and end point (and no vertex near the dam location), the distance to the dam will always be 0.
In order to get around this I am using IProximityOperator.ReturnNearestPoint to find the point on the river closest to the dam, and then using IPolycurve.SplitAtPoint to create a vertex at that point. Once that vertex is in place, QueryPointAndDistance should be able to measure the distance to that vertex.
Now, the SplitAtPoint method has a boolean output called SplitHappened and this is set to "True" when the split is successful.

I am running through this loop for 5 different dams. For the first one, SplitHappened is set to "False" and the distance to the dam is 0. But for the other 4 dams, SplitHappened is set to "True". I don't know what could be changing between the first iteration and the others to cause this difference.

Any comments will be appreciated

    
    'Create a point on the river nearest the dam
    Dim pProxOp As IProximityOperator
    Set pProxOp = pRiver ' <--- pRiver is an IFeature
    Dim pDamPoint As IPoint
    Set pDamPoint = pProxOp.ReturnNearestPoint(pDam, esriNoExtension) '<-- pDam is an IFeature
   
    'Create a vertex in the river at that point
    Dim PartIndex As Long
    Dim SegIndex As Long
    Dim SplitHap As Boolean
    pRiver.SplitAtPoint pDamPoint, True, False, SplitHap, PartIndex, SegIndex
   
    Debug.Print SplitHap ' <-- This comes up "False" the first time, and "True" all other times
    'Find the distance to the point
    Dim DistToDam As Double
    Dim NearDist As Double
    Dim Length As Double
    Dim pDamPoint2 As IPoint
    Set pDamPoint2 = New Point
    Dim Right As Boolean
    pRiver.QueryPointAndDistance esriNoExtension, pDam, False, pDamPoint2, DistToDam, NearDist, Right

Outcomes