<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Why is SplitLineAtPoint failing? in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628308#M16934</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; The other 4 dams still work.&amp;nbsp; So it is definitely related to that particular dam/river segment and not to the fact that it is the first time through the loop.&lt;BR /&gt;Any other ideas?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Validate/simplify the geometry before you you attempt to split it.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 15 Apr 2011 16:31:15 GMT</pubDate>
    <dc:creator>JakubSisak</dc:creator>
    <dc:date>2011-04-15T16:31:15Z</dc:date>
    <item>
      <title>Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628304#M16930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi everyone,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am trying to use IPolycurve.QueryPointAndDistance to get the distance from the curve start to the location of a dam on a river.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Now, the SplitAtPoint method has a boolean output called SplitHappened and this is set to "True" when the split is successful.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;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.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any comments will be appreciated&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Create a point on the river nearest the dam
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pProxOp As IProximityOperator
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pProxOp = pRiver ' &amp;lt;--- pRiver is an IFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pDamPoint As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pDamPoint = pProxOp.ReturnNearestPoint(pDam, esriNoExtension) '&amp;lt;-- pDam is an IFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Create a vertex in the river at that point
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim PartIndex As Long
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim SegIndex As Long
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim SplitHap As Boolean
&amp;nbsp;&amp;nbsp;&amp;nbsp; pRiver.SplitAtPoint pDamPoint, True, False, SplitHap, PartIndex, SegIndex
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print SplitHap ' &amp;lt;-- This comes up "False" the first time, and "True" all other times
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Find the distance to the point
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim DistToDam As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim NearDist As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Length As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pDamPoint2 As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pDamPoint2 = New Point
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Right As Boolean
&amp;nbsp;&amp;nbsp;&amp;nbsp; pRiver.QueryPointAndDistance esriNoExtension, pDam, False, pDamPoint2, DistToDam, NearDist, Right&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 16:43:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628304#M16930</guid>
      <dc:creator>LornaMurison</dc:creator>
      <dc:date>2021-12-12T16:43:07Z</dc:date>
    </item>
    <item>
      <title>Re: Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628305#M16931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;So you are saying the first time it enters the loop it says false and does not do the split but the next 4 dams do split their respective polylines? May be the issue is with the polyline for the first split, may be it's multipart?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Duncan&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Apr 2011 16:01:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628305#M16931</guid>
      <dc:creator>DuncanHornby</dc:creator>
      <dc:date>2011-04-15T16:01:08Z</dc:date>
    </item>
    <item>
      <title>Re: Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628306#M16932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;So you are saying the first time it enters the loop it says false and does not do the split but the next 4 dams do split their respective polylines? May be the issue is with the polyline for the first split, may be it's multipart?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;That is exactly what I'm saying.&amp;nbsp; I just converted it to multipart and ran the code again, but it gives me the same result.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I deleted the first dam and ran it again.&amp;nbsp; The other 4 dams still work.&amp;nbsp; So it is definitely related to that particular dam/river segment and not to the fact that it is the first time through the loop.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any other ideas?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Apr 2011 16:29:14 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628306#M16932</guid>
      <dc:creator>LornaMurison</dc:creator>
      <dc:date>2011-04-15T16:29:14Z</dc:date>
    </item>
    <item>
      <title>Re: Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628307#M16933</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Can you post the rest of the code?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I suspect you stepped through it and monitored all variables and parameters the first time around to make sure all is kosher?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is the first incoming geometry simple?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Apr 2011 16:29:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628307#M16933</guid>
      <dc:creator>JakubSisak</dc:creator>
      <dc:date>2011-04-15T16:29:29Z</dc:date>
    </item>
    <item>
      <title>Re: Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628308#M16934</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt; The other 4 dams still work.&amp;nbsp; So it is definitely related to that particular dam/river segment and not to the fact that it is the first time through the loop.&lt;BR /&gt;Any other ideas?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Validate/simplify the geometry before you you attempt to split it.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Apr 2011 16:31:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628308#M16934</guid>
      <dc:creator>JakubSisak</dc:creator>
      <dc:date>2011-04-15T16:31:15Z</dc:date>
    </item>
    <item>
      <title>Re: Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628309#M16935</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Here is the full code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have stepped through it several times and identified areas where I was setting variables inside instead of outside loops and things like that, but I can't see any more of those issues.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your help &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;Private Sub Downstream_Click()

'Get each of the three layers and feature classes (Rivers, Dams, and CSL)
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument

