AE+C#通过多线程向GlobeControl中增加图层

原创 2013年12月05日 14:02:00

闲话少说直接将源码贴出

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Diagnostics;

using System.Threading;

using System.Collections;

using ESRI.ArcGIS.Carto;

using ESRI.ArcGIS.Analyst3D;

using ESRI.ArcGIS.Controls;

using ESRI.ArcGIS.GlobeCore;

 

namespaceWindowsFormsApplication2

{

    publicpartialclassForm1 : Form

    {

        // 声明新的进程

        privateThread _thread;

        // 声明图层文件

        privateILayerFile _layerFile;

        // 声明进程完成时候的数据

        privateeventEventHandler OnNumberClear;

 

        public Form1()

        {

           InitializeComponent();

 

 

        }

       

        //执行完成之后,停止所有线程

        void ThreadDemo_OnNumberClear(object sender, EventArgs e)

        {

           _thread.Abort();

 

        }

 

        privatevoid btnAdd_Click(object sender, EventArgs e)

        {

            _layerFile= newLayerFileClass();

            _thread = newThread(newThreadStart(addLayer));

 

           OnNumberClear += newEventHandler(ThreadDemo_OnNumberClear);

 

           addLayerStart();

        }

        ///<summary>

        ///进程开始

        ///</summary>

        privatevoid addLayerStart()

        {

           _thread.Start();

        }

        ///<summary>

        ///进程执行的内容

        ///</summary>

        privatevoid addLayer()

        {

            //Monitor.Enter(this);//锁定,保持同步

            string sFile = @"D:\CCCache\GlobeCache\Buildings_1CE1FE05-D138-4361-8C50-E3EB26B02858\cache.lyr";

           _layerFile.Open(sFile);

            ILayer pLayer = _layerFile.Layer;

 

            IGlobeControl pGlobeControl =globeCtrl.Object asIGlobeControl;

            IGlobeDisplayLayers2pGlobeDisplayLayers2 = pGlobeControl.GlobeDisplay asIGlobeDisplayLayers2;

           pLayer.Visible = true;

            // 加载图层到globeCtrl

           pGlobeDisplayLayers2.AddLayer(pLayer);

            //globeCtrl.GlobeDisplay.Scene.AddLayer(pLayer);

            //globeCtrl.GlobeCamera.SetToZoomToExtents(pLayer.AreaOfInterest,globeCtrl.Globe,globeCtrl.GlobeVieweras ISceneViewer);

 

           OnNumberClear(this,newEventArgs());//引发完成事件

            //Monitor.Exit(this);//取消锁定

        }

 

    }

}

 

加载前:

 

加载后:

c#+AE开发:通过一个点(坐标)创建点状图层

背景: 最近,用c#做二次开发要实现一个功能,即通过鼠标点击创建一个以当前单机点为圆心的缓冲区。要创建缓冲区进行缓冲区分析,则必须要有相应的图层。因此我首先需要通过鼠标点创建一个点状图层添加到图层中...

AE+C#多个相同类型的图层联合

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

AE实现不同图层的合并C#代码

  • 2008年06月07日 08:09
  • 28KB
  • 下载

AE控制图层中要素可见状态的几种方法

工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要控制每一个作业员只能看到他负责的区域。作业员的可见区域控制有时候是按空间区域划分,有时候是按照作业属性划分,有时候是属性和区域结合来划分,在...
  • GISSTAR
  • GISSTAR
  • 2011年08月18日 15:11
  • 3164

AE开发----图层操作

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...
  • luyuliu
  • luyuliu
  • 2011年12月17日 16:19
  • 1428

【AE】SDE图层断开后重新连接的解决方法

问题描述:       大家在程序中使用SDE图层时,是不是经常碰到这种情况:因网络连接中断而导致SDE图层不见了。即使之后网络连接上了,SDE图层并不会自动重新显示。 解决方法:     ...

[转载]AE控制图层中要素可见状态的几种方法

工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要控制每一个作业员只能看到他负责的区域。作业员的可见区域控制有时候是按空间区域划分,有时候是按照作业属性划分,有时候是属性和区域结合来划分,在...

【Arcgis Engine开发】AE开发把影像或者矢量加载到图层

AE开发把影像或者加载到图层1.创建一个类工厂2.使用类工厂创建一个要使用的工作区3.使用工作区打开并得到图层的dataset4.把dataset装入到新建的图层实例5.把图层加载到MapContro...

AE控制图层中要素可见状态的几种方法

工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要控制每一个作业员只能看到他负责的区域。作业员的可见区域控制有时候是按空间区域划分,有时候是按照作业属性划分,有时候是属性和区域结合来划分,在...

AE实现右键点击TOC控件任意图层显示属性表

private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouse...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AE+C#通过多线程向GlobeControl中增加图层
举报原因:
原因补充:

(最多只允许输入30个字)