簡體   English   中英

柵格匯總組具有通用文件名

[英]summation group of rasters have common file name

我有一個文件夾,其中包含成組的柵格:

  • 00z01JAN2010、01z01JAN2010、02z01JAN2010,... 23z01JAN2010
  • 00z02JAN2010、01z02JAN2010、02z02JAN2010,... 23z02JAN2010

這些柵格的使用時間長達12個月,直到DEC。 我想總結一下這個文件夾中的每一天。 我試圖在(z)處分割文件名,然后列出所有具有相似的相似第二部分的柵格,然后使用像元統計進行求和。 我用fnmatch做到這一點,但它返回空列表。 有什么建議么!

import os, arcpy, fnmatch
import arcpy.sa
from arcpy import env

arcpy.CheckOutExtension("Spatial")  
arcpy.env.overwriteOutput = True  
finalRasterFold = "E:\Drive_GGGGGG\PhD_AinShams\PhD_Proposal_RainNetwork\Frequency_Files\Con_1_0"
outDayRasterFold = r"D:\PhD_work\Rasters_Day"

arcpy.env.workspace = finalRasterFold 
RainRasterList = arcpy.ListRasters('*')

for h in range(0,24):
    DayRainRaster = []
    j =[]
    for n in RainRasterList:
        fn1, fn2 = n.split('z')

        if fnmatch.filter(n[3:], fn2):
            j.append(n)

        j = arcpy.Raster()
        DayRainRaster.append(j)
    arcpy.gp.CellStatistics(DayRainRaster,outDayRasterFold + r"\DayRas" + str(h),"SUM","DATA")

您可以使用collections模塊中的defaultdict來記錄每天發生的次數。

from collections import defaultdict

day_count = defaultdict(int)

for n in RainRasterList:
    fn1, fn2 = n.split('z')
    day_count[fn2] += 1

print(day_count)

@James ..我找到了一種方法來解決您的問題。

 newlist = []
for n in RainRasterList:
    fn1, fn2 = n.split('z')
    temp = (fn2, n)
    newlist.append (s)
for k, v in newlist:
    day_count[k].append(v)
day_count.items()

rlist =[]   
for k, v in day_count.iteritems():
    rlist.append(v)

for i in range(len(rlist)):
    arcpy.gp.CellStatistics(rlist[i], outDayRasterFold + r"\D" + str(rlist[i][1]),"SUM","DATA")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM