ArcEngine接口大全三

ArcEngine接口大全三
ArcEngine接口大全三

ArcEngine接口大全(三)《转自ESRI中国社区》

9. 关于IArea接口(esriGeometry)

IArea接口的第一个属性Area(只读,返回一个double类型的数值,为此Area的面积)IArea接口的第二个属性Centroid(只读,返回一个IPoint类型的变量,为此Area的重心)IArea接口的第三个属性LablePoint(只读,返回一个IPoint类型的变量,为此Area的标签的位置,一般都在此Area的内部)

IArea接口的第四个方法QueryCentroid (Center )(方法,Center参数为一个IPoint类型的变量,通过调用此方法将重心点赋值给参数Center)

IArea接口的第五个方法QueryLablePoint (LablePoint )(方法,LablePoint参数为设置IPoint 类型的变量,通过调用此方法将标签点赋值给参数LablePoint)

10. 关于IEnvelope接口(esriGeometry)

应用:(中心放大)

IEnvelope接口的第一个方法CenterAt(pPoint)(方法,将这个矩形的边框移动到参数pPoint 的位置,但是其他属性不变,如它的Width和Height)

IEnvelope接口的长宽属性Height和Width属性(读写,可以通过该属性获取或设置该边框的长和宽)

IEnvelope接口的4个顶点属性UpperLeft、UpperRight、LowerLeft和LowerRight(读写,返回IPoint类型的四个顶点,比直接获得最值坐标更加方便严谨)

IEnvelope接口的最值坐标属性XMax、XMin、YMax和YMin(读写,可以通过该属性获取或设置该边框的四个顶点的坐标)

IEnvelope接口的第五个方法Union (inEnvelope )(方法,将参数输入的几何边框和调用该方法的几何边框求并集,并将结果赋值给第一个边框,即调用此方法的object)

IEnvelope接口的第六个方法intersect (inEnvelope )(方法,返回与输入参数相交的区域的几何边框,并将结果赋值给第一个边框,即调用此方法的object)

IEnvelope接口的第七个方法PutCoords (XMin, YMin,XMax,YMax)(方法,将新建的一个边框的4个极坐标设置为输入的参数)

IEnvelope接口的第八个方法QueryCoords (XMin, YMin,XMax,YMax)(方法,将已有的一个边框的4个极坐标输出到参数当中以备后用)

IEnvelope接口的第九个方法Expand (dx, dy, asRatio)(方法,按照输入的dx与dy参数来放大或者缩小当前的边框,用与对ArcMap窗体的中心放大或缩小,或者点击屏幕获得点击点的坐标,并将中心点设置成点击点,并进行一定比例的放大或者缩小)

IEnvelope接口的第十个方法Offset (X, Y)(方法,将已有的一个边框的按照输入参数的大小来进行水平竖直的移动)

11. 关于IFeature接口(esriGeoDatabase)

IFeature接口的第一个属性Class(只读)

IFeature接口的第二个方法Delete(方法,删除该行。因为一个Feature在表格中对应的就是一行数据,删除该行就能相应的删除这个Feature)

IFeature接口的第三个属性Extent(只读,获取该Feature要素在地图上的一个矩形范围,返回值为IEnvelope类型)

IFeature接口的第四个属性FeatureType(只读,获取该Feature要素的要素类型,返回值为枚举类型的esriFeatureType)

IFeature接口的第五个属性Fields(只读,获取该Feature要素的字段集合,返回值为IFields 类型)

IFeature接口的第六个属性Shape(读写,获取该Feature要素的图形,返回值为IGeometry 类型,或者各种实体化的类型,如IPolyline)

IFeature接口的第七个属性ShapeCopy(只读,克隆该Feature要素的几何图形,返回值为IGeometry类型)

IFeature 接口的第八个方法Store(方法,保存该行。)

此属性可用于对Feature要素的几何图形进行操作,步骤如下:

用IFeature.ShapeCopy方法获取一个已经存在的Geometry,或者新建一个Geometry

对Geometry进行操作

通过IFeature.Shape属性将Geometry写入

通过IFeature.Store方法保存该Feature要素

IFeature接口的第九个属性Value(读写,利用字段的索引进行对该要素该字段的值的读写)注意,索引Index是从0开始的。

object.Value(Index ) = [ value ]

IFeature 接口的第十个属性Table(只读,将该行要素转换成ITable格式的数据,即可对一张表进行数据操作,具体方法查看ITable接口)

12. 关于IRow接口(esriGeoDatabase)

IRow接口的第一个方法Delete(方法,删除该行)

IRow接口的第二个属性Fields(只读,获取该Feature要素的字段集合,返回值为IFields

类型)此方法类似于IFeature接口的Fields属性

