• vba 宗地内的土地利用类型


    Sub LU()

    Dim app As IApplication
    Set app = Application

    Dim pMxDocument As IMxDocument
    Set pMxDocument = Application.Document

    Dim pMap As IMap
    Set pMap = pMxDocument.FocusMap

    Dim pFeatureLayerZone As IFeatureLayer
    Set pFeatureLayerZone = pMap.Layer(0) '第一个图层是zone

    Dim pFeatureLayerLU As IFeatureLayer
    Set pFeatureLayerLU = pMap.Layer(1) '第二个图层是landuse

    Dim pFeatureClassZone As IFeatureClass
    Set pFeatureClassZone = pFeatureLayerZone.FeatureClass

    Dim pFeatureClassLU As IFeatureClass
    Set pFeatureClassLU = pFeatureLayerLU.FeatureClass


    Dim pFeatureCursorZone As IFeatureCursor
    Set pFeatureCursorZone = pFeatureClassZone.Search(Nothing, False)

    Dim pFeatureCursorLU As IFeatureCursor


    Dim pFeatureZone As IFeature
    Set pFeatureZone = pFeatureCursorZone.NextFeature

    Dim pRelZone As IRelationalOperator
    Dim zoneIndex As Long
    zoneIndex = pFeatureClassZone.Fields.FindField("LU_zj") 'zone添加新的字段为LU_zj,用于记录和它相交的土地类型


    Dim pFeatureLU As IFeature



    Dim pGeoLU As IGeometry
    Dim luIndex As Long
    luIndex = pFeatureClassLU.Fields.FindField("实地调查地") '"实地调查地"是被考察的字段
    Dim fValues As String




    While Not pFeatureZone Is Nothing

       Set pRelZone = pFeatureZone.Shape
       fValues = ""
       

       Set pFeatureCursorLU = pFeatureClassLU.Search(Nothing, False) '重头获取cursor,不然跑空
       Set pFeatureLU = pFeatureCursorLU.NextFeature
       
       
       While Not pFeatureLU Is Nothing
         Set pGeoLU = pFeatureLU.Shape
         
           If pRelZone.Overlaps(pGeoLU) Then '空间关系overlaps,contain等
           
              If InStr(fValues, pFeatureLU.Value(luIndex)) = 0 Then   '删除重复,没找到的才添加
              
                 fValues = fValues & pFeatureLU.Value(luIndex) & ","
             
             End If
             
           End If
           
         Set pFeatureLU = pFeatureCursorLU.NextFeature
       Wend
       
       If Len(fValues) > 1 Then
        
           fValues = Left(fValues, Len(fValues) - 1)
        
       End If
       
       pFeatureZone.Value(zoneIndex) = fValues
       pFeatureZone.Store
        

       Set pFeatureZone = pFeatureCursorZone.NextFeature
    Wend




    End Sub





  • 相关阅读:
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
    漫说996icu黑名单
    python datetime object 去除毫秒(microsecond)
    webpack4 系列教程(十四):Clean Plugin and Watch Mode
    webpack4 系列教程(十三):自动生成HTML文件
    webpack4 系列教程(十二):处理第三方JavaScript库
    webpack4 系列教程(十一):字体文件处理
    第一次遭遇云服务器完全崩溃
    music-api-next:一款支持网易、xiami和QQ音乐的JS爬虫库
    MathJax: 让前端支持数学公式
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/2696632.html
Copyright © 2020-2023  润新知