ArcObjects API Reference for .NET

参考文档地址:
ArcObjects API Reference for .NET:
http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html

.NET Framework API 参考:
https://docs.microsoft.com/zh-cn/dotnet/api/?view=netframework-4.8

参考来源:
ArcGIS+Engine开发从入门到精通
ArcGIS Engine地理信息系统开发教程 基于C#.NET,牟乃夏编著

一、ArcGIS Engine的类库

System类库:是Engine中最底层的类库。包含给构成ArecGIS的其他类库提供服务的组件。库中包含了大量可供开发者调用的接口。AoInitializer 对象也包含在System类库中,提供给开发者初始化和注销Arc Engine。应用程序不能扩展此类,可通过类库中包含的接口来扩展ARCGIS系统。
SystemUI类库:主要定义了ArcGIS 系统中所使用的用户界面组件类型。这些用户界面组件可以在ArcGIS Engine中进行扩展。开发者可利用接口来扩展UI组件。
Geometry类库:包含了核心几何对象,如点、线、多边形及其几何类型和定义。除了这些实体外,就是作为多边形、多义线的组成部分的几何图形,它们是组成几何图形的子要素,如Segment、Path. Ring 等。Polyline、 Polygon 是由一系列相连接的片段组成,片段的类型如.CircularArc、Line. BezireCurve 等,每个片段是由两个不同的点:起点和终点,以及一个定义两点之间弯曲度的元素类型组成。所有的几何图形对象都支持Buffer、Clip等几何操作,几何子要素不可以扩展。
Display类库:包含了支持向输出装置绘制符号体系的组件,除了负责实际输出图像的主要显示对象外,还包含了表示符号和颜色的对象,它们用来控制在显示上绘制实体的属性。还包含了在与显示交互时提供给用户的可视化反馈的对象。
Server类库:包含了用于获取到ArcGIS Server的连接的对象,使用GISServerConnection对象来访问ArcGIS Server。 通过此对象来获取ServerObjectsManager 对象,开发人员可以操作ServerContext对象,用于处理运行于服务器上的ArcObjects。还可以通过GISClient类库与ArcGIS Server进行交互。
Output类库:包含了生成输出所必须的对象,通常是从地图或页面布局输出到打印机、绘图仪,或导出到文件中。
Geodatabase类库:包含了所有与数据访问相关的定义的类型,为地理数据提供了编程API,是建立在标准工业关系型和对象关系数据库技术之上的地理数据库。Geodatabase类库提供了比ArcObjects架构中更高级的数据源提供者实现的接口,可以通过扩展地理数据库以支持特定类型的数据对象。
GISClient类库:包含了操作远程GIS服务的对象,这些Web服务可以由ArcIMS或ArcGIS Server提供。GISClient提供了以无态方式直接或通过Web服务目录操作AreGIS Server对象的通用编程模型。在ArcGIS Server上运行的ArcObjects组件不能通过GISClient 接口来访问。要直接访问在服务器上运行的ArcObjects,应使用Server 类库中的功能。
DataSourcesFile类库:包含了适用于地理数据库应用程序接口( APIs)所支持的矢量数据格式的工作空间工厂和工作空间。开发者不能扩展DataSourcesFile 类库。
DataSourcesGDB类库:包含了适用于存储在RDBMS中的地理数据库所支持的矢量和栅格数据格式的工作空间工厂和工作空间。开发者不能扩展此类库。
DataSourcesOleDB类库:包含了用于Microsoft OLE DB数据源的GeoDatabase API实现。此类库只能用在Microsoft Windows操作系统上。这些数据源包括支持数据提供者和文本工作空间的所有OLE DB。此类库不能扩展。
DataSourecesRaster类库:包含了用于栅格数据源的GeoDatabaseAPI实现,这些数据源包括ArcSDE支持的关系型数据库管理系统,以及其支持的RDO栅格文件格式。当需要支持新的栅格格式时,可以通过扩展RDO实现,而不能直接扩展DataSourcesRaster。
GeoDatabaseDistributed类库:包含了支持分布式地理数据库的访问。不能扩展此类库。
Carto类库:该类库支持地图的创建和显示,PageLayout对象是地图及其底图元素的容器。地图元素包括指北针、图例、比例尺等。Map对象包括地图上所有图层都有的属性,如空间坐标系.地图比例尺以及地图图层的操作。此对象可以加载各种类型的图层,不同类型的图层由相应的对象处理,如FeatureLayer 对象处理矢量数据,RasterLayer 对象处理栅格数据,TinLayer对象处理TIN数据等。通常图层都有一个相关的Renderer 对象,来控制数据在地图中的显示方式。Renderer通常用Display类库中的符号来进行绘制,Renderer只是将特定符号与待绘制实体属性相匹配。
Location类库:包含了与位置数据操作相关的对象,位置数据可以是路径事件或者地理编码的位置,开发者可以创建自已的地理编码对象。线性参考功能提供对象用于向线性要素添加事件,并可用各种绘制方法来绘制这些事件。
NetworkAnalysis类库:该类库支持应用网络的创建和分析,提供了用于在地理数据库中加载网络数据的对象,并提供对象用于分析加载到地理数据库中的网络。
Controls类库:包含了用于应用软件开发的控制器,包括通过控制器来使用命令和工具。ArcGIS Controls 通过封装ArcObjects, 并提供粗粒度的API简化了开发的过程,开发者也可以同时对ArcObjects进行细粒度的访问。
GeoAnalyst类库:包含了核心空间分析的操作,这些操作可以通过空间分析和3D分析扩展模块来使用。
3Danalyst类库:包含了用于进行数据3D分析以及支持3D数据显示的对象。Scene 对象是
3Danalyst类库中的主要对象之一,是数据的容器。Camera和Target对象规定在考虑要素位置与观察者关系时场景如何浏览等。
GlobeCore类库:包含了用于进行球体数据分析以及支持球体数据显示的对象。该类库中有一个开发控件及与其一起使用的命令和工具。该开发控件可以与Controls类库中的对象协同使用。为了使用这个类库中的对象,需要3D Analyst 扩展模块的许可,或者ArcGIS Engine 运行时3D分析选项的许可。
SpatialAnalyst类库:包含了用于进行栅格与矢量空间分析的对象。使用该类库中的对象,需要ArcGIS空间分析扩展模块的许可,或者ArcGISEngine运行时空间分析选项的许可。