Dim pMap As IMap
Set pMap = pMxDoc.FocusMap

Dim pActiveView As IActiveView
Set pActiveView = pMxDoc.ActiveView

Dim pRiversL As IFeatureLayer
Set pRiversL = pMap.Layer(0) 'Rivers
Dim pRiversFC As IFeatureClass
Set pRiversFC = pRiversL.FeatureClass

Dim pDamsL As IFeatureLayer
Set pDamsL = pMap.Layer(1) 'Dams
Dim pDamsFC As IFeatureClass
Set pDamsFC = pDamsL.FeatureClass

Dim pCSLL As IFeatureLayer
Set pCSLL = pMap.Layer(2) 'CSL
Dim pCSLFC As IFeatureClass
Set pCSLFC = pCSLL.FeatureClass

'Begin looping through the Dams
Dim pDamCursor As IFeatureCursor
Set pDamCursor = pDamsFC.Search(Nothing, False)

Dim pDamF As IFeature
Set pDamF = pDamCursor.NextFeature

Dim DamNumber As Integer
DamNumber = 0
Do Until pDamF Is Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp; DamNumber = DamNumber + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Beginning Dam Number " &amp;amp; DamNumber &amp;amp; "..."

&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Find the river segment that intersects with the dam
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pDam As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pDam = pDamF.Shape
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pTopoOp As ITopologicalOperator
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pTopoOp = pDam
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim BufferPoly As IPolygon
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set BufferPoly = pTopoOp.Buffer(pMxDoc.SearchTolerance)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSF As ISpatialFilter
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pSF = New SpatialFilter
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; With pSF
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set .Geometry = BufferPoly
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .GeometryField = "Shape"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SpatialRel = esriSpatialRelIndexIntersects
&amp;nbsp;&amp;nbsp;&amp;nbsp; End With
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pRivCursor As IFeatureCursor
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pRivCursor = pRiversFC.Search(pSF, False)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pRiverF As IFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pRiverF = pRivCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Get the length of the current segment
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pRiver As IPolycurve
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pRiver = pRiverF.Shape
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim RiverLength As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; RiverLength = pRiver.Length
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Create a point on the river nearest the dam
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pProxOp As IProximityOperator
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pProxOp = pRiver
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pDamPoint As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pDamPoint = pProxOp.ReturnNearestPoint(pDam, esriNoExtension)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Create a vertex in the river at that point
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim PartIndex As Long
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim SegIndex As Long
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim SplitHap As Boolean
&amp;nbsp;&amp;nbsp;&amp;nbsp; pRiver.SplitAtPoint pDamPoint, True, False, SplitHap, PartIndex, SegIndex
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print SplitHap
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Find the distance to the point
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim DistToDam As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim NearDist As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Length As Double
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pDamPoint2 As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pDamPoint2 = New Point
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Right As Boolean
&amp;nbsp;&amp;nbsp;&amp;nbsp; pRiver.QueryPointAndDistance esriNoExtension, pDam, False, pDamPoint2, DistToDam, NearDist, Right

