1. 程式人生 > >線上到指定點的距離最小的一點

線上到指定點的距離最小的一點

在ArcEngine中可以通過兩種方式實現:

第一種:由ICurve和IPolyline介面的QueryPointAndDistance方法實現。  

           該方法中有七個引數,下面對這些引數進行詳細說明:

          1.extension引數:esriSegmentExtension列舉型別,用於指定曲線段延伸的方式,主要有esriNoExtension(曲線段不做延伸)、esriExtendTangents等。延                   伸方式。(using ESRI.ArcGIS.Geometry, 已知)

          2. inPoint引數:指輸入點物件,IPoint型別,即要求該點到曲線的最短距離;(已知)

          3. asRatio引數:bool型別,指定從改方法得到的distanceAlongCurve引數(見後)的值是以佔曲線總長度的比例的方式輸出還是以絕對長度值輸出;
          4. outPoint引數:輸出點物件, IPoint型別,即所找到的曲線上到輸入點距離最小的點,使用前只需先例項化;(未知,求得)
          5. distanceAlongCurve引數:double型別,指曲線的FromPoint(起始點)到輸出點(outPoint)的曲線長度,asRatio引數將影響改值的輸出方式(比例還是絕對長度值);(未知,求得)
          6. distanceFromCurve引數:double型別,指輸入點到曲線的最短距離;(未知,求得)

          7.bRightSide引數:bool型別,指輸入點是否在曲線的右方。

         程式碼示例(C#):
          IPolyline i_poly = ... ;//已知曲線
          IPoint inPoint = ...; //已知點
          IPoint outPoint = new PointClass(); //曲線上到輸入點距離最小的點;
          double distAlongCurveFrom = 0; //曲線其實點到輸出點部分的長度
          double distFromCurve = 0;//輸出點到輸入點的距離
          bool isRightSide = false;//輸入點是否在曲線的右邊
          i_poly.QueryPointAndDistance(esriSegmentExtension.esriNoExtension, inPoint, false, outPoint, ref distAlongCurveFrom, ref distFromCurve, ref isRightSide); 第二種:
由介面IProximityOperator的ReturnNearestPoint方法實現。  

           該方法中有兩個引數,下面對這些引數進行詳細說明:

          1. IPoint引數:指輸入點物件,IPoint型別,即要求該點到曲線的最短距離;

          2. esriSegmentExtension引數:esriSegmentExtension型別;           程式碼示例(C#):

          IPolyline pPolyline = ...;
          IProximityOperator proOperator = pPolyline as IProximityOperator;
          position = proOperator.ReturnNearestPoint(clickPoint, esriSegmentExtension.esriNoExtension);