zoukankan      html  css  js  c++  java
  • 叠加取最大值rasterdataset的操作 rasterdataset

       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 "生成完毕!"

  • 相关阅读:
    POJ 2991 Crane(线段树)
    HDU 1496 Equations(哈希表)
    POJ 2785 4 Values whose Sum is 0(哈希表)
    挑战程序设计竞赛 3.2 常用技巧精选(一)
    AOJ 0531:Paint Color(二维离散+imos)
    POJ 2549:Subsets(哈希表)
    POJ 3977:Subset(折半枚举+二分)
    CodeForces 148D Bag of mice
    POJ 2151 Check the difficulty of problems
    HDU 3853 LOOPS
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1744662.html
Copyright © 2011-2022 走看看