Arcpy 用nc文件转为多个单波段栅格文件

例子里使用的nc文件,变量名是“pre”,这个变量名需要提前查到。我是用matlab读取查到的。

import arcpy  
from arcpy import env  
from arcpy.sa import *
import os

arcpy.CheckOutExtension("Spatial")

inNetCDF = r"E:\DATA\SPI\cru_ts4_05_1901_2020_pre_dat.nc"  #输入路径
outLoc = r"E:\DATA\SPI\cru_pre"  #输出路径

variable = "pre"  #此处是.nc数据中的变量名
x_dimension = "lon"
y_dimension = "lat"
band_dimension = ""
valueSelectionMethod = "BY_VALUE" #以上五个变量为第一个函数会用到的变量,提前定义好

nc_FP = arcpy.NetCDFFileProperties(inNetCDF)  #读取netCDF文件
nc_Dim = nc_FP.getDimensions()  #获取维度信息,返回一个维度列表 ['lon','lat','time']
	

for dimension in nc_Dim:

    if dimension == "time":
        top = nc_FP.getDimensionSize(dimension)    #获取维度的大小
        
        for i in range(0, top):
            dimension_value = nc_FP.getDimensionValue(dimension, i)    #遍历每一个时间值
            year_value = str(dimension_value[0:4])          #对每一个值提取年份

            if eval(year_value) >= 2000:                   #判断年份
                nowFile =str(dimension_value[0:7])        #取前七位,作为输出名
                nowFile = nowFile.replace('/',' ')     #去掉输出名中的‘/’
                print(nowFile)
                
                dv1 = ["time", dimension_value]          #列表
                dimension_values = [dv1]                  
                
                outpath= outLoc+"\\"+nowFile + ".tif"
                arcpy.MakeNetCDFRasterLayer_md(inNetCDF,variable,x_dimension,y_dimension,
                                               nowFile,band_dimension,dimension_values,
                                               valueSelectionMethod)
                arcpy.CopyRaster_management(nowFile, outpath, "", "", "", "NONE", "NONE", "")
            
print('success')

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值