Engine中如何截取线上指定两点间的线段?
2016-02-23 10:44
429 查看
//调用 IPolyline newLine = GetSubCurve(polyline, p1, p2); ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = axMapControl1.ActiveView.ScreenDisplay; screenDisplay.StartDrawing(screenDisplay.hDC, System.Convert.ToInt16(ESRI.ArcGIS.Display.esriScreenCache.esriNoScreenCache)); IRgbColor rgbColor = new RgbColorClass(); rgbColor.Red = 255; ESRI.ArcGIS.Display.IColor color = rgbColor; // Implicit Cast ESRI.ArcGIS.Display.ISimpleLineSymbol simpleLineSymbol = new ESRI.ArcGIS.Display.SimpleLineSymbolClass(); simpleLineSymbol.Color = color; ESRI.ArcGIS.Display.ISymbol symbol = (ESRI.ArcGIS.Display.ISymbol)simpleLineSymbol; // Explicit Cast screenDisplay.SetSymbol(symbol); screenDisplay.DrawPolyline(newLine); screenDisplay.FinishDrawing(); private IPolyline GetSubCurve(IPolyline inpolyLine, IPoint pnt1, IPoint pnt2) { double d1 = GetDistAlong(inpolyLine, pnt1); double d2 = GetDistAlong(inpolyLine, pnt2); var c = inpolyLine as ICurve; ICurve outCurve; c.GetSubcurve(d1, d2, false, out outCurve); if (c == null || c.IsEmpty) throw new Exception(fail); var outPolyline = outCurve as IPolyline; if (outPolyline == null) { outPolyline = new PolylineClass() as IPolyline; var sc = outPolyline as ISegmentCollection; sc.AddSegment((ISegment)outCurve); ((IGeometry)sc).SpatialReference = outCurve.SpatialReference; } return outPolyline; } private double GetDistAlong(IPolyline polyLine, IPoint pnt) { var outPnt = new PointClass() as IPoint; double distAlong = double.NaN; double distFrom = double.NaN; bool bRight = false; polyLine.QueryPointAndDistance(esriSegmentExtension.esriNoExtension, pnt, false, outPnt, ref distAlong, ref distFrom, ref bRight); return distAlong; }
相关文章推荐
- 彻底理解js中this的指向
- 多线程GCD(二)
- mysql内存和IO优化一些重要参数
- 关于 “does not contain bitcode.”的错误解决办法
- new String(getBytes(ISO-8859-1),GBK)解决中文乱码问题分析
- Hql group by unexpected AST node
- Java 集合类
- iOS SSZipArchive使用详解(解压缩)
- 【刷题笔记/剑指Offer】Part 1 (1-10)
- 判断GPS定位服务是否打开
- 一种全新的屏幕适配方法 自动百分比适配 一切px说了算
- 服务器概述与环境准备
- 关于Relay Log无法自动删除的问题
- cocos2d-x移植到android如何读取Excel文件
- poi 单元格内容换行
- 京东钱包App体检报告
- C++实现RTMP协议发送H.264编码及AAC编码的音视频,摄像头直播
- PHP Memcache详解
- Java调用Kettle执行任务或转换
- SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。”错误的解决办法