IRow 接口的第三个方法Store(方法,保存该行。)此方法类似于IFeature接口的Store方法

IRow接口的第四个属性Table(只读,获取该行所在的表格,返回值为ITable类型)

IRow接口的第五个属性Value(Index)(读写,获取该行在参数索引的字段的值,注意,索引Index是从0开始的。)

object.Value(Index ) = [ value ]

IRow接口的第六个属性HasOID(只读,判断指出该行是否有OID)

IRow接口的第七个属性OID(只读,获取该行的OID值)

13. 关于IFeatureClass接口(esriGeoDatabase)

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

IFeatureClass接口的第二个方法DeleteField(Field)(方法,删除一个属性字段,其中传入的参数为一个IField接口的变量)

IFeatureClass接口的第三个属性Fields(只读,获取该要素类的全部属性字段,返回一个IFields类型的变量)

IFeatureClass接口的第四个方法FindField(Name)(方法,去查找在该要素类里面是否含有

参数名字的属性字段,如果有,则返回索引,没有,则返回-1)

IFeatureClass接口的第五个属性AreaField(只读,获取属性字段为geometry的那一个Field)

IFeatureClass接口的第六个方法Search (filter, Recycling)(方法,去得到一个IFeatureCursor 类型的游标,该游标由filter来控制赛选,如果filter等于null,则返回整个featureclass的游标,再用IfeatureCursor的NextFeature的方法依次得到每一个Feature)

IFeatureClass接口的第七个方法Insert(useBuffering)(方法,去得到一个IFeatureCursor类型的游标,来用作插入新的Features,useBuffering是一个布尔型参数,当为True时即可以插入新的Feature,再用IFeatureCursor的InsertFeature (buffer )的方法去插入一个新的Feature)

IFeatureClass接口的第八个方法CreateFeatureBuffer(方法,新建一个缓冲,返回一个IFeatureBuffer类型的变量,然后再对这个变量进行操作)

14. 关于ITable接口(esriGeoDatabase)

ITable是把要素类当成一个表格来看,每一列对应一个字段(Field),每一行对应一个要素(Feature),所以对要素类(Ifeatureclass)接口的操作均可以类似的在Itable接口中找到。ITable接口的第一个方法AddField(Field)(方法,增加一个属性字段到这个表,其中传入的参数为一个IField接口的变量,此变量可以由其他表获得并赋值给要操作的表,可用IFeilds 接口的Field属性来获得)

ITable接口的第二个方法GetRow(OID)(方法,通过OID来从表格数据库中获取一行,返回一个IRow接口的变量)此方法类似于IFeatureClass接口的GetFeature方法

ITable接口的第三个方法GetRows(oids, Recycling)(方法,得到一个游标ICursor,通过一个oids的OID数组参数和一个Recycling的布尔类型的参数,一般为True)此方法类似于IFeatureClass接口的GetFeatures方法

ITable接口的第四个方法RowCount(QueryFilter)(方法,得到满足查询过滤器条件的行数。此方法IFeatureClass接口没有,所以是一个很好的有条件查询要素数量的一个方法)

15. 关于IFeatureCursor接口(esriGeoDatabase)

IFeatureCursor接口的第一个方法NextFeature(方法,将游标向前跳到下一个位置,并且返回该位置的Feature)

IFeatureCursor接口的第二个方法UpdateFeature(Feature)(方法,对当前游标位置的Feature 进行更新)

IFeatureCursor接口的第三个方法InsertFeature(buffer)(方法,用参数传进来的属性值插入一个新的要素到数据库中,返回该插入新的Feature的ID值,其中参数类型为IFeatureBuffer)16. 关于IQueryFilter接口(esriGeoDatabase)

IQueryFilter接口的第一个属性WhereClause(读写,为过滤器设置条件语句)

注意!各种不同的数据,设置条件查询语句的语法是不相同的,如一个shp文件在设置字段的时候要加“””双引号,而在SDE数据连接中,则什么都不加;在gdb文件的语句中,符号是“*”,而在SDE或者shp文件查询中则是“%”

IQueryFilter接口的第二个属性SubFields(读写,为过滤器设置提供赛选的字段,用逗号来分隔每一个逗号,如果不设置该属性,则当做所有字段均为查找字段)

17. 关于IFeatureLayer接口(esriCarto)

IFeatureLayer接口的第一个属性FeatureClass(读写,设置或者读取此layer的要素类)IFeatureLayer接口的第二个属性MaximumScale(读写,设置或者读取此layer显示的最大比例尺)

IFeatureLayer接口的第三个属性MinimumScale(读写,设置或者读取此layer显示的最小比例尺)

