《2022年ARCGIS接口详细说明[定 .pdf》由会员分享,可在线阅读,更多相关《2022年ARCGIS接口详细说明[定 .pdf(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ARCGIS 接口详细说明目录ARCGIS 接口详细说明.11.IField 接口(esriGeoDatabase).22.IFieldEdit 接口(esriGeoDatabase).23.IFields接口(esriGeoDatabase).24.IRow 接口(esriGeoDatabase).35.ITable 接口(esriGeoDatabase).36.IArea 接口(esriGeometry).47.IEnvelope 接口(esriGeometry).48.IPoint 接口(esriGeometry).59.IPointArray 接口(esriGeometry).510.
2、IPointCollection 接口(esriGeometry).611.IPolyline 接口(esriGeometry).612.IGeometry 接口(esriGeometry).613.IFeature 接口(esriGeoDatabase).714.IFeatureLayer 接口(esriCarto).815.IFeatureClass接口(esriGeoDatabase).816.IFeatureCursor 接口(esriGeoDatabase).1817.ISpatialFilter 接口(esriGeoDatabase).2018.IQueryFilter 接口(es
3、riGeoDatabase).2119.IFeatureSelection 接口(esriCarto).2120.IMap 接口(esriCarto).2121.IPropertySet 接口(esriSystem).2222.IFeatureWorkspace 接口(esriGeoDatabase).2223.IWorkspaceEdit 接口(esriGeoDatabase).2524.IWorkspaceFactory 接口(esriGeoDatabase).2525.ITopologicalOperator 接口(esriGeometry).32名师资料总结-精品资料欢迎下载-名师精心
4、整理-第 1 页,共 32 页 -1.IField 接口(esriGeoDatabase)IField 接口的第一个属性AliasName(只读,获得字段的别名)IField接口的第二个方法CheckValue(Value)(方法,对于指定的属性字段,基于字段类型判断参数值是否有效,有效,则返回True,否则返回False)例子代码:IFeatureClasspFC_SCP_PT;editPT=new FieldClass();editPT.Precision_2=8;editPT.Scale_2=3;editPT.Name_2=ELEV1;editPT.Type_2=esriFieldTyp
5、e.esriFieldTypeDouble;IField接口的其他属性均为只读属性,常用有Name(只读,获得字段的名称)2.IFieldEdit接口(esriGeoDatabase)所有该接口的属性均为可读可写,经常用与对新建字段的设置,因为字段一旦被设置,其基本属性就不能被更改,所以就需要该接口类型的变量去转换,方法为:IFeatureClasspFC_SCP_PT;IFieldEditeditPT=new FieldClass();pFC_SCP_PT.AddField(IField)editPT);如果在 vb 中去编写代码,则赋值和获取均为同一属性,而在C#中,为了区分设置和获取,属
6、性均有两个,类似于Name和 Name_2,这样就可以区分了,普遍用设置的带有_2的那个属性。IFieldEdit接口的第一个属性Name(读写,设置或者获取该变量类型变量字段的名称)IFieldEdit接口的第二个属性Precision(读写,设置或者获取该变量类型变量字段的长度)IFieldEdit接口的第三个属性Scale(读写,设置或者获取该变量类型变量字段的精度)IFieldEdit接口的第四个属性Type(读写,设置或者获取该变量类型变量字段的类型)3.IFields 接口(esriGeoDatabase)IFields接口的第一个属性Field(Index)(只读,以用于获取具体
7、的字段,返回类型为IField)IFields接口的第二个属性FieldCount(只读,以用于获取属性的数量)利用上面两个接口并用索引去依次循环获得每一列的属性pField(Ifield接口)IFields接口的第三个方法FindField(Name)(方法,输入想要查找的属性域字段的名称,如果有,则返回该属性域字段在此Fields的索引,没有则返回-1)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 32 页 -IFields接口的第四个方法FindFieldByAliasName(Name)(方法,与第三个方法类似,此时输入的为该列属性字段的别名,此方法不经常用)4.IRo
8、w 接口(esriGeoDatabase)IRow 接口的第一个方法Delete(方法,删除该行)IRow 接口的第二个属性Fields(只读,获取该Feature 要素的字段集合,返回值为IFields类型)此方法类似于IFeature接口的 Fields属性IRow 接口的第三个方法Store(方法,保存该行。)此方法类似于IFeature接口的 Store方法IRow接口的第四个属性Table(只读,获取该行所在的表格,返回值为ITable类型)IRow接口的第五个属性Value(Index)(读写,获取该行在参数索引的字段的值,注意,索引 Index 是从 0 开始的。)object.
9、Value(Index)=valueIRow 接口的第六个属性HasOID(只读,判断指出该行是否有OID)IRow接口的第七个属性OID(只读,获取该行的OID值)5.ITable 接口(esriGeoDatabase)ITable是把要素类当成一个表格来看,每一列对应一个字段(Field),每一行对应一个要素(Feature),所以对要素类(IFeatureClass)接口的操作均可以类似的在Itable接口中找到。两个接口可以进行如下强制转化:IFeatureClasspFC;ITablepTable;pTable=(ITable)pFC;ITable接口的第一个方法AddField(F
10、ield)(方法,增加一个属性字段到这个表,其中传入的参数为一个IField接口的变量,此变量可以由其他表获得并赋值给要操作的表,可用 IFeilds接口的 Field属性来获得)ITable接口的第二个方法GetRow(OID)(方法,通过 OID 来从表格数据库中获取一行,返回一个 IRow 接口的变量)此方法类似于IFeatureClass接口的 GetFeature方法ITable接口的第三个方法GetRows(oids,Recycling)(方法,得到一个游标ICursor,通过一个 oids 的 OID数组参数和一个Recycling的布尔类型的参数,一般为True)此方法类似于
11、IFeatureClass接口的 GetFeatures方法名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 32 页 -ITable接口的第四个方法RowCount(QueryFilter)(方法,得到满足查询过滤器条件的行数。此方法 IFeatureClass接口没有,所以是一个很好的有条件查询要素数量的一个方法)6.IArea 接口(esriGeometry)IArea 接口的第一个属性Area(只读,返回一个double 类型的数值,为此 Area 的面积)IArea 接口的第二个属性Centroid(只读,返回一个IPoint类型的变量,为此Area的重心)IArea 接
12、口的第三个属性LablePoint(只读,返回一个IPoint类型的变量,为此Area的标签的位置,一般都在此Area 的内部)IArea 接口的第四个方法QueryCentroid(Center)(方法,Center 参数为一个IPoint类型的变量,通过调用此方法将重心点赋值给参数Center)IArea 接口的第五个方法QueryLablePoint(LablePoint)(方法,LablePoint参数为设置 IPoint类型的变量,通过调用此方法将标签点赋值给参数LablePoint)7.IEnvelope接口(esriGeometry)IEnvelope接口的第一个方法Center
13、At(pPoint)(方法,将这个矩形的边框移动到参数 pPoint 的位置,但是其他属性不变,如它的Width 和 Height)IEnvelope接口的长宽属性Height和 Width 属性(读写,可以通过该属性获取或设置该边框的长和宽)IEnvelope接口的 4个顶点属性UpperLeft、UpperRight、LowerLeft和 LowerRight(读写,返回 IPoint类型的四个顶点,比直接获得最值坐标更加方便严谨)IEnvelope接口的最值坐标属性XMax、XMin、YMax 和 YMin(读写,可以通过该属性获取或设置该边框的四个顶点的坐标)IEnvelope接口的第
14、五个方法Union(inEnvelope)(方法,将参数输入的几何边框和调用该方法的几何边框求并集,并将结果赋值给第一个边框,即调用此方法的object)例子代码:IEnvelope接口的第六个方法Union(inEnvelope)(方法,返回与输入参数相交的区域的几何边框,并将结果赋值给第一个边框,即调用此方法的object)IEnvelope接口的第七个方法PutCoords(XMin,YMin,XMax,YMax)(方法,将新建的一个边框的4 个极坐标设置为输入的参数)IEnvelope接口的第八个方法QueryCoords(XMin,YMin,XMax,YMax)(方法,将已有的一个边
15、框的4 个极坐标输出到参数当中以备后用)IEnvelope接口的第九个方法Expand(dx,dy,asRatio)(方法,按照输入的dx 与dy 参数来放大或者缩小当前的边框,用与对ArcMap窗体的中心放大或缩小,或者点击屏幕获得点击点的坐标,并将中心点设置成点击点,并进行一定比例的放大或者缩小)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 32 页 -例子代码:一般情况设置为True,来控制倍数的放大IEnvelope接口的第十个方法Offset(X,Y)(方法,将已有的一个边框的按照输入参数的大小来进行水平竖直的移动)8.IPoint接口(esriGeometry)IP
16、oint接口的第一个方法PutCoords(X,Y)(方法,设置该点的坐标)或者直接调用可以读写的属性X和 Y,将坐标赋值给X和 Y例子代码:Dim pPointAsIPointSet pPoint=NewPointpPoint.PutCoords100,100IPoint接口的第二个方法QueryCoords(X,Y)(方法,得到该点的坐标)例子代码:Dim pPointasIPointDim dX asDouble,dYasDoublepPoint.QueryCoordsdX,dYIPoint接 口的 第 三个 方 法ConstrainAngle(constraintAngle,ancho
17、r,allowOpposite)(方法,如果第三个参数allowOpposite为 True,则将第二个参数anchor这个点作为一个原点,然后以第一个参数constraintAngle为与 x 轴的角度,做一条直线,再将调用此参数的点向该直线做垂线并交于一个新点,并将调用此方法的点移动到该点)IPoint接口的第四个方法ConstrainDistance(constraintRadius,anchor)(方法,以第二个参数anchor 这个点为圆心,然后以第一个参数constraintRadius为半径做一个圆,将调用此参数的点移动到该点与圆心做线段交于该圆的交点上)9.IPointArra
18、y接口(esriGeometry)IPointArray接口的第一个方法Add(p)(方法,向该类型的数组变量添加Point)IPointArray接口的第二个属性Count(只读,获得该数组变量中Point的个数,返回Long 类型变量)IPointArray接口的第三个属性Element(Index)(只读,获得该数组变量中位于参数Index 索引位置的点Point,返回一个Point类型的变量)IPointArray接口的第四个方法Insert(Index,p)(方法,向索引位置Index 插入一个点 Point)IPointArray接口的第五个方法Remove(Index)(方法,移
19、除索引位置Index 的点 Point)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 32 页 -IPointArray接口的第六个方法RemoveAll(方法,移除所有在此数组中的点)10.IPointCollection接口(esriGeometry)IPointCollection接口的第一个方法AddPoint(inPoint,before,after)(方法,向该类型的点集变量添加Point,第一个参数为添加的Point,第二个第三个参数为可选择的参数,默认添加进点集的末尾)IPointCollection接口的第二个属性Point(i)(只读,获得该点集变量中第i
20、个位置的 Point,返回IPoint类型变量,i 从 0 计算开始)IPointCollection接口的第三个属性PointCount(只读,获得该点集变量中点的个数,返回 Long 类型变量,切记,如果一个 PointCollection变量是由闭合的Geometry 转换而来的话,那么点的个数比节点数多一个,因为是闭合的,所以首位节点是同一个点)11.IPolyline接口(esriGeometry)IPolyline接口的第一个属性FromPoint 与 ToPoint(读写,设置或者读取该点的起始点和终止点,返回都是IPoint类型的变量)IPolyline接口的第二个方法Quer
21、yFromPoint(from)(方法,返回IPoint类型的变量到参数 from)IPolyline接口的第三个方法QueryToPoint(to)(方法,返回IPoint类型的变量到参数 to)IPolyline接口的第四个方法Generalize(maxAllowableOffset)(方法,用道格拉斯普克发来简化polyline)IPolyline接口的第五个方法Weed(maxAllowableOffsetFactor)(方法,和方法Generalize类似,均为简化polyline的方法,不同的是参数。)12.IGeometry接口(esriGeometry)IGeometry接
22、口 的 第 一 个 属 性Dimension(只 读,返 回 一 个 类 型 为esriGeometryDimension的该图形的几何维度)1esriGeometryNoDimension2esriGeometry0Dimension3esriGeometry1Dimension4esriGeometry2Dimension5esriGeometry25Dimension6esriGeometry3Dimension名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 32 页 -IGeometry 接口的第二个属性Extent(只读,返回一个类型为IEnvelope的该图形的几何范
23、围的最大边框)IGeometry 接口的第三个属性GeometryType(只读,返回一个类型为esriGeometryType的该图形的几何类型)esriGeometryNull=0esriGeometryPoint=1esriGeometryMultipoint=2esriGeometryPolyline=3esriGeometryPolygon=4esriGeometryEnvelope=5esriGeometryPath=6esriGeometryAny=7esriGeometryMultiPatch=9esriGeometryRing=11esriGeometryLine=13esr
24、iGeometryCircularArc=14esriGeometryBezier3Curve=15esriGeometryEllipticArc=16esriGeometryBag=17esriGeometryTriangleStrip=18esriGeometryTriangleFan=19esriGeometryRay=20esriGeometrySphere=2113.IFeature接口(esriGeoDatabase)IFeature接口的第一个属性Class(只读)IFeature接口的第二个方法Delete(方法,删除该行。因为一个Feature 在表格中对应的就是一行数据,删
25、除该行就能相应的删除这个Feature)IFeature接口的第三个属性Extent(只读,获取该Feature 要素在地图上的一个矩形范围,返回值为IEnvelope类型)IFeature接口的第四个属性FeatureType(只读,获取该 Feature 要素的要素类型,返回值为枚举类型的esriFeatureType)IFeature接口的第五个属性Fields(只读,获取该Feature 要素的字段集合,返回值为 IFields类型)IFeature接口的第六个属性Shape(读写,获取该Feature要素的图形,返回值为IGeometry 类型,或者各种实体化的类型,如IPolyli
26、ne)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 32 页 -IFeature接口的第七个属性ShapeCopy(只读,克隆该 Feature要素的几何图形,返回值为 IGeometry 类型)IFeature接口的第八个方法Store(方法,保存该行。)此属性可用于对Feature 要素的几何图形进行操作,步骤如下:用 IFeature.ShapeCopy方法获取一个已经存在的Geometry,或者新建一个Geometry对 Geometry 进行操作通过 IFeature.Shape属性将 Geometry 写入通过 IFeature.Store方法保存该 Feature
27、要素IFeature接口的第九个属性Value(读写,利用字段的索引进行对该要素该字段的值的读写)注意,索引Index 是从 0 开始的。object.Value(Index)=valueIFeature接口的第十个属性Table(只读,将该行要素转换成ITable格式的数据,即可对一张表进行数据操作,具体方法查看ITable接口)14.IFeatureLayer接口(esriCarto)IFeatureLayer接口的第一个属性FeatureClass(读写,设置或者读取此layer的要素类)IFeatureLayer接口的第二个属性MaximumScale(读写,设置或者读取此layer显
28、示的最大比例尺)IFeatureLayer接口的第三个属性MinimumScale(读写,设置或者读取此layer显示的最小比例尺)IFeatureLayer接口的第四个方法Search(queryFilter,recycling)(方法,创建一个游标去查询相应设置的过滤器的查询)IFeatureLayer接口的第五个属性Visible(读写,设置或者读取此layer的可见性)IFeatureLayer接口的第六个属性AreaOfInterest(只读,读取此layer的最大范围,回返一个 IEnvelope接口的变量)15.IFeatureClass接口(esriGeoDatabase)IF
29、eatureClass用于访问控制要素类行为和属性的成员IFeatureClass接口是获取和设置要素类属性的主要接口。例如,使用IFeatureClass接口获取要素类类型、获取满足查询条件的要素数目或在要素类中创建新要素。IFeatureClass接口继承了IObjectClass接口。成员AddField向这个类中添加一个字段名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 32 页 -AddIndex向这个类中添加一个索引AliasName这个类的别名AreaField几何区域字段CLSID与这个对象类实例相关的组件类的GUIDCreateFeature创建一个新要素,系统
30、自动分配一个ID,没有属性值DeleteField从对象类中删除字段DeleteIndex从对象类中删除索引EXTCLSID与这个要素类的扩展类相关的组件类的GUIDExtension这个对象类的扩展ExtensionProperties这个对象类的扩展属性FeatureClassID要素类的唯一标识符FeatureCount指定查询获得的要素数目FeatureDataset包含要素类的要素数据集FeatureType要素类中的要素类型Fields要素类的字段集合FindField指定名称的字段索引GetFeature根据对象 ID 获得要素GetFeatures由一系列 ID 获得 Rows
31、的指针HasOID指出要素类是否是否有一个要素表示字段(OID)Indexes要素类的索引集合Insert返回一个可以插入新要素的指针LengthField图形长度字段ObjectClassID对象类的唯一标识符OIDFieldName与 OID 相关的字段名称RelationshipClasses该类参与的关系类Search根据指定的查询返回要素的指针Select根据查询返回包含对象ID 的选择集合ShapeFieldName默认 Shape字段的名称ShapeType要素类中默认Shape的类型Update按照查询返回一个更新要素的指针继承的接口IObjectClass获得对象类的信息IC
32、lass获得类的信息和管理类实现 IFeatureClass的类FeatureClassFeatureClass对象名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 32 页 -NAClass(NetworkAnalyst)网络分析中将要素输入,以及产生输出要素NetCDFFeatureClass(DataSourceNetCDF)内存中呈现的NetCDF要素类RasterCatalogGeodatabase 表中的栅格数据集合RelQueryTable用于连接有相同数据的两个数据集RouteEventSource(Location)Routeeventsource 对象Tempo
33、ralFeatureClass(TrackingAnalyst)控制时态要素类的设置XYEventSourceXY eventsource 对象C#/e.g.,nameOfFeatureClass=”states”;/onArcSDE use ISqlSyntax:QualifyTableName的完全限定表名。publicIFeatureClassgetIFeatureClass(IWorkspaceworkspace,stringnameOfFeatureClass)/castforthefeatureworkspacefromtheworkspaceIFeatureWorkspacefe
34、atureWorkspace=(IFeatureWorkspace)workspace;/openthefeatureclassreturnfeatureWorkspace.OpenFeatureClass(nameOfFeatureClass);几个常用的成员15.1、IFeatureClass.AddField方法C#publicvoidAddField(IFieldField)IFeatureClass.AddField(Field)方法,增加一个属性字段到这个要素类,其中传入的参数为一个IField接口的变量,此变量可以由其他要素类获得并赋值给要操作的要素类,可用 IFeilds接口的
35、 Field属性来获得。返回的错误-2147220649-FDO_E_TABLE_DUPLICATE_COLUMN表中已存在指定名称的字段。-2147220961-FDO_E_NO_SCHEMA_LICENSE无权修改要素类的结构。使用ArcView 的 license,向参与集合网络、拓扑和混合关系类(feature-linkedannotation)的要素类添加字段能引发这个错误。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 32 页 -15.2、IFeatureClass.DeleteField方法C#publicvoidDeleteField(IFieldField)
36、;IFeatureClass.DeleteField(Field)方法,删除一个属性字段,其中传入的参数为一个 IField接口的变量。返回的错误-2147219878-FDO_E_FIELD_CANNOT_DELETE_WEIGHT_FIELD不能删除 geometricnetwork 中与权重相关的字段。-2147219877-FDO_E_FIEID_CANNOT_DELETE_REQUIRED_FIELD不能删除所要求的字段。如果字段设为required,可以使用IFieldEdit:Required属性移除 required状态,然后就可以删除field了。-2147220961-FD
37、O_E_NO_SCHEMA_LICENSE无权修改要素类的结构。使用ArcView 的 license,向参与集合网络、拓扑和混合关系类(feature-linkedannotation)的要素类添加字段能引发这个错误。-2147215862-FDO_E_SE_DBMS_DOES_NOT_SUPPORT不能从 DB2中删除字段。DeleteField从从表、对象类或要素类中删除指定字段。Geodatabase需要的和不能删除的字段包括:OBJECTID 字段、SHAPE和 shape 依赖的字段例如SHAPE_Length、网络要素类激活的 AncillaryRole和 Weight 字段、亚
38、字段-如果要删除一个subtype 字段,必须以subtype 字段删除。C#/e.g.,fieldName=”MyField”PublicvoidIClass_DeletField(IFeatureClassfeatureClass,stringfieldname)/Thefollowingsample code demonstratesone methodologyfordeleting/afieldusingDeleteFieldsIFieldsfields=featureClass.Fields;IFieldfield=fields.get_Field(fields.FindField
39、(fieldname);/IFeatureClassinterfaceinheritsfromIClassfeatureClass.DeleteField(field);名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 32 页 -15.3、IFeatureClass.CreateFeature方法C#publicIFeatureCreateFeature();CreateFeature在要素类中创建一个新要素。这个要素仅分配一个唯一的对象ID(OID),没有其他属性值。使用IFeature:Store方法将这个要素存储到database 中。当工作在版本要素类上时,Create
40、Feature应当在 edit时期调用。调用 IWorkspaceEdit:StartEditing可以开始 editsession。对 Topology 或 GeometricNetwork 要素的编辑要在edit阶段进行,并且要包含editoperation。调用 CreateFeature之后,并不自动设置默认的子类型,也不初始化默认值。如果要素没有子类型,调用IRowSubtypes:InitDefaultValues来初始化默认值。可以调用IRowSubtypes:SubtypeCode来设置要素的要素的子类型。在要素类上调用CreateFeature方法(通过 IFeatureCl
41、ass接口)同调用 CreateRow 方法(通过 ITable接口)的效果相同,不过IFeatureClass的方法返回一个row 对象昂的 IFeature接口。创建一个新要素的步骤是:1)创建要素2)为要素创建几何图形。3)在要素中存储几何图形。4)存储要素。15.4、IFeatureClass.CreateFeatureBuffer方法C#publicIFeatureBufferCreateFeatureBuffer();CreateFeatureBuffer方法创建一个feature缓冲区,并返回IFeatureBuffer类型的变量,然后再对这个变量进行操作。结合insertcur
42、sor可以使用这个方法在要素类中创建新要素。调用IFeatureClass的 CreateFeatureBuffer方法和调用ITable中的CreateRowBuffer的作用相同,只是IFeatureClass的方法返回一个row buffer的IFeatureClass指针。名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 32 页 -15.5、IFeatureClass.FeatureCount方法C#publicintFeatureCount(IQueryFilterQueryFilter);FeatureCount返回满足某些属性或IQueryFilter指定的空间查
43、询的要素的数量。如果没有指定 IQueryFilter,返回要素类中所有要素的数量。15.6、IFeatureClass.FeatureDataset属性这个只读属性返回包含该要素类的数据集的IFeatureDataset接口。如果要素类是一个独立的要素类(无dataset),那么这个动能将会返回一个null值。一个 coverage 要素类返回指向自身的IFeatureDataset接口。Shapefiles返回一个null指针。15.7、IFeatureClass.GetFeature方法C#publicIFeatureGetFeature(intID)通过给定的对象ID(OID)返回要素
44、的IFeature接口。适用于通过OID寻找提顶要素。使用 cursor可以遍历要素类中所有要素。调用要素类的GetFeature方法(使用 IFeatureClass接口)同调用 GetRow方法(使用要素类的 ITable接口)的效果相同,只是IFeatureClass返回 IFeature接口。C#/e.g,nameOfField=”City_Name”publicvoidIFeatureClass_GetFeature(IFeatureClassfeatureClass,stringnameOfField)/gettheindexofthefieldwe are interestedi
45、nintfieldIndexValue=featureClass.FindField(nameOfField);/getfeaturewithOID 11,becauseitisknown toexist/Thismethod istypicallyused togeta featureby know OID/Ifyou wishtoloopthrougha seriesoffeatures,usea Cursor.名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 32 页 -IFeaturefeature=featureClass.GetFeature(1);Console.W
46、riteLine(The0fieldconainsa valueof1,nameOfField,feature.get_Value(fieldIndexValue);15.8、IFeatureClass.GetFeatures方法C#publicIFeatureCursorGetFeatures(objectfids,boolRecycling);GetFeatures返回包含要素类所有要素OID的 IFeatureCursor。这个方法可以用来遍历已知 OID 的要素集。调用 IFeatureClass的 GetFeatures方法和调用ITable的 GetRows方法效果相同,只是返回
47、IFeatureCursor接口。C#/e.g,nameOfField=”Symbol”publicvoidIFeatureClass_GetFeatures(IFeatureClassfeatureClass,stringnameOfField)/gettheindexofthefieldwe are interestedinintfieldIndexValue=featureClass.FindField(nameOfField);System.Collections.Generic.ListconstructoidList=newSystem.Collections.Generic.Li
48、st();constructoidList.Add(1);constructoidList.Add(2);constructoidList.Add(3);constructoidList.Add(4);constructoidList.Add(10);intoidList=constructoidList.ToArray();IFeatureCursorfeatureCursor=featureClass.GetFeatures(oidList,false);IFeaturefeature=featureCursor.NextFeature();/loopthroughthe returned
49、featuresand get the valueforthe fieldwhile(feature!=null)名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 32 页 -/dosomethingwitheach feature(ieupdate geometryorattribute)Console.WriteLine(The0fieldcontainsa valueof1,nameOfField,feature.get_Value(fieldIndexValue);feature=featureCursor.NextFeature();15.9、IFeatureClass
50、.Search方法C#publicIFeatureCursorSearch(IQueryFilterfilter,boolRecycling);Search 返回满足条件的IFeatureCursor。如果IQueryFilter没有给定值,featurecursor返回要素类的所有要素。再用 IfeatureCursor的 NextFeature的方法依次得到每一个 Feature。Recycling参数控制 row 的 allocation行为。每次调用简单要素对象时,Recyclingcursors可以 rehydrate该对象,并可以最优化只读访问,例如在绘图时。多次调用cursor的