我有多个NetCDF文件(每年一个),其中包含澳大利亚的每日降雨量值。
目前,我可以通过读取包含我想要的日期列表的.csv文件来提取我想要的特定日期。然后,它将每天输出为光栅文件。
然而,我目前的剧本只允许我一次这样做一年。我是python的新手,而不是通过更改它读入的NetCDF文件(以及.csv文件中的日期列表)多次重新运行脚本我希望得到一些帮助创建一个循环,读取NetCDF的列表。
据我所知,像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
非常感谢任何帮助!
答案 0 :(得分:1)
如果问题实际上是关于python命令行参数,你可以添加如下内容:
import sys
year = int(sys.argv[1])
nc_name = 'pre.%d.nc' % (year,)
然后在nc_name
调用中使用此arcpy.MakeNetCDFRasterLayer_md
作为filepathargument
另一种可能性是如评论中所建议的那样对硬编码提出另类问题:
for year in range(1900, 2012):
nc_name = 'pre.%d.nc' % (year,)
然后拨打arcpy.MakeNetCDFRasterLayer_md
等