IFeatureLayer接口的第四个方法Search (queryFilter, recycling )(方法,创建一个游标去查询相应设置的过滤器的查询)

IFeatureLayer接口的第五个属性Visible(读写,设置或者读取此layer的可见性)IFeatureLayer接口的第六个属性AreaOfInterest(只读,读取此layer的最大范围,回返一个IEnvelope接口的变量)

18. 关于IFeatureSelection接口(esriCarto)

IFeatureSelection接口的第一个方法SelectFeatures (Filter, Method, justOne )(方法,根据指

定的标准过滤器filter和方法,选择要素,第一个参数为QueryFilter类型的变量,第二个参数为esriSelectionResultEnum类型的变量,第三个参数为布尔型变量,通常为false)

19. 关于IMap接口(esriCarto)

IMap接口的第一个属性Layers (uid, recursive )(只读,第二个参数为True的时候,该属性获取第一个参数uid指定的Layers,赋值给一个IEnumLayer的变量)

其中比较常用的UID参数值如下:

{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer

{40A9E885-5533-11d0-98BE-00805F7CED21} IFeatureLayer

{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer

{34B2EF81-F4AC-11D1-A245-080009B6F22B} IGraphicsLayer

{5CEAE408-4C0A-437F-9DB3-054D83919850} IFDOGraphicsLayer

{0C22A4C7-DAFD-11D2-9F46-00C04F6BC78E} ICoverageAnnotationLayer

{EDAD6644-1810-11D1-86AE-0000F8751720} IGroupLayer

IMap接口的第二个属性LayerCount(只读,返回该map里面Layer的个数)

IMap接口的第三个属性Layer(Index)(只读,返回指定索引index位置的Layer)IMap接口的第四个方法AddLayer(Layer)(方法,向该map添加一个Layer)

IMap接口的第五个方法AddLayers(Layers, autoArrange)(方法,添加一个EnumLayer 变量的layers到该map,第一个参数为IEnumLayer类型,第二个参数为bool型变量)IMap接口的第六个方法ClearLayers(方法,将所有的layer从map中移除)

IMap接口的第七个方法ClearSelection(方法,将该map中选择的要素清空)

IMap接口的第八个属性SelectionCount(只读,返回该map被选中要素的个数)

IMap接口的第九个方法SelectFeature(Layer, Feature)(方法,从一个Layer中选择一个Feature)

IMap接口的第十个属性MapScale(读写,获取或者设置当前map的地图比例尺,double类型)

IMap接口的第十一个方法MoveLayer(Layer, toIndex)(方法,把一个Layer从当前的位置移动到指定的索引位置)

IMap接口的第十二个方法SelectByShape(Shape, env, justOne)(方法,从Layer中依靠一个图形的范围shape和一个选择的环境env来选择要素,而在所有图层中只从IFeatureLayer

的图层中进行选择)

20. 关于IPropertySet接口(esriSystem)

IPropertySet接口的第一个方法SetProperties (names, values )(方法,设置属性)

IPropertySet接口的第二个方法SetProperty (name, value )(方法,设置属性)

21. 关于IFeatureWorkspace接口(esriGeoDatabase)IFeatureWorkspace接口的第一个方法OpenFeatureClass (Name)(方法,从一个要素工作空间打开一个要素,返回一个IFeatureClass类型的变量)

22. 关于IWorkspaceEdit接口(esriGeoDatabase)

在实际问题中,如果有多次操作需要更改Feature的时候,切记要将操作对象重新赋值,不然在pWorkspaceEdit.StopEditing(true)的时候会出现错误,报错代码为-2147467259。

(详细代码可见WindowsApplication6的代码,其中详细操作了对字段的编辑过程,其中涉及到很多对字段Field的方法Add(Field),Delete(Field),get_value(object value),set_value(int index, object value)等等操作,其中还涉及到Feature经过ICursor类选取与经过FeatureClass 类的方法GetFeature选取的区别)

23. 关于IWorkspaceFactory接口(esriGeoDatabase)

IWorkspaceFactory接口的第一个方法Open (ConnectionProperties, hWnd )(方法,从一个工作工厂打开一个工作空间,并返回IWorkspace类型的变量,方法中的第一个参数ConnectionProperties是IPropertySet接口的变量)

IWorkspaceFactory接口的第二个方法OpenFromFile (fileName, hWnd )(方法,从一个路径打开一个工作空间,并返回IWorkspace类型的变量)

24. 关于ITopologicalOperator接口(esriGeometry)

ITopologicalOperator接口的第一个方法ConstructUnion(geometries )(方法,合并图形的工具,输入的参数是一个IEnumGeometry类型的参数,此方法效率甚高)ITopologicalOperator接口的第二个方法Cut(cutter, leftGeom, rightGeom)(方法,剪切图形,第一个参数为剪切的线要素,为IPloyline类型,第二个第三个参数均为剪切后的图形,为输出参数)

ITopologicalOperator接口的第三个方法Boundary(方法,获取一个图形的边框,一个Polygon 的boundary是一个Polyline类型的要素,一个Polyline的boundary是一个nultipoint类型的要素,一个Point的boundary是为空的)

ITopologicalOperator接口的第四个方法Buffer(distance)(方法,创造一个Polygon的要素来显示缓冲区域,参数为缓冲距离)

ITopologicalOperator接口的第五个方法Clip (clipperEnvelope )(方法,输入一个IEnvelope 类型的变量,来获取被这个边框剪切的要素,并将切割后的变量返回给调用方法的变量)ITopologicalOperator接口的第六个方法QueryClipped (clipperEnvelope, clippedGeometry )(方法,与Clip类似,但是第二个参数为剪切后返回输出的参数,本身不会改变)ITopologicalOperator接口的第七个方法ConvexHull(方法,构造一个Geometry,大部分为Polygon类型的几何要素,该要素为调用此方法的ITopologicalOperator类型的变量最小的外边框)

ITopologicalOperator接口的第八个方法SymmetricDifference (other )(方法,并集减去交集的部分,调用次方法的变量为第一个参数,other为第二个参数,最后返回变量到一个Geometry类型的变量,该变量的范围均在两个参数范围内,但不在两个参数相交的部分)

25. 创建Buffer并选择里面的要素

========================================================

怎样创建buffer:(来源于管网线处理删除冗余节点)

========================================================

1.Dim pTopOper As ITopologicalOperator

2.Set pTopOper = pfeature.Shape

3.Dim pGeometry As IGeometry

4.Set pGeometry = pTopOper.Buffer(1)

复制代码

(注意,这个pfeature是在前面定义的pfeature=pFeatureCursor.NextFeature,不用重新定义一个)

========================================================

怎样在buffer里面选择要素:

========================================================

1.Dim pSpFilter As ISpatialFilter

2.Set pSpFilter = New SpatialFilter

3.Dim pTopOper As ITopologicalOperator

4.Set pTopOper = pfeature.Shape

5.Dim pGeometry As IGeometry

6.Set pGeometry = pTopOper.Buffer(1)

7.Set pSpFilter.Geometry = pGeometry

8.pSpFilter.SpatialRel = esriSpatialRelContains

9.'(esriSpatialRelContains是ISpatialFilter里面SpatialRel的一种参数

esriSpatialRelEnum,值为8,代表在这个区域内包含的要素)

10.

11.Set m_pSelGW_D = pLyr_D

12.m_pSelGW_D.SelectFeatures pSpFilter, esriSelectionResultNew, False

13.'(m_pSelGW_D是IfeatureSelection类型的变量)

14.pSpFilter.SpatialRel = esriSpatialRelIntersects

1.Set m_pSelGW_X = pLyr

2.m_pSelGW_X.SelectFeatures pSpFilter, esriSelectionResultNew, False 26. Merge要素Union要素

1.Private Sub UnionSelected()

2.Dim pMxDoc As IMxDocument

3.Dim pFtrLyr As IFeatureLayer

4.Dim pFtrCls As IFeatureClass

5.Dim pFtrSel As IFeatureSelection

6.Dim pFtr As IFeature

7.Dim pEnumGeom As IEnumGeometry

8.Dim pEnumGeomBind As IEnumGeometryBind

9.Dim pTopOp As ITopologicalOperator

10.Dim pUnionedPolylines As IPolyline

11.' Get a ref to the selected polylines in the 1st layer

12.Set pMxDoc = ThisDocument

13.Set pFtrLyr = https://www.360docs.net/doc/0215458429.html,yer(0)

14.Set pFtrSel = pFtrLyr

15.Set pFtrCls = pFtrLyr.FeatureClass

16.' Create an enumeration of the selected polyines

17.Set pEnumGeom = New EnumFeatureGeometry

18.Set pEnumGeomBind = pEnumGeom

19.pEnumGeomBind.BindGeometrySource Nothing, pFtrSel.SelectionSet

20.pEnumGeom.Reset

21.

22.' Union the polylines

23.Set pUnionedPolylines = New Polyline

24.Set pTopOp = pUnionedPolylines

25.pTopOp.ConstructUnion pEnumGeom

26.

27.' Add this new unioned polyline to the featureclass

28.Set pFtr = pFtrCls.CreateFeature

29.Set pFtr.Shape = pUnionedPolylines

30.pFtr.Store

31.End Sub

相关主题
相关文档
最新文档