在Python中基于日期值从多个NetCDF文件中提取光栅

2024-10-02 06:36:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个NetCDF文件(每年一个),其中包含澳大利亚的每日降雨量值。在

目前,我可以从包含我想要的日期列表的.csv文件中提取我想要的特定日期。然后每天以光栅文件的形式输出。在

然而,我现在的剧本只允许我一年一次做这个。我对python相当陌生,我希望在创建一个循环以读取NetCDF文件(以及.csv文件中的日期列表)来重新运行脚本,而不是通过更改它读取的NetCDF文件(以及.csv文件中的日期列表)来获得一些帮助

我知道像NetCDF4这样的模块可以将所有文件作为一个文件来处理,但是尽管花了很多时间阅读其他人的工作,我还是一点也不明智。在

以下是我目前所掌握的情况:

import os, sys
import arcpy

# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")
arcpy.env.overwriteOutput = True

# Script arguments
netCDF = "G:\\Gridded_rain\\DAILY\\netcdf\\Daily_analysis_V3"
rainfall = "G:\\output_test\\r_"

arcpy.env.workspace = netCDF

# Read Date from csv file
eveDate = open ("G:\\selectdate_TEST1.csv", "r")
headerLine = eveDate.readline()
valueList = headerLine.split(",")
dateValueIndex = valueList.index("Date")
eventList = []
for line in eveDate.readlines():
    segmenLine = line.split(",")
    variable = "pre"
    x_dimension = "lon"
    y_dimension = "lat"
    band_dimension = ""
    #dimensionValues = "r_time 1900025"

    valueSelectionMethod = "BY_VALUE"
    outFile = "Pre"
    # extract dimensionValues from csv file
    arcpy.MakeNetCDFRasterLayer_md("pre.2011.nc", variable, x_dimension, y_dimension, outFile, band_dimension, segmenLine[dateValueIndex], valueSelectionMethod)
    print "layer done"
    #copy and save as raster tif file
    arcpy.CopyRaster_management(outFile, rainfall + segmenLine[dateValueIndex] + ".tif" , "", "", "", "NONE", "NONE", "")
    print "raster done"

NetCDF文件的名称从pre.1900.nc到pre.2011.nc

任何帮助将不胜感激!在


Tags: 文件csvimportenv列表netcdfoutfilefile
1条回答
网友
1楼 · 发布于 2024-10-02 06:36:46

如果问题真的是关于python命令行参数的,您可以添加如下内容:

import sys
year = int(sys.argv[1])
nc_name = 'pre.%d.nc' % (year,)

然后使用这个nc_name作为arcpy.MakeNetCDFRasterLayer_md调用中的filepathargument

另一种可能性是,如评论中所建议,质疑硬代码另一层,如下所示:

^{pr2}$

然后调用arcpy.MakeNetCDFRasterLayer_md

相关问题 更多 >

    热门问题