二、接口、类

coclass 对象类型、组件类,COM Classes,也称为“CoClasses”
组件对象类
组件类(CO class)
CoClasses and Classes 组件类和类
组件类是开发平台提供的,或者第三方软件开发者,针对某一种应用而开发的某种特殊应用的类的集合
微软组件对象模型(COM)
ArcObjects中开发者必须理解的类有三种类型:
抽象类( abstract Classes) 、组件对象类(coclasses)和类(classes)
父类 FL=new 子类();只不过这里的父类就是interface接口
接口对象的实例化必须用实现它的类来实例化,而不能用接口本身实例化。

FileDialog 类

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll
显示一个用户可从中选择文件的对话框窗口。
c#
public abstract class FileDialog : System.Windows.Forms.CommonDialog
继承
Object←MarshalByRefObject←Component←CommonDialog←FileDialog
派生
System.Windows.Forms.OpenFileDialog
System.Windows.Forms.SaveFileDialog

属性:
CheckFileExists
获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。
CheckPathExists
获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。
DefaultExt
获取或设置默认文件扩展名。
FileName
获取或设置一个包含在文件对话框中选定的文件名的字符串。
FileNames
获取对话框中所有选定文件的文件名。
Filter
获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。
FilterIndex
获取或设置文件对话框中当前选定筛选器的索引。
InitialDirectory
获取或设置文件对话框显示的初始目录。
Title
获取或设置文件对话框标题。
方法:
ShowDialog()
用默认的所有者运行通用对话框。
ToString()
提供此对象的字符串版本。

IMapControl2 接口

