zoukankan      html  css  js  c++  java
  • 有关对于在ArcGIS中将选中的纪录的feature调用出来

    在ArcGIS中经常会需要将选中的纪录调用出来,需要使用如下一下一些接口,ISelection,IEnumFeature,IEnumFeatureSetup
    以下是从官方帮助文档中提供的三种提取选择feature的代码,现贴出来以供参考

    IMap FeatureSelection Example

    Below are three different methods for looping through a map's selection. The first script uses IMap::FeatureSelection. The problem with this approach is that there is no guarantee all of the fields for a particular feature class are returned in the query. By default only the Shapefield is asked for as this property is primarily used to draw the map's selected features only, not access their attributes. However, this approach may be used when editing; in this case, all the fields are requested.


    The second sample is the same as the first except it additionally uses IEnumFeatureSetup to explicitly tell the map to retrieve all fields.

    The last sample is the best approach. It is rarely the case that one would want to loop through the entire selection in such a manner as the first two samples. The exception is of course when drawing the selected features or determining the total selection count. Instead, it is much more practical to loop through the selections belonging only to the layers of interest. For example, in a case where only selected polygons are of interest, it is much more efficient to only check the geometry type of each feature class rather than each feature returned by IMap::FeatureSelection.

    Public Sub LoopThruSelection()
    Dim pDoc As IMxDocument
    Dim pMap As IMap
    Dim pEnumFeat As IEnumFeature
    Dim pFeat As IFeature

    Set pDoc = ThisDocument
    Set pMap = pDoc.FocusMap
    Set pEnumFeat = pMap.FeatureSelection
    Set pFeat = pEnumFeat.Next
    Do While (Not pFeat Is Nothing)
    Debug.Print pFeat.Value(pFeat.Fields.FindField("Name"))
    Set pFeat = pEnumFeat.Next
    Loop
    End Sub


    Public Sub LoopThruSelection2()
    Dim pMxDoc As IMxDocument
    Dim pMap As IMap
    Dim pEnumFeature As IEnumFeature
    Dim pEnumFeatureSetup As IEnumFeatureSetup
    Dim pFeature As IFeature

    Set pMxDoc = ThisDocument
    Set pMap = pMxDoc.FocusMap
    Set pEnumFeature = pMap.FeatureSelection
    Set pEnumFeatureSetup = pEnumFeature 'QI
    pEnumFeatureSetup.AllFields = True
    Set pFeature = pEnumFeature.Next
    Do While (Not pFeature Is Nothing)
    Debug.Print pFeature.Value(pFeature.Fields.FindField("Name"))
    Set pFeature = pEnumFeature.Next
    Loop
    End Sub


    Public Sub QuerySelectedFeatures()
    Dim pMxDoc As IMxDocument
    Dim pEnumLayer As IEnumLayer
    Dim pFeature As IFeature
    Dim pFeatureCursor As IFeatureCursor
    Dim pFeatureLayer As IFeatureLayer
    Dim pFeatureSelection As IFeatureSelection
    Dim pMap As IMap
    Dim pSelectionSet As ISelectionSet
    Dim pUID As IUID
    'the UID specifies the interface identifier (GUID)
    'that represents the type of layer you want returned.
    'in this case we want an EnumLayer containing all the FeatureLayer objects
    Set pUID = New UID
    pUID = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}" ' Identifies FeatureLayer objects
    Set pMxDoc = Application.Document
    Set pMap = pMxDoc.FocusMap

    'Loop through all feature layers in the map
    Set pEnumLayer = pMap.Layers(pUID, True)
    pEnumLayer.Reset
    Set pFeatureLayer = pEnumLayer.Next
    Do While Not pFeatureLayer Is Nothing
    'Loop through the selected features per layer
    Set pFeatureSelection = pFeatureLayer 'QI
    Set pSelectionSet = pFeatureSelection.SelectionSet
    'Can use Nothing keyword if you don't want to draw them,
    'otherwise, the spatial reference might not match the Map's
    pSelectionSet.Search Nothing, False, pFeatureCursor
    Set pFeature = pFeatureCursor.NextFeature
    Do While Not pFeature Is Nothing
    'Do something with the feature
    Debug.Print pFeature.Value(pFeature.Fields.FindField("Name"))
    Set pFeature = pFeatureCursor.NextFeature
    Loop
    Set pFeatureLayer = pEnumLayer.Next
    Loop

    End Sub


  • 相关阅读:
    做了点数论的题
    2016日报总结
    2016在H3C
    2017春节小目标
    2016项目小总结
    明明的随机数
    计算字符个数
    字符串最后一个单词的长度
    字符串分隔
    考研回忆
  • 原文地址:https://www.cnblogs.com/yukun/p/822646.html
Copyright © 2011-2022 走看看