Arcgis---画线
来源:互联网 发布:java声明银行账户类锁 编辑:程序博客网 时间:2024/06/01 21:00
画线
List<ESRI.ArcGIS.Geometry.IPoint> linePoints = new List<ESRI.ArcGIS.Geometry.IPoint>();for (int i = 0; i < rayList.Count; i++){ // GeometryUtilities定义见下文 p = GeometryUtilities.ConstructPoint3D(list[i].X, list[i].Y, list[i].Z); // list里存自己定义的类 linePoints.Add(p); }// GISMapApplication定义见下文IGraphicsLayer pGraphicsLayer = (GISMapApplication.Instance.Scene as IBasicMap).BasicGraphicsLayer;// DrawUtilities定义见下文DrawUtilities.DrawLine(pGraphicsLayer as IGraphicsContainer3D, linePoints);
GeometryUtilities部分代码
public static class GeometryUtilities { private static object _missing = Type.Missing; public static void MakeZAware(IGeometry geometry) { IZAware zAware = geometry as IZAware; zAware.ZAware = true; } public static IPoint ConstructPoint3D(double x, double y, double z) { IPoint point = ConstructPoint2D(x, y); point.Z = z; MakeZAware(point as IGeometry); return point; } public static IPoint ConstructPoint2D(double x, double y) { IPoint point = new PointClass(); point.X = x; point.Y = y; return point; } }
GISMapApplication部分代码
public class GISMapApplication { #region 私有字段 private static GISMapApplication instance = null; //当前对象的实例 private AxSceneControl m_axSceneControl = null; public AxSceneControl AxSceneControl { get { return m_axSceneControl; } set { m_axSceneControl = value; } } private ISceneControl m_sceneControl = null; private ISceneGraph m_SceneGraph = null; private static System.Object m_syncObject = new System.Object(); // 同步对象 #endregion 私有字段 /// <summary> /// 地图控件的引用 /// </summary> public ISceneControl SceneControl { get { return m_sceneControl; } set { m_sceneControl = value; } } /// <summary> /// 图形接口 /// </summary> public ISceneGraph SceneGraph { get { return m_SceneGraph; } } private IScene m_Scene = null; /// <summary> /// 场景 /// </summary> public IScene Scene { get { return m_Scene; } set { m_Scene = value; } } /// <summary> /// 当前实例对象(单例模式) /// </summary> public static GISMapApplication Instance { get { if (instance == null) { lock (m_syncObject) { if (instance == null) { instance = new GISMapApplication(); } } } return instance; } } /// <summary> /// 初始化的一些方法 /// </summary> public void Init(AxSceneControl axSceneControl) { if (axSceneControl != null) { this.m_axSceneControl = axSceneControl; m_sceneControl = axSceneControl.Object as ISceneControl; m_SceneGraph = m_sceneControl.SceneGraph; m_Scene = m_sceneControl.Scene; } } }
DrawUtilities部分代码
public static class DrawUtilities { private static object _missing = Type.Missing; public static void DrawLine(IGraphicsContainer3D lineGraphicsContainer3D, List<IPoint> listPoints) { IPointCollection linePointColl = new PolylineClass(); foreach (var point in listPoints) { linePointColl.AddPoint(point, ref _missing, ref _missing); } DrawUtilities.DrawLine(lineGraphicsContainer3D, linePointColl); } public static void DrawLine(IGraphicsContainer3D lineGraphicsContainer3D, IPointCollection linePointCollection) { const esriSimple3DLineStyle lineStyle = esriSimple3DLineStyle.esriS3DLSTube; const double lineWidth = 1; IColor lineColor = ColorUtilities.GetColor(255, 0, 0); GeometryUtilities.MakeZAware(linePointCollection as IGeometry);// GraphicsLayer3DUtilities定义见下文 GraphicsLayer3DUtilities.AddLineToGraphicsLayer3D(lineGraphicsContainer3D, linePointCollection as IGeometry, lineColor, lineStyle, lineWidth); } }
GraphicsLayer3DUtilities部分代码
public static class GraphicsLayer3DUtilities { public static void AddLineToGraphicsLayer3D(IGraphicsContainer3D graphicsContainer3D, IGeometry geometry, IColor color, esriSimple3DLineStyle style, double width) { //ElementUtilities定义见下文 graphicsContainer3D.AddElement(ElementUtilities.ConstructPolylineElement(geometry, color, style, width)); } }
ElementUtilities部分代码
public static class ElementUtilities { private const double HighResolution = 1; private const esriUnits Units = esriUnits.esriUnknownUnits; public static IElement ConstructPolylineElement(IGeometry geometry, IColor color, esriSimple3DLineStyle style, double width) { ISimpleLine3DSymbol simpleLine3DSymbol = new SimpleLine3DSymbolClass(); simpleLine3DSymbol.Style = style; simpleLine3DSymbol.ResolutionQuality = HighResolution; ILineSymbol lineSymbol = simpleLine3DSymbol as ILineSymbol; lineSymbol.Color = color; lineSymbol.Width = width; ILine3DPlacement line3DPlacement = lineSymbol as ILine3DPlacement; line3DPlacement.Units = Units; ILineElement lineElement = new LineElementClass(); lineElement.Symbol = lineSymbol; IElement element = lineElement as IElement; element.Geometry = geometry; return element; } }
阅读全文
2 0
- Arcgis 画线
- Arcgis---画线
- Arcgis---画线
- 画线
- 画线
- 画线
- 画线
- 画线
- 画线
- 画线
- arcgis api for flex 地图选点画线 可拖动变色【写给已逝去的arcgis flex】
- ArcGIS
- Arcgis
- mapx 画线
- 打点画线
- 打点画线
- MFC画线
- opengl画线
- 数据结构--散列
- 记一次JavaScript Ajax取到后台Json无法使用的问题
- MySQL-MongoDB开源监控利器之PMM
- MongoDB使用小结:一些不常见的经验分享
- 解决AndroidStudio编译异常DefaultAndroidProject : Unsupported major.minor version 52.0
- Arcgis---画线
- 平衡二叉树(AVL树)
- ubuntu14 安装qq记录
- JQuery选择器学习总结(二)
- maven工具构建 javaweb 工程中不支持el表达式
- spring-data-elasticsearch 2.1.4 升级 3.0.0 RC2 失败记录
- 版子,最短路
- 笨办法学 Python · 续 练习 11:`uniq`
- Linux延时定时任务及系统文件查找和临时文件管理