zoukankan      html  css  js  c++  java
  • RasterDataset的某两个月的波段合成程序 vba

    Private Sub CommandButton1_Click()
      
       Dim year As String
       year = TextBox1.Text
      
       '闰年
       Dim MerageMatrixLeapYear(11) As String  '对应规则
       MerageMatrixLeapYear(0) = "01001017"
       MerageMatrixLeapYear(1) = "02033049"
       MerageMatrixLeapYear(2) = "03065081"
       MerageMatrixLeapYear(3) = "04097113"
      
       MerageMatrixLeapYear(4) = "05129145"
       MerageMatrixLeapYear(5) = "06145161"
       MerageMatrixLeapYear(6) = "07177193"
       MerageMatrixLeapYear(7) = "08209225"
      
       MerageMatrixLeapYear(8) = "09241257"
       MerageMatrixLeapYear(9) = "10273289"
       MerageMatrixLeapYear(10) = "11305321"
       MerageMatrixLeapYear(11) = "12337353"
      
       '非闰年
       Dim MerageMatrixNonLeapYear(11) As String
       MerageMatrixNonLeapYear(0) = "01001017"
       MerageMatrixNonLeapYear(1) = "02033049"
       MerageMatrixNonLeapYear(2) = "03065081"
       MerageMatrixNonLeapYear(3) = "04097113"
      
       MerageMatrixNonLeapYear(4) = "05113129"
       MerageMatrixNonLeapYear(5) = "06145161"
       MerageMatrixNonLeapYear(6) = "07177193"
       MerageMatrixNonLeapYear(7) = "08209225"
      
       MerageMatrixNonLeapYear(8) = "09241257"
       MerageMatrixNonLeapYear(9) = "10273289"
       MerageMatrixNonLeapYear(10) = "11305321"
       MerageMatrixNonLeapYear(11) = "12337353"
      
      
       'Get the focused map from MapDocument
        Dim pMxDoc As IMxDocument
        Set pMxDoc = ThisDocument
        Dim pMap As IMap
        Set pMap = pMxDoc.FocusMap
        
        'Create a RasterBandCollection from the raster layers in ArcMap
        Dim pEnumLayers As IEnumLayer
     
       
        Dim pLayer As ILayer
        Dim pRasLayer As IRasterLayer
             
        Dim pRaster As IRaster
        Dim pRBCollTmp As IRasterBandCollection
        Dim pRBand As IRasterBand
           
        Dim pRBColl As IRasterBandCollection
      
        
        Dim month As Integer
        Dim dataname As String
        Dim data1 As String
        Dim data2 As String
       
       
        'Create a RasterLocalOp operator
        Dim pLocalOp As ILocalOp
        Set pLocalOp = New RasterLocalOp
       
        'Set output workspace
        Dim pEnv As IRasterAnalysisEnvironment
        Set pEnv = pLocalOp
       
        Dim pWS As IWorkspace
        Dim pWSF As IWorkspaceFactory
        Set pWSF = New RasterWorkspaceFactory
        Set pWS = pWSF.OpenFromFile("c:\temp", 0) '结果数据的输出目录
        Set pEnv.OutWorkspace = pWS
       
       ' Dim pRWS As IRasterWorkspace2 ' 用来create rasterdataset
       
       
       For month = 0 To 11
       
        Set pEnumLayers = pMap.Layers
        Set pRBColl = New Raster
       
        dataname = Mid(MerageMatrixLeapYear(month), 1, 2)
        data1 = Mid(MerageMatrixLeapYear(month), 3, 3)
        data2 = Mid(MerageMatrixLeapYear(month), 6, 3)
         
        'Loop through all layers in ArcMap
        Set pLayer = pEnumLayers.Next
        Do Until pLayer Is Nothing
        If TypeOf pLayer Is IRasterLayer Then
           
            If pLayer.Name = "n" + year + data1 + ".tif" Or pLayer.Name = "n" + year + data2 + ".tif" Then
               Set pRasLayer = pLayer
               Set pRaster = pRasLayer.Raster
               Set pRBCollTmp = pRaster
               Set pRBand = pRBCollTmp.Item(0) '保证是单波段的才可以
               pRBColl.AppendBand pRBand
            End If
       
        End If
       
        Set pLayer = pEnumLayers.Next
        Loop
            

        'Compute cell-by-cell (local) statistics
        Dim pOutRaster As IRaster
        Set pOutRaster = pLocalOp.LocalStatistics(pRBColl, esriGeoAnalysisStatsMaximum)
       
       
        'Add output into ArcMap as a raster layer
        Dim pOutRasLayer As IRasterLayer
        Set pOutRasLayer = New RasterLayer
        pOutRasLayer.Name = dataname  '给layer赋名字
        pOutRasLayer.CreateFromRaster pOutRaster
        pMap.AddLayer pOutRasLayer
       
     Next month

     MsgBox "生成完毕!"
    End Sub

  • 相关阅读:
    Flutter-动画-原理篇
    Flutter-动画-实践篇
    Flutter-动画-概念篇
    Android-textview图文混排(网络图片)
    Android--解决图片保存到相册显示1970年1月1日 8:00的问题
    Android--使用JobService实现进程保活
    Android--获取手机联系人和Sim卡联系人
    git 代码服务器的网页版gitweb的搭建
    Android 内存管理中的 Shallow heap Retained heap
    欧几里德算法----最大公约数算法
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1781519.html
Copyright © 2011-2022 走看看