ArcMapUI:IMxApplication和IMxDocument接口在这个库中定义,尽管他们在实现ArcMap的库。ArcMap内容目录在ArcMap中与许多命令一起在该库中实现。
Version库是ArcGIS 10新出来的一个类库,该类库包含了将独立应用程序绑定到特定的ArcGIS 系列产品的函数和方法
System库是ArcGIS框架中最底层的一个库,它包含了一些被其他库使用的一些组件。
SystemUI库定义了一些在ArcGIS中被用户界面组件使用的类型。ICommand和ITool这样的接口就在这里定义。
Geometry几何库包含了核心的几何对象,比如点,面,线等。在几何库中还定义和实现了空间参考对象,包括投影坐标系和几何坐标系。
Display 显示库包含了支持在输出设备上显示图形的组件,屏幕显示,符号,颜色等都在这个库中定义。
Controls 控件库包含了应用程序开发中用到的控件,包括在控件中使用的命令和工具。如保存文档。。。
Carto 库包含了为数据显示服务的对象。PageLayout和Map对象在这个库中,以及支持各数据类型的图层,渲染。这个库中也包括了MxdServer和MapServer对象,它们通常被Server用来显示地图数据。
GeoDatabase包含了所有相关数据组织的定义类型。要素,表,网络,TIN都在这个库中定义。其中一些类型的实现在各自的数据来源的库中。
IGeoDataset 提供访问提供有关地理数据集信息的成员的权限
DataSourcesFile库包含了为支持的矢量数据格式提供的工作空间工厂和工作空间.
DataSourcesGDB 库包含了为存储在RDBMS中的矢量和栅格数据提供的工作空间工厂和工作空间。
3DAnalyst库包含了数据的3d分析对象,也包括显示3d数据,在这个库中有一个控件SceneControl可用。
GlobeCore库包含了globe数据分析的对象,也包含了显示globe数据,在这个库中有一个控件GlobeControl可用。
SpatialAnalyst库包含了在栅格和矢量数据上
//命名空间(工具箱名称)
3D分析工具 ESRI.ArcGIS.Analyst3DTools
分析工具 ESRI.ArcGIS.AnalysisTools
转换工具 ESRI.ArcGIS.ConversionTools
数据管理工具 ESRI.ArcGIS.DataManagementTools
编辑工具 ESRI.ArcGIS.EditingTools
制图工具 ESRI.ArcGIS.CartographyTools
覆盖工具 ESRI.ArcGIS.CoverageTools
地理编码工具 ESRI.ArcGIS.GeocodingTools
地统计分析工具 ESRI.ArcGIS.GeostatisticalAnalystTools
线性参考工具 ESRI.ArcGIS.LinearReferencingTools
多维工具 ESRI.ArcGIS.MultidimensionTools
网络分析工具 ESRI.ArcGIS.NetworkAnalystTools
包裹织物工具 ESRI.ArcGIS.ParcelFabricTools
空间分析工具 ESRI.ArcGIS.SpatialAnalystTools
空间统计工具 ESRI.ArcGIS.SpatialStatisticsTools
//3 AE多线程
所有的ArcObjects组件都被标记为单线程单元STA,该模型的工作原理是消除跨线程通信,这是ArcGIS Engine中多线程的首要规则。
所有ThreadPool线程是在多线程单元(MTA),因此不应该被用来运行ArcObjects
你不能在线程之间共享ArcObjects的组件
传递给线程的信息应该是简单类型或托管类型,万一在某种情况下,你要从主线程向工作线程传递ArcObjects组件,你可以使用XmlSerializerClass序列化对象成为字符串,再将这一字符串传递给目标线程,然后在工作线程中使用XmlSerializerClass反序列化连接属性。这样,就将连接属性对象在后台再次创造出来,从而避免了跨线程访问。
IXMLSerializer xmlSerializer = new XMLSerializerClass();
object obj = xmlSerializer.LoadFromString(ti.InputRasterWSConnectionProps, null,null);
gp放在子线程中,可能要用Execute();不然可能会报错
子线程所用的arcobject要再同一线程!
如axMapControl是主线程的,你要用就要在this.Invoke中用;你不能在Invoke外声明一个arcobject,再在invoke中调用;不然会报COM的Class无法转换为接口的错误
// 创建线程
Thread t = new Thread(new ThreadStart(PopulateLocationsTableProc));
// 将线程标识为单线程单元模式.
t.SetApartmentState(ApartmentState.STA);
// 启动线程.
t.Start();