ArcEngine接口大全 下载本文

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. 2. 3. 4.

Dim pTopOper As ITopologicalOperator Set pTopOper = pfeature.Shape Dim pGeometry As IGeometry

Set pGeometry = pTopOper.Buffer(1)

复制代码

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

======================================================== 怎样在buffer里面选择要素:

======================================================== 1. 2. 3. 4. 5. 6. 7. 8.

Dim pSpFilter As ISpatialFilter Set pSpFilter = New SpatialFilter

Dim pTopOper As ITopologicalOperator Set pTopOper = pfeature.Shape Dim pGeometry As IGeometry

Set pGeometry = pTopOper.Buffer(1) Set pSpFilter.Geometry = pGeometry

pSpFilter.SpatialRel = esriSpatialRelContains

9. 10. 11. 12. 13. 14. 1. 2.

'(esriSpatialRelContains是ISpatialFilter里面SpatialRel的一种参数esriSpatialRelEnum,值为8,代表在这个区域内包含的要素)

Set m_pSelGW_D = pLyr_D

m_pSelGW_D.SelectFeatures pSpFilter, esriSelectionResultNew, False '(m_pSelGW_D是IfeatureSelection类型的变量) pSpFilter.SpatialRel = esriSpatialRelIntersects Set m_pSelGW_X = pLyr

m_pSelGW_X.SelectFeatures pSpFilter, esriSelectionResultNew, False

26. Merge要素Union要素 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.

Private Sub UnionSelected() Dim pMxDoc As IMxDocument Dim pFtrLyr As IFeatureLayer Dim pFtrCls As IFeatureClass Dim pFtrSel As IFeatureSelection Dim pFtr As IFeature

Dim pEnumGeom As IEnumGeometry

Dim pEnumGeomBind As IEnumGeometryBind Dim pTopOp As ITopologicalOperator Dim pUnionedPolylines As IPolyline

' Get a ref to the selected polylines in the 1st layer Set pMxDoc = ThisDocument

Set pFtrLyr = pMxDoc.FocusMap.Layer(0) Set pFtrSel = pFtrLyr

Set pFtrCls = pFtrLyr.FeatureClass

' Create an enumeration of the selected polyines Set pEnumGeom = New EnumFeatureGeometry

Set pEnumGeomBind = pEnumGeom

pEnumGeomBind.BindGeometrySource Nothing, pFtrSel.SelectionSet pEnumGeom.Reset

' Union the polylines

Set pUnionedPolylines = New Polyline Set pTopOp = pUnionedPolylines pTopOp.ConstructUnion pEnumGeom

' Add this new unioned polyline to the featureclass