找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2204|回复: 1

[求助] 写好处理一个文件的代码,怎么添加循环来处理整个文件夹

1

主题

1

帖子

1

积分

贫民

积分
1
苏痞痞 发表于 2021-5-17 09:52:46 | 显示全部楼层 |阅读模式
写好处理一个文件的代码,怎么添加循环来处理整个文件夹中同后缀文件,
处理一个文件代码如下:
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
__author__ = 'dove'
import sys
from osgeo import gdal
import os
import numpy as np

def GetArray(path):
    driver = gdal.GetDriverByName('GTiff')#
    datasource = gdal.Open(path)#
    geoTran = datasource.GetGeoTransform()
    print(geoTran)
    rows = datasource.RasterXSize#
    cols = datasource.RasterYSize
    print(rows,cols)
    band = datasource.GetRasterBand(1)#
    band_arr = band.ReadAsArray()
    return band_arr,geoTran,rows,cols
def  get200arr(arr):
    print(len(arr))
    print(len(arr[0]))
    new_arr = []
    k = 0
    for item in arr:
        row_ = []
        for num in item:            
            if num == 16:
                k+=1
                row_.append(1)
            else:
                row_.append(0)               
        new_arr.append(row_)
    print(len(new_arr),len(new_arr[0]),k)
    return np.array(new_arr)
def writeTif(arr,geoTran,rows,cols,outdata):#gdal.GDT_Float32
    tiffDriver = gdal.GetDriverByName('GTiff')
    ds_out = tiffDriver.Create(outdata,\
                            int(rows),int(cols),1\
                            ,gdal.GDT_Float32)#outtif name
    outband = ds_out.GetRasterBand(1)
    outband.WriteArray(arr)
    ds_out.SetGeoTransform(geoTran)
    ds_out.FlushCache()
    del ds_out
if __name__=="__main__":
    datapath = "E:/shuchu/clip_MOD10A2.A2001361.Eight_Day_Snow_Cover.tif"
    print(os.path.exists(datapath))
    outdata = "E:/2001xiangyuan/clip_MOD10A2.A2001361.Eight_Day_Snow_Cover_10.tif"
    band_arr,geoTran0,rows0,cols0 = GetArray(datapath)
    snow_arr = get200arr(band_arr)
    writeTif(snow_arr,geoTran0,rows0,cols0,outdata)








回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2021-6-12 06:09:16 | 显示全部楼层
用glob.glob
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表