提供对控制MapControl的成员的访问。
IMapControl2界面是与MapControl相关的所有任务的起点,例如设置一般外观,设置地图和显示属性,添加和管理数据层和地图文档以及绘制和跟踪形状。
方法:
AboutBox
[C#] public void AboutBox ();
显示有关MapControl的信息对话框。

AddLayer
[C#] public void AddLayer (ILayer Layer,int toIndex);
在指定索引位置的地图图层集合中添加一个图层。
将图层添加到MapControl的图层集合中且未指定索引时,会将其添加到集合的开头或顶部,索引为0。图层集合中任何其他图层的数字索引将加一。添加图层并指定索引后,该图层集合中所有其他图层的数字索引将增加一个,但那些索引小于指定索引的图层除外。这些层的索引将保持不变。

AddLayerFromFile
[C#] public void AddLayerFromFile (string lyrPath,int toIndex);
加载图层文件,并将其添加到地图中指定索引位置的图层集合中。

AddShapeFile
[C#] public void AddShapeFile (string Path,string fileName);
将shapefile作为图层添加到地图。

CenterAt
[C#] public void CenterAt (IPoint centerPoint);
将MapControl的中心移到指定位置。

CheckMxFile
检查指定的文件名以查看它是否是可以加载到MapControl中的地图文档。
[C#]public bool CheckMxFile (string fileName);

ClearLayers
从地图上删除所有图层。
[C#]public void ClearLayers ();

DeleteLayer
从指定索引位置的地图图层集合中删除一个图层。
[C#] public void DeleteLayer (int index);

DrawShape
在MapControl上绘制几何形状。
[C#] public void DrawShape (IGeometry Shape,ref object symbol);
Shape是IGeometry类型的参数
symbol是VARIANT类型的参数,要指示此参数未定义,请传递对类型为VT_ERROR且代码值为DISP_E_PARAMNOTFOUND的VARIANT的引用。

DrawText
提供几何图形绘制文本。
[C#] public void DrawText (IGeometry pGeometry,string text,ref object pSymbol);

FlashShape
闪烁MapControl上的形状,持续时间以毫秒为单位。
[C#]public void FlashShape (IGeometry pShape,int nFlashes,int flashInterval,object symbol);

FromMapPoint
将地图上的点(以地图单位)转换为设备坐标(通常为像素)。
[C#] public void FromMapPoint (IPoint pt,ref int X,ref int Y);

属性:
ActiveView
[C#] public IActiveView ActiveView {get;}
MapControl包含的Map的活动视图。

Appearance
[C#] public esriControlsAppearance Appearance {get; set;}
MapControl的外观。
返回或将MapControl的绘制样式设置为Flat或3D。默认情况下,外观是平坦的。

BackColor
[C#] public int BackColor {get; set;}
MapControl的背景颜色。
返回或设置MapControl的背景颜色。在内部OLE_Color存储为一个长整数,其中可以为任何RGB组合计算值,如下所示:OLE_Color =(红色)+(绿色* 256)+(蓝色* 256 * 256)其中红色,绿色和蓝色是0到255范围内的长整数。

CurrentTool
MapControl的当前活动工具。设置为无可清除该工具。
[C#] public ITool CurrentTool {get; set;}

Enabled
指示MapControl是否可以响应用户生成的事件。
[C#] public bool Enabled {get; set;}

Extent
地图的当前范围(以地图单位为单位)。
[C#] public IEnvelope Extent {get; set;}

FullExtent
矩形,将地图中所有图层的所有要素都包含在内。
[C#]public IEnvelope FullExtent {get; set;}

Layer
在提供的索引处的图层。
[C#] public ILayer get_Layer (int index);

LayerCount
地图中的层数。
[C#] public int LayerCount {get;}

LoadMxFile
将指定的Map从地图文档加载到MapControl中。如果未提供地图,则可以是索引或名称,但会使用焦点地图。
[C#]public void LoadMxFile (string mxPath,object mapNameOrIndex,
object password);

组件类和类:
MapControl

MapControl 组件类

MapControl封装了Map CoClass并提供其他属性,方法和事件,用于:管理控件的一般外观,显示属性和地图属性;在控件内添加和管理数据层;将地图文档加载到控件中;将数据从其他应用程序拖放到控件上;并跟踪形状和图纸到显示器。

MapControl使用ScreenDisplay作为绘图的显示对象,因此将对与ScreenDisplay对象相同的键盘和鼠标操作做出反应。在大多数开发环境中,无需按以下说明声明MapControl的出站接口,因为该接口是自动实现的。

IEnvelope 接口

Envelope也称包络线,是一个矩形区域,是每个几何形体的最小外接矩形。每个Geometry都拥有一个Envelope,包括Envelope自身。提供对包络线的方法和属性的访问

IFeatureClass 接口
提供对控制要素类的行为和属性的成员的访问。IFeatureClass接口是用于获取和设置要素类的属性的主接口。例如,使用IFeatureClass接口获取要素类的类型,获取满足某些查询的要素数量或在要素类中创建新要素。IFeatureClass接口继承自IObjectClass接口。

Workspace
Workspace 是不可创建的对象。对不可创建对象的引用必须通过其他对象获得。
.net framework 中提供的某些类是不允许直接new出实例的,用了private构造函数。
IWorkspace 接口
提供对具有有关工作区信息的成员的访问。IWorkspace接口定义了访问工作空间各种属性的方法,如工作空间的连接属性等。通过IWorkspace接口可实例化现有数据集和创建新数据集。由于工作空间是一个普通类,要获得工作空间,需要通过工作空间工厂来创建。

IWorkspaceFactory接口
IWorkspaceFactory接口定义了创建、打开工作空间的方法和对工作空间工厂信息成员的访问。用户可通过工作空间工厂管理不同类型的工作空间,所有的工作空间对象都可通过此接口产生。
IWorkspaceFactory接口的Create方法可产生一个新的工作空间对象,不同类型的工作空间工厂“对象,其Create方法产生的工作空间对象是不同的,如Access WorkspaceFactory产生个人地理数据库类型的工作空间,为* . mdb类型文件;ShapefileWorkspaceFactory对象则产生文件夹形式的工作空间。
IWorkspaceFactory接口的Open方法和OpenFromFile方法可以用于打开一个已经存在的工作空间,Open方法用于打开SDE数据库,OpenFromFile方法用于打开一个文件类型的数据,如*. mdb、.shp、.dwg、*.img等。
IWorkspaceFactory 接口及实现类:
在这里插入图片描述

IWorkSpaceFactory pWorkspaceFactory=new AccessWorkspaceFactory();
IWorkSpace pWorkSpace=pWorkspaceFactory.OpenFromFile(pPath,0);

81
ArcGISEngine加载空间数据一般具有如下五个步骤:
(1)创建数据对应的工作空间工厂(WorkspaceFactory)。
(2)使用WorkspaceFactory创建要加载数据的工作空间( Workspace)。
(3)使用Workspace打开并得到图层的数据集DataSet。
(4)将DataSet赋值给新建图层的数据源。
(5)添加图层到MapControl中进行显示。

IFeatureWorkspace Interface
提供对创建和打开各种类型的数据集和其他工作空间级别对象的成员的访问。

IFeatureWorkspace接口用于访问和管理数据集,这些数据集是基于要素的地理数据库的关键组成部分。表和对象类,要素类,要素数据集和关系类。所有的Open方法(例如OpenTable)都以数据集名称作为输入。使用企业级地理数据库时,可以使用适合于基础数据库的限定符来对名称进行完全限定(例如,“ database.owner.tablename”或“ owner.tablename”)(请参见ISQLSyntax)。如果输入名称不完全限定,则使用工作空间的当前连接用户对其进行限定。使用地理数据库(个人,文件或ArcSDE)时,工作空间会保留实例化数据集的运行对象表。多次打开已实例化的数据集的调用将返回对已实例化的数据集的引用。IFeatureWorkspace是用于创建和打开带有工作空间的对象和对象类的主界面。

IFeatureClass 接口
提供对控制要素类的行为和属性的成员的访问。
IFeatureClass接口是用于获取和设置要素类的属性的主接口。例如,使用IFeatureClass接口获取要素类的类型,获取满足某些查询的要素数量或在要素类中创建新要素。IFeatureClass接口继承自IObjectClass接口。

SetBuddyControl Method
[C#]
public void SetBuddyControl (object pTOCBuddy);

IFeatureClass pFeatureClass=

IClass Interface

提供对成员的访问,返回关于和管理类的信息。
IClass.AddField Method
将一个字段添加到此对象类。
[C#] public void AddField(IField Field);

IClass.AddIndex Method
向该对象类添加索引。
[C#] public void AddIndex(IIndex Index);

IClass.DeleteField Method
从此对象类中删除一个字段。
[C#] public void DeleteField(IField Field);

IClass.DeleteIndex Method
从此对象类中删除索引。
[C#] public void DeleteIndex(IIndex Index);

IClass.Fields Property
此对象类的字段集合。
[C#] public IFields Fields{get;}

IClass.FindField Method
具有指定名称的字段的索引。
[C#] public int FindField(string Name);

IClass.Indexes Property
此对象类的索引集合。
[C#] public IIndexes Indexes{get;}

IClass.OIDFieldName Property
与OID对应的字段名称。
[C#] public string OIDFieldName{get;}

IEnumDataset Interface

提供对通过数据集枚举的成员的访问。
实现类 Datasets
IEnumDataset.Next Method
检索枚举序列中的下一个数据集。
[C#] public IDataset Next();

IEnumDataset.Reset Method
将枚举顺序重置为开头。
[C#] public void Reset();

IFeatureLayer Interface

继承自ILayer
提供对控制要素图层共同方面的成员的访问
提供基于矢量地理数据(通常是地理数据库,shapefile或coverage要素类)的图层属性和方法的访问。

IFeatureLayer.FeatureClass Property 图层的要素类。
[C#] public IFeatureClass FeatureClass{get; set;}

IFeatureClass Interface

IFeatureClass→IObjectClass→IClass接口。
提供对控制要素类的行为和属性的成员的访问
IFeatureClass接口是用于获取和设置要素类的属性的主接口。例如,使用IFeatureClass接口获取要素类的类型,获取满足某些查询的要素数量或在要素类中创建新要素。IFeatureClass接口继承自IObjectClass接口。

IFeatureClass.AreaField Property
[C#] public IField AreaField {get;}
此只读属性返回记录每个要素面积的字段名称。只有ShapeType为esriGeometryPolygon的要素类才具有Area字段。在以下情况下将返回空指针:要素类没有esriGeometryPolygon的形状类型基础数据库不维护区域字段要素类是shapefile或CAD数据

IFeatureClass.CreateFeature Method
使用系统分配的对象ID和空属性值创建一个新功能。
[C#] public IFeature CreateFeature ();
CreateFeature将为要素类创建一个新要素。默认情况下,为新功能分配了唯一的对象ID(OID)。如果可以将其他所有字段设置为空值,则将其初始化为空值;如果不能将其设置为空值,则将其初始化为适用于该字段类型的内置默认值。使用IFeature :: Store方法将这个新功能实际存储在数据库中。使用版本化要素类时,仅应在编辑会话中调用CreateFeature。您可以通过调用IWorkspaceEdit :: StartEditing来启动编辑会话。对参与拓扑或几何网络的要素的所有编辑都必须在编辑会话中执行,并放在编辑操作中。调用CreateFeature之后,不会自动设置默认子类型值,也不会初始化默认值。对于不具有定义默认值的子类型的功能,调用IRowSubtypes :: InitDefaultValues将初始化默认值。在调用IRowSubtypes :: InitDefaultValues初始化特定子类型的默认值之前,使用IRowSubtypes :: SubtypeCode设置具有子类型的要素的子类型值。调用要素类上的CreateFeature方法(通过要素类上的IFeatureClass接口)与调用FeatureClass上的CreateRow方法(通过要素类上的ITable接口)具有相同的效果,除了IFeatureClass方法会在要素类上返回IFeature接口外。返回的行对象。如果要依次创建具有公共属性的多个功能,则应使用CreateFeatureBuffer方法,IFeatureCursor.InsertFeature方法和IFeatureBuffer接口以提高性能。
创建新要素的基本过程是:
1)创建要素
2)为要素创建几何
3)将几何存储在要素
4)存储要素·

IFeatureClass.CreateFeatureBuffer Method
创建可以与插入游标一起使用的特征缓冲区。
[C#] public IFeatureBuffer CreateFeatureBuffer();
CreateFeatureBuffer方法创建功能缓冲区并返回IFeatureBuffer接口。这可用于通过插入光标在要素类中创建新要素。就像使用IFeatureClass :: CreateFeature创建功能一样,必须先将新功能的字段值初始化为某个值,然后才能将其存储在数据库中。对参与拓扑或几何网络的要素的所有编辑都必须在编辑会话中执行,并放在编辑操作中。在IFeatureClass中调用CreateFeatureBuffer方法与在ITable中调用CreateRowBuffer接口具有相同的效果,除了IFeatureClass方法在创建的行缓冲区上返回IFeatureBuffer接口之外。

IFeatureWorkspace Interface

提供对创建和打开各种类型的数据集和其他工作区级别对象的成员的访问。
IFeatureWorkspace接口用于访问和管理数据集,这些数据集是基于要素的地理数据库的关键组成部分;表和对象类,要素类,要素数据集和关系类。所有的Open方法(例如OpenTable)都以数据集名称作为输入。在使用企业级地理数据库时,可以使用适合于基础数据库的限定符对名称进行完全限定(例如,“ database.owner.tablename”或“ owner.tablename”)(请参见ISQLSyntax)。如果输入名称不完全限定,则使用工作空间的当前连接用户对其进行限定。使用地理数据库(个人,文件或ArcSDE)时,工作空间会保留实例化数据集的运行对象表。多次打开已实例化的数据集的调用将返回对已实例化的数据集的引用。何时使用IFeatureWorkspace是用于创建和打开带有工作空间的对象和对象类的主界面。

IDataset Interface

提供对提供数据集信息的成员的访问。
IFields Interface
提供对返回有关字段信息的成员的访问
Fields对象表示表中列的集合。术语字段与列同义。数据库中的每个表都有一个有序的字段集合,一个表中总是至少有一个字段。
有序集合的行为类似于列表,因此可以通过列表中的编号位置(或索引)访问各个字段。

IField和IFields区别

IFields是IField的集合,通过AddField()方法或者set_Field()方法添加Field,其中set_Field通过index可以在指定的位置添加Field;

IField Interface

提供对返回有关字段信息的成员的访问权限
字段对象代表表中的一列。字段具有许多属性,最明显的属性是其名称和数据类型。esriFieldType枚举列出了可能的数据类型。

IFields Interface

提供对返回有关字段信息的成员的访问
实现类 Fields
字段对象表示表中列的集合。字段是列的同义词。数据库中的每个表都有一个字段的有序集合,一个表中总是至少有一个字段。有序集合的行为就像一个列表,所以可以通过列表中的编号位置(或索引)来访问各个字段。

IFields.Field Property
字段集合中指定索引处的字段。字段集合中指定索引处的字段。
[C#] public IField get_Field (int Index);

IFields.FieldCount Property
字段集合中的字段数
[C#] public int FieldCount {get;}

IFields.FindField Method
在字段集合中查找命名字段的索引
[C#] public int FindField (string Name);

IFields.FindFieldByAliasName Method
在字段集合中查找具有别名的字段的索引
[C#]
public int FindFieldByAliasName (string Name);

Fields CoClass

Esri字段对象
数据库中的每个表都有一个有序的字段集合,一个表中总是至少有一个字段。有序集合的行为类似于列表,因此可以通过列表中的编号位置(或索引)访问各个字段。Fields集合也可以独立于表而存在,例如,在表上创建索引时,您将需要定义哪些字段参与索引。有许多接口需要或返回Fields集合。这些包括IClass(因此也包括IObjectClass和IFeatureClass),ICursor,IIndex,IFeatureClassDraw,IRowBuffer,ISimpleDataConverter,ITableSort和IValidate。

IField和IFieldEdit区别

IFieldEdit是继承IField的,因为IField的属性大部分是只读的(read-only),所以IFieldEdit就在IField的基础上多了个只写的属性。这也是为什么会出现Name_2、Length_2等原因了。
IFields和IFieldsEdit的区别也是如此。

IFieldsEdit Interface

继承自IFields
提供对修改字段集合的成员的访问。
创建字段集合时使用IFieldsEdit接口。您不能使用它从属于现有表的字段集合中插入或删除字段。要将字段添加到现有对象类,请使用IClass : AddField方法。要从现有对象类中删除字段,请使用IClass :: DeleteField方法。

IFieldEdit Interface

提供对编辑字段属性的成员的访问权限
创建新字段时使用IFieldEdit接口。您不应使用它来修改字段,为此,请使用IClassSchemaEdit。通常,在修改字段时,适用于ArcCatalog的限制也适用于ArcObjects。例如,您不能更改字段的名称或类型。

IField.AliasName Property
字段的别名
只有在地理数据库中注册的对象类和要素类中的字段才支持此功能;个人,文件或ArcSDE地理数据库。对于来自其他数据源(shapefile,coverage等)的字段,AliasName将与字段名称使用相同的字符串。
[C#] public string AliasName {get;}

IField.CheckValue Method
指示给定字段定义的值是否有效
[C#] public bool CheckValue (object Value);

IField.Name Property
字段名称。
[C#] public string Name {get;}

IFieldEdit2 Interface

提供对编辑字段属性(包括栅格列定义)的成员的访问。
IFieldEdit2→IFieldEdit→IField
IFieldEdit2提供对地理数据库中栅格字段的栅格定义的访问。您可以为栅格字段和PGDB设置空间参考,别名,还可以指定该字段是否由地理数据库管理。栅格字段需要RasterDef。

DialogResult Enum
指定标识符以指示对话框的返回值。

OK 对话框的返回值是 OK(通常从标签为“确定”的按钮发送)。
foreach(数据类型 变量名 in 数组/字符串/集合)

ToString()
public virtual string ToString();
默认返回当前类型的名称

在c#中退出WinForm程序包括有很多方法,
1.this.Close();?? 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;

2.Application.Exit();? 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;

3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;

4.System.Environment.Exit(0);??这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

https://codeload.github.com/ChengyangLei/arcgis-engine/zip/master
https://codeload.github.com/RJJxp/arcEngine_really_useful/zip/master

基于C#语言的ArcGIS Engine开发基础与技巧

ArcGIS二次开发实验教程:基于C#语言:based on C# programming language

ArcGIS从0到1+基于ArcGIS的Python编程秘笈 ArcGIS教程书

https://download.csdn.net/download/hdmwhu/10142811
https://download.csdn.net/download/sqsghhz1/8380911

IPropertySet Interface
提供对成员的访问以管理PropertySet/属性集。
IPropertySet.SetProperty Method
指定属性的值
[C#] public void SetProperty(string Name,object Value);
IPropertySet.GetProperty Method
指定属性的值
[C#]public object GetProperty(string Name);

IWorkSpace与IWorkSpaceFactory与IWorkSpaceEdit的关系
1、IWorkSpace是一个容器,里面存放着各种空间数据和非空间数据,比如Featureclass、RasterDatasets、tables等等,它分为三种:FileSystemWorkspace,LocalDatabaseWorkspace,RemoteDatabaseWorkspace,比如Shapefile是一种FileSystemWorkspace,
ACCESS和文件形式的GDB是LocalDatabaseWorkspace,存储在数据库中并且通过ArcSDE获取的GDB是RemoteDatabaseWorkspace。
2、WorkSpace类不能直接实例化,必须要由IWorkSpaceFactory的Create方法创建。
3、IWorkSpaceEdit允许应用程序打开一段编辑阶段,在这个阶段里面可以对WorkSpace中数据实体进行更改(创建新实体、删除、修改等等)

“FileGDE(.gdb)|.gdb;|PersonalGDE(.mdb)|.mdb”;

     /*IFeatureClass.AddField(Field) 方法,增加一个属性字段到这个要素类,
        其中传入的参数为一个IField接口的变量,此变量可以由其他要素类获得并赋值给要操作的要素类,
        可用IFeilds接口的Field属性来获得。
        IFeatureClass.DeleteField(Field) 方法,删除一个属性字段,其中传入的参数为一个IField接口的变量。*/

        //IFeatureWorkspace 
        //pFeatureWorkspace=pWorkspace.

        //IFeatureClass pFearureClass;
        //IField pField;
        //if(pFearureClass.FindField(pField.Name)==-1)

       
        //IFields pFields = new Fields();

        //for(int i=0;i<pFields.FieldCount;i++)
        //{
        //    comboBox2.Items.Add(pFields.get_Field(i));
        //}

IQueryFilter Interface

提供对基于属性值和或关系过滤数据的成员的访问。

ITable Interface

提供对返回有关表信息和管理表的成员的访问
ITable接口是用于处理表的主要接口。它继承自IClass并提供其他方法,使您可以查询,选择,插入,更新和删除表中的行。通过此接口对表中的行进行的所有修改将保留与表相关联的对象行为。例如,在作为复合关系源的表上使用DeleteSearchedRows将从相关对象类中删除行。
ITable.CreateRow Method
使用系统分配的对象ID和空属性值在数据库中创建一行。
[C#] public IRow CreateRow ();
CreateRow方法使用系统分配的对象ID值在基础数据库中创建新行。代表创建的行的行对象将返回给调用方。返回的行对象具有系统分配的对象ID作为OIDField的值。如果可以将其他所有字段设置为空值,则将其初始化为空值;如果不能将其设置为空值,则将其初始化为适用于该字段类型的内置默认值。调用方负责将所需的字段值设置到该行中,并在该行上调用Store方法。如果表代表带有子类型的对象类,则调用者有责任将默认子类型代码设置到该行中,并在存储之前在该行上调用InitDefaultValues方法(如果这是所需的结果)。对于没有对象行为的表,插入游标提供了一种更有效的插入新行的方法。

ITable.CreateRowBuffer Method
创建可与插入游标一起使用的行缓冲区
[C#] public IRowBuffer CreateRowBuffer();
CreateRowBuffer方法在内存中创建一个新的行缓冲区对象,并将其返回给调用方。在数据库中没有创建行。返回的行缓冲区没有对象ID值。调用者可以将值设置到行缓冲区中,并将其用作插入游标上InsertRow方法的参数。后者是通过在Table上调用Insert方法获得的。

ITable.DeleteSearchedRows Method
删除指定查询选择的数据库中的行。
[C#] public void DeleteSearchedRows (IQueryFilter QueryFilter);

ITable.GetRow Method
数据库中具有指定对象ID的行
[C#] public IRow GetRow (int OID);
给定对象的ID值,GetRow方法将返回一个现有的行对象。调用者可以查询返回的行对象以获取其他特定于对象的接口。检索到的行可以修改;更改行对象后,在该行对象上调用Store将会触发消息到相关对象,并将行标记为提交到数据库。

ITable.GetRows Method
行的游标基于一组对象ID。
The cursor of rows based on a set of object ids.
[C#] public ICursor GetRows (object oids,bool Recycling);
GetRows方法返回一个游标,该游标可用于检索由对象ID值的输入数组指定的一组行。请参阅Search方法的说明以了解回收参数的含义。与使用GetRow方法检索每个单独的行相比,使用GetRows方法检索一组行的效率要高得多。检索到的行可以修改;更改它们后,应在行对象上调用存储。oids参数应传递给整数数组

ITable.Insert Method
返回一个游标,可用于插入新行
[C#] public ICursor Insert (bool useBuffering);
Insert方法返回一个插入游标,可用于批量插入行。对于存储简单行和简单特征的表(即,对于CLSID为esriGeoDatabase.Row,esriGeoDatabase.Object或esriGeoDatabase.Feature的表),它提供的性能要比多次调用CreateRow和Store更快。在包含复杂对象的表上插入游标使用CreateRow和Store方法实现多态,在这些情况下,性能没有差异。在编辑会话中使用游标时,应始终将其范围限定为编辑操作。换句话说,应该在编辑操作开始后创建游标,并且一旦该编辑操作停止或中止,就不应使用游标。

ITable.RowCount Method
由指定查询选择的行数。
[C#] public int RowCount (IQueryFilter QueryFilter);

ITable.Search Method
对象游标,可用于获取由指定查询选择的行对象
[C#]
public ICursor Search (IQueryFilter QueryFilter,bool Recycling);
Search方法返回一个搜索游标,该游标可用于检索查询过滤器指定的行。回收参数控制行对象分配行为。回收游标会在每次获取时为单个行对象补水,并且可用于优化只读访问(例如在绘制时)。在多次调用游标上的NextRow的过程中,在循环游标返回的行对象上维护引用是非法的。回收游标返回的行对象不应被修改。非回收游标在每次提取时都返回一个单独的行对象。非回收游标返回的对象可以修改并以多态行为存储。地理数据库可确保在编辑会话期间获取的非回收行对象上的``唯一实例语义’’。如果要通过搜索调用检索的行对象已经实例化,并且正在被调用应用程序引用,则返回对现有行对象的引用。当将要素从游标复制到另一个类的插入游标中时,将使用从Search方法**必须返回的非回收要素游标。这是因为回收游标会重复使用相同的几何图形,并且在某些情况下,插入到插入游标中的所有要素都可能具有相同的几何图形。使用非回收游标可确保每个几何都是唯一的。在编辑会话中使用游标时,应始终将其范围限定为编辑操作。换句话说,应该在编辑操作开始后创建游标,并且一旦该编辑操作停止或中止,就不应使用游标。

ITable.Select Method
包含由指定查询选择的对象ID的选择。
[C#] public ISelectionSet Select (IQueryFilter QueryFilter,esriSelectionType selType,esriSelectionOption selOption,IWorkspace selectionContainer
);
Select方法返回一个选择集,该选择集根据选择选项保存表中的行ID或行对象。可以在同一张表上创建多个选择集。由客户端应用程序或对象决定是否对创建的选择进行引用并在适当时使用它们。例如,FeatureLayer在FeatureClass(表的一种)上创建和使用选择。selType参数确定将要创建的选择集的类型:ID集,快照或混合。有关三种类型的比较,请参见ISelectionSet接口。调用时,不再需要selectionContainer参数。空值应作为此参数传递。

ITable.Update Method
返回一个游标,该游标可用于更新由指定查询选择的行。
[C#] public ICursor Update (IQueryFilter QueryFilter,bool Recycling);
Update方法返回一个更新游标,可用于更新或删除行。它比使用非回收搜索游标针对存储简单行和简单特征的表多次调用存储或删除行对象的性能要快一些。复杂对象和功能的性能没有差异。在编辑会话中使用游标时,应始终将其范围限定为编辑操作。换句话说,应该在编辑操作开始后创建游标,并且一旦该编辑操作停止或中止,就不应使用游标。

ITable.UpdateSearchedRows Method
更新指定查询选择的数据库中的行。
[C#]public void UpdateSearchedRows (IQueryFilter QueryFilter,IRowBuffer buffer);
此方法将编辑与查询过滤器约束匹配的行。每行中的值将替换为提供的行缓冲区中相应字段的值。应该在查询过滤器的SubFields属性中指定要编辑的字段。如果行缓冲区包含空值,并且未正确设置SubFields属性,则该行的值将被行缓冲区的空值覆盖。

IWorkspaceName

三、数据加载

3.1加载地图文档

三种方法:
1.使用IMapControl接口的LoadMxFile方法加载。
2.通过IMapDocument接口加载。
3.使用arcgis engine中封装好的类库资源ControlsOpenDocCommandClass加载。
使用ControlsOpenDocCommandClass加载地图

1.使用IMapControl接口的LoadMxFile方法加载。
过程:
(1)通过.NET框架类提供的打开文件对话框选择要打开的地图文档。
(2)用IMapControl接口提供的CheckMxFile方法检查是否为有效地图文档,若有效,就调用IMapControl接口提供的LoadMxFile方法进行加载。
1)CheckMxFile方法
该方法的作用是确定选中的地图文档是否是一个可以加载到MapControl控件中的有效地图文档。它能验证文件是否存在、文件的内部结构是否符合预期的存储格式等。
2)LoadMxFile方法
该方法的作用是向MapControl控件中加载地图文档,地图文档可以用索引或文件名来指示。只
函数原型为public void LoadMxFile ( string mxPath, object mapNameOrIndex, object
password)。
在这里插入图片描述

OpenFileDialog pOpenFileDialog=new OpenFileDialog();
pOpenFileDialog.CheckFileExists=true;
pOpenFileDialog.Title="打开地图文档";
//.Filter = "Text documents (.txt)|*.txt";按扩展名过滤文件,确定在OpenFileDialog显示的文件类型
pOpenFileDialog.Filter="Arc	Map文档(*.mxd)|*.mxd;|ArcMap模板(*.mxt)|*.mxt|发布地图文件(*.pmf)|*.pmf|所有地图格式(*.mxd;*.mxt;*.pmf)|*.mxd;*mxt;*.pmf";
//	获取或设置一个选项,该选项指示 OpenFileDialog 是否允许用户选择多个文件。
pOpenFileDialog.Multiselect=false;     //不允许多个文件同时选择
pOpenFileDialog.RestoreDirectory=true; //存储打开的文件路径,不实现此属性。

if(pOpenFileDialog.ShowDialog()==DialogResult.OK)
{

IMapDocument接口
方法:
ActiveView 地图文档的ActiveView。
[C#]
public IActiveView ActiveView {get;}
Close 关闭地图文档。
Map 指定索引处的Map对象。
New 创建并打开新的地图文档,以准备取回或更新内容。
Open 打开地图文档,以准备取回或更新内容。
[C#]
public void Open (string sDocument,string bsPassword);
Save 将地图文档的内容保存到绑定文件中。

MapDocument
MapDocument协同类用于读取和写入地图文档文件。
MapDocument CoClass封装了地图文档文件(* .mxd,* mxt,。pmf)和图层文件( .lyr),并提供了以下属性和方法:访问和更新文档的内容;确定文件属性;以及读取,写入和保存地图文档文件(* .mxd)。
使用IMapDocument的Open()或New()方法打开或创建地图文档时,应始终对IActiveView :: Activate()进行后续调用,以正确初始化PageLayout和Map对象的显示。为PageLayout调用一次Activate(),然后为将要使用的每个Map调用一次。如果您的应用程序具有用户界面,则应使用应用程序客户区的hWnd调用Activate()。如果您的应用程序在后台运行并且没有窗口,则始终可以从Win32 API的一部分GDI GetDesktopWindow()函数获取有效的hWnd。

Student s=new Student();

3.2加载Shapefile

   Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据
格式转换常用的中间格式。加载Shapefile数据的方式有两种:①通过工作空间加载;②通过
MapControl控件的AddShapefile 方法加载。
1.通过工作空间加载Shapefile文件

2.通过MapControl的AddShapefile方法加载Shapefile文件
用MapControl控件的AddShapefile 方法同样可加载Shapefile文件,这样省去了建立工作空间、数据集等步骤。调用该方法需要传人两个参数,分别是文件路径和不带扩展名的文件名。调用方法如下:

mainMapControl.AddShapefile(string Path, string fileName);
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值