&amp;nbsp;&amp;nbsp;&amp;nbsp; Length = RiverLength - DistToDam
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Distance to Dam #" &amp;amp; DamNumber &amp;amp; ": " &amp;amp; DistToDam
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pRiverSeg As IPolycurve
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pRiverSeg = pRiver
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pNextRiver As IPolyline
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pNextFromPoint As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pNextToPoint As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pToPoint As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim LoopCount1 As Integer
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pTopoOpUnion As ITopologicalOperator
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pTopoOpUnion = pRiverSeg
&amp;nbsp;&amp;nbsp;&amp;nbsp; LoopCount1 = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Keep going until length of segments downstream of the dam is greater than 500m
&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until Length &amp;gt;= 500
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LoopCount1 = LoopCount1 + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Finding downstream segments, Iteration # " &amp;amp; LoopCount1 &amp;amp; "..."
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If LoopCount1 = 1 Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pToPoint = pRiver.ToPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf LoopCount1 &amp;gt; 1 Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Do Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Find segments that intersect with the last segment's to-point
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pTopoOp = pToPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set BufferPoly = pTopoOp.Buffer(pMxDoc.SearchTolerance)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With pSF
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set .Geometry = BufferPoly
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .GeometryField = "Shape"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SpatialRel = esriSpatialRelIndexIntersects
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End With
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pNextCursor As IFeatureCursor
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pNextCursor = pRiversFC.Search(pSF, False)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pNextRiverF As IFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pNextRiverF = pNextCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until pNextRiverF Is Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Get the geometry attributes of the intersecting segment
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pNextRiver = pNextRiverF.Shape
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pNextFromPoint = pNextRiver.FromPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pNextToPoint = pNextRiver.ToPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Find out if the intersecting segment is the next downstream segment
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Round(pToPoint.X, 5) = Round(pNextFromPoint.X, 5) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Round(pToPoint.Y, 5) = Round(pNextFromPoint.Y, 5) Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Downstream segment found"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Length = Length + pNextRiver.Length 'And add the length of the downstream segment to the total
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pRiverSeg = pTopoOpUnion.Union(pNextRiver)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'pRiverSeg should now contain the entire length of river
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pToPoint = pNextRiver.ToPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Total length: " &amp;amp; pRiverSeg.Length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Length downstream from dam: " &amp;amp; Length
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Do nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Do nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pNextRiverF = pNextCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Downstream segment confirmed"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Downstream segments compiled to be at least 500 metres"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Get the Subcurve
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pSubCurve As IPolycurve
&amp;nbsp;&amp;nbsp;&amp;nbsp; pRiverSeg.GetSubcurve DistToDam, DistToDam + 500, False, pSubCurve
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Select any CSL that intersects with the Subcurve (This curve starts at the dam and extends 500 metres downstream)
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pFeatureSelection As IFeatureSelection
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pFeatureSelection = pCSLL
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pTopoOp = pSubCurve
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set BufferPoly = pTopoOp.Buffer(pMxDoc.SearchTolerance)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; With pSF
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set .Geometry = BufferPoly
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .GeometryField = "Shape"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .SpatialRel = esriSpatialRelIndexIntersects
&amp;nbsp;&amp;nbsp;&amp;nbsp; End With
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Searching for CSL intersecting with 500 metre downstream segment..."
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pCSLCursor As IFeatureCursor
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pCSLCursor = pCSLFC.Search(pSF, False)
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pCSLF As IFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pCSLF = pCSLCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim LoopCount As Integer
&amp;nbsp;&amp;nbsp;&amp;nbsp; LoopCount = 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim Query As String
&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until pCSLF Is Nothing 'All of these are CSL intersecting with the Subcurve
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LoopCount = LoopCount + 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print "Found downstream CSL # " &amp;amp; LoopCount
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pCSL As IPoint
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pCSL = pCSLF.Shape

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If LoopCount = 1 Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Query = "OBJECTID = " &amp;amp; pCSLF.OID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ElseIf LoopCount &amp;gt; 1 Then
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Query = Query &amp;amp; " OR OBJECTID = " &amp;amp; pCSLF.OID
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pCSLF = pCSLCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print LoopCount &amp;amp; " Downstream CSL found"
&amp;nbsp;&amp;nbsp;&amp;nbsp; If LoopCount &amp;gt; 0 Then 'Only perform the selection if intersecting CSL were found
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pQueryFilter As IQueryFilter
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pQueryFilter = New QueryFilter
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pQueryFilter.WhereClause = Query
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFeatureSelection.SelectFeatures pQueryFilter, esriSelectionResultAdd, False
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print LoopCount &amp;amp; " Downstream CSL selected"
&amp;nbsp;&amp;nbsp;&amp;nbsp; Else:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Do Nothing
&amp;nbsp;&amp;nbsp;&amp;nbsp; End If
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; Set pDamF = pDamCursor.NextFeature
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print " "
&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.Print " "
Loop

Debug.Print "completed downstream CSL selection for " &amp;amp; DamNumber &amp;amp; " dams"
pActiveView.Refresh
MsgBox "Done!"
End Sub&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 02:45:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628309#M16935</guid>
      <dc:creator>LornaMurison</dc:creator>
      <dc:date>2021-12-12T02:45:32Z</dc:date>
    </item>
    <item>
      <title>Re: Why is SplitLineAtPoint failing?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628310#M16936</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Lorna,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Try setting your spatialfilter &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;SpatialRel&lt;/SPAN&gt;&lt;SPAN&gt; property to &lt;/SPAN&gt;&lt;STRONG&gt;esriSpatialRelIntersects&lt;/STRONG&gt;&lt;SPAN&gt;?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Duncan&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Apr 2011 23:15:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/why-is-splitlineatpoint-failing/m-p/628310#M16936</guid>
      <dc:creator>DuncanHornby</dc:creator>
      <dc:date>2011-04-15T23:15:49Z</dc:date>
    </item>
  </channel>
</rss>

