IMap接口的第一个属性Layers (uid, recursive ) (只读,第二个参数为True的时候,该属性获取第一个参数uid指定的Layers,赋值给一个IEnumLayer的变量) 例子代码:
1. Sub GetFeatureLayers()
2. Dim pMxDocument As IMxDocument 3. Dim pMap As IMap
4. Dim pEnumLayer As IEnumLayer 5. Dim pLayer As ILayer 6. Dim pId As New UID 7.
8. Set pMxDocument = Application.Document 9. Set pMap = pMxDocument.FocusMap
10. pId = \11. Set pEnumLayer = pMap.Layers(pId, True) 12. pEnumLayer.Reset
13. Set pLayer = pEnumLayer.Next 14. Do While Not pLayer Is Nothing 15. MsgBox pLayer.Name
16. Set pLayer = pEnumLayer.Next 17. Loop 18. End Sub
其中比较常用的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) 例子代码:
1. Public Sub AddShapeFile()
2. Dim pWorkspaceFactory As IWorkspaceFactory 3. Dim pFeatureWorkspace As IFeatureWorkspace 4. Dim pFeatureLayer As IFeatureLayer 5. Dim pMxDocument As IMxDocument 6. Dim pMap As IMap 7.
8. Set pWorkspaceFactory = New ShapefileWorkspaceFactory
9. Set pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(\
0)
10. Set pFeatureLayer = New FeatureLayer 11. Set
pFeatureLayer.FeatureClass
=
pFeatureWorkspace.OpenFeatureClass(\
12. pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName 13. Set pMxDocument = Application.Document 14. Set pMap = pMxDocument.FocusMap
15. pMap.AddLayer pFeatureLayer 'alternatively, we could call AddLayer on
IMXDocument 16. End Sub
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从当前的位
置移动到指定的索引位置) 例子代码:
1. Public Sub MoveLayer()
2. Dim pMxDocument As IMxDocument 3. Dim pMap As IMap 4. Dim pLayer As ILayer
5. Set pMxDocument = Application.Document 6. Set pMap = pMxDocument.FocusMap 7. Set pLayer = pMxDocument.SelectedLayer 8. pMap.MoveLayer pLayer, pMap.LayerCount - 1 9. End Sub
IMap接口的第十二个方法SelectByShape(Shape, env, justOne) (方法,从Layer中依靠一个图形的范围shape和一个选择的环境env来选择要素,而在所有图层中只从IFeatureLayer的图层中进行选择)
20. 关于IPropertySet接口(esriSystem)
IPropertySet接口的第一个方法SetProperties (names, values ) (方法,设置属性) IPropertySet接口的第二个方法SetProperty (name, value ) (方法,设置属性) 例子代码:
1. Dim pPropset As IPropertySet 2. Set pPropset = New PropertySet 3. With pPropset
4. .SetProperty \5. .SetProperty \6. .SetProperty \7. .SetProperty \8. .SetProperty \9. .SetProperty \10. End With 11.
12. Dim pFactSDE As IWorkspaceFactory 13. Set pFactSDE = New SdeWorkspaceFactory 14.
15. Dim pWorkSpaceSDE As IWorkspace
16. Set pWorkSpaceSDE = pFactSDE.Open(pPropset, Me.hWnd) 17.
18. 'Example of how to use a property set to open a Personal Geodatabase workspace. 19.
20. Dim pPropset As IPropertySet 21. Set pPropset = New PropertySet 22.
23. pPropset.SetProperty \24.
25. Dim pFactAccess As IWorkspaceFactory 26. Set pFactAccess = New AccessWorkspaceFactory 27.
28. Dim pWorkSpaceAccess As IWorkspace
29. Set pWorkSpaceAccess = pFactAccess.Open(pPropset, Me.hWnd)
21. 关于IWorkspaceEdit接口(esriGeoDatabase) 例子代码:
1. Public Sub WorkspaceEdit()
2. Dim pWorkspaceFactory As IWorkspaceFactory
3. Set pWorkspaceFactory = New esriDataSourcesGDB.AccessWorkspaceFactory 4. Dim pFeatureWorkspace As IFeatureWorkspace
5. Set pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(\0) 6. Dim pFeatureClass As IFeatureClass
7. Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass(\8. Dim pWorkspaceEdit As IWorkspaceEdit 9. Set pWorkspaceEdit = pFeatureWorkspace 10. Dim pFeature As IFeature
11. Dim iResponse As Integer 12. Dim bHasEdits As Boolean 13. pWorkspaceEdit.StartEditing True 14. pWorkspaceEdit.StartEditOperation
15. Set pFeature = pFeatureClass.GetFeature(1) 16. pFeature.Delete
17. pWorkspaceEdit.StopEditOperation
18. iResponse = MsgBox(\19. If iResponse = vbYes Then
20. pWorkspaceEdit.UndoEditOperation 21. End If
22. pWorkspaceEdit.HasEdits bHasEdits 23. If bHasEdits Then
24. pWorkspaceEdit.StopEditing MsgBox(\25. End If 26. End Sub
在实际问题中,如果有多次操作需要更改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选取的区别)
22. 关于IWorkspaceFactory接口(esriGeoDatabase)
IWorkspaceFactory接口的第一个方法Open (ConnectionProperties, hWnd ) (方法,从一个工作工厂打开一个工作空间,并返回IWorkspace类型的变量,方法中的第一个参数ConnectionProperties是IPropertySet接口的变量) 例子代码:
1. Dim pSdeWorkspaceFactory As IWorkspaceFactory 2. Dim pSdeWorkspace As IWorkspace
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库ArcEngine - 开发接口集(8)在线全文阅读。
相关推荐: