ArcEngine獲取曲線上任意兩點間的距離

我們常常需要計算某個線狀幾何要素(可以是直線Iline,IpolyLine,也可以是曲線Icurve,Iring)上任意兩點間的距離。對於直線而言我們只需要用兩點間直線距離公式就可以得到,但是對於曲線來說在Ae中沒有提供直接獲取的方法和屬性。本人在實驗後找到了可以求得曲線上任意一兩點距離的方法,和大家分享,希望共同提高。

        方法一:
        在AE中有個方法QueryPointAndDistance(Icurve爲例),通過這個方法我們可以獲取空間上一點到曲線上最近的點的位置和據起點的距離。這樣我們就可以利用這個方法將空間上的點轉移到我們要求得的兩點間距離的兩個點上,也就是將曲線上求距離的兩個點看作是空間上任意兩個點。通過QueryPointAndDistance方法求得在曲線上與這兩個點最近的兩個點與兩個據起點的距離。
        *注意*:實際上我們獲取的最近的兩個點實際上就是要求得距離的兩個點本身。
         假設曲線上兩點位PtA,PtB 那麼通過計算得到的兩個距離就是DisPtA和DisPtB。
         用DisPtA - DisPtB 就是我們要獲取的曲線上兩點間距離。
 
    Dim outpt1 As IPoint
    Set outpt1 = New Point
    Dim disalong1 As Double
    Dim dis1 As Double
    pcurve.QueryPointAndDistance esriExtendTangentAtFrom, pt1, False, outpt1, disalong1, dis1, False
    
    Dim outpt2 As IPoint
    Set outpt2 = New Point
    Dim disalong2 As Double
    Dim dis2 As Double
    pcurve.QueryPointAndDistance esriExtendTangentAtFrom, pt2, False, outpt2, disalong2, dis2, False
    ''曲線兩點間距離
   resultDis=disalong2-disalong2 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章