IProximityOperator 인터페이스는 두 Geometry간의 거리를 계산하거나 주어진 포인트로부터 다른 Geometry의 가장 가까운 포인트나 가장 가까운 포인트간의 거리를 계산하는데 사용한다.
▣ CoClasses that implement IProximityOperator
IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass();
IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass();
fromPoint.PutCoords(0, 0);
toPoint.PutCoords(0, 10);
ILine lineSeg = new ESRI.ArcGIS.Geometry.LineClass();
lineSeg.PutCoords(fromPoint, toPoint);
IPoint origPoint = new ESRI.ArcGIS.Geometry.PointClass();
origPoint.PutCoords(10, 5);
IProximityOperator proxOpt = (IProximityOperator)lineSeg;
IPoint nearestPoint = new ESRI.ArcGIS.Geometry.PointClass();
proxOpt.QueryNearestPoint(origPoint, esriSegmentExtension.esriNoExtension, nearestPoint);
[/code]
② ReturnNearestPoint
주어진 포인트에서 대상 Geometry간의 가장 가까운 포인트를 검색한 후 생성/반환한다. segment extension 옵션에 의해 가장 가까운 포인트는 Geometry의 extension을 통해서 계산될 수 있다.
- BezierCurve, CircularArc, EllipticArc, Envelope, Line, Multipoint, Point, Polygon, Polyline
- esriDefenseSolutions: GeoEllipse, GeoPolygon, GeoPolyline
- esriDefenseSolutions: GeoEllipse, GeoPolygon, GeoPolyline
▣ Members
① QueryNearestPoint
주어진 포인트에서 대상 Geometry간의 가장 가까운 포인트를 쿼리(copy)한다. segment extension 옵션에 의해 가장 가까운 포인트는 Geometry의 extension을 이용해서도 계산될 수 있다.
① QueryNearestPoint
주어진 포인트에서 대상 Geometry간의 가장 가까운 포인트를 쿼리(copy)한다. segment extension 옵션에 의해 가장 가까운 포인트는 Geometry의 extension을 이용해서도 계산될 수 있다.
다음 코드에서와 같이 QuerynearestPoint를 호출하기 위해서 InputPoint(nearest Point)는 반드시 호출하기 전에 할당할 것.
[C#]public void QueryNearestPoint (IPoint p, esriSegmentExtension extension, IPoint nearest);
[code c#]IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass();
IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass();
fromPoint.PutCoords(0, 0);
toPoint.PutCoords(0, 10);
ILine lineSeg = new ESRI.ArcGIS.Geometry.LineClass();
lineSeg.PutCoords(fromPoint, toPoint);
IPoint origPoint = new ESRI.ArcGIS.Geometry.PointClass();
origPoint.PutCoords(10, 5);
IProximityOperator proxOpt = (IProximityOperator)lineSeg;
IPoint nearestPoint = new ESRI.ArcGIS.Geometry.PointClass();
proxOpt.QueryNearestPoint(origPoint, esriSegmentExtension.esriNoExtension, nearestPoint);
[/code]
② ReturnNearestPoint
주어진 포인트에서 대상 Geometry간의 가장 가까운 포인트를 검색한 후 생성/반환한다. segment extension 옵션에 의해 가장 가까운 포인트는 Geometry의 extension을 통해서 계산될 수 있다.
[C#]public IPoint ReturnNearestPoint(IPoint p, esriSegmentExtension extension);
[code c#]
IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass();
IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass();
fromPoint.PutCoords(0, 0);
toPoint.PutCoords(0, 10);
ILine lineSeg = new ESRI.ArcGIS.Geometry.LineClass();
lineSeg.PutCoords(fromPoint, toPoint);
IPoint origPoint = new ESRI.ArcGIS.Geometry.PointClass();
origPoint.PutCoords(10, 5);
IProximityOperator proxOpt = (IProximityOperator)lineSeg;
IPoint nearestPoint = proxOpt.ReturnNearestPoint(origPoint, esriSegmentExtension.esriNoExtension);
[/code]
③ ReturnDistance
두 Geometry간의 최단거리를 반환한다. 두 Geometry가 intersect 관계이면 거리는 0이다.
최단거리만 반환하는 메쏘드이다.
IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass();
IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass();
fromPoint.PutCoords(0, 0);
toPoint.PutCoords(0, 10);
ILine lineSeg = new ESRI.ArcGIS.Geometry.LineClass();
lineSeg.PutCoords(fromPoint, toPoint);
IPoint origPoint = new ESRI.ArcGIS.Geometry.PointClass();
origPoint.PutCoords(10, 5);
IProximityOperator proxOpt = (IProximityOperator)lineSeg;
IPoint nearestPoint = proxOpt.ReturnNearestPoint(origPoint, esriSegmentExtension.esriNoExtension);
[/code]
③ ReturnDistance
두 Geometry간의 최단거리를 반환한다. 두 Geometry가 intersect 관계이면 거리는 0이다.
최단거리만 반환하는 메쏘드이다.
[C#]public double ReturnDistance (IGeometry other);
[code c#]
IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass();
IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass();
fromPoint.PutCoords(0, 0);
toPoint.PutCoords(0, 10);
ILine lineSeg = new ESRI.ArcGIS.Geometry.LineClass();
lineSeg.PutCoords(fromPoint, toPoint);
IPoint origPoint = new ESRI.ArcGIS.Geometry.PointClass();
origPoint.PutCoords(10, 5);
IProximityOperator proxOpt = (IProximityOperator)lineSeg;
double pointDist = proxOpt.ReturnDistance(origPoint);
[/code]
※ esriSegmentExtension Constants
IPoint fromPoint = new ESRI.ArcGIS.Geometry.PointClass();
IPoint toPoint = new ESRI.ArcGIS.Geometry.PointClass();
fromPoint.PutCoords(0, 0);
toPoint.PutCoords(0, 10);
ILine lineSeg = new ESRI.ArcGIS.Geometry.LineClass();
lineSeg.PutCoords(fromPoint, toPoint);
IPoint origPoint = new ESRI.ArcGIS.Geometry.PointClass();
origPoint.PutCoords(10, 5);
IProximityOperator proxOpt = (IProximityOperator)lineSeg;
double pointDist = proxOpt.ReturnDistance(origPoint);
[/code]
※ esriSegmentExtension Constants
esriSegmentExtension에 대한 내용은 다음 그림을 참조하면 된다. Geometry상에서의 거리나 최단거리 포인트를 얻고자 할 경우에는 esriNoExtension을 사용하고 특히, esriExtend*는 시작/끝점에서의 확장을 통해 최단거리 포인트 등을 얻을 수 있다.
※ 원문출처: http://resources.esri.com/help/9.3/ArcGISEngine/ArcObjects/esrigeometry/iproximityoperator.htm
댓글 없음:
댓글 쓰기