如何使用 ArcPy 将多个栅格转换为 NetCDF

How to convert multiple Raster to NetCDF using ArcPy

我正在尝试使用 ArcPy 脚本将多个栅格文件转换为 NetCDF 文件。当我 运行 下面的脚本时,我收到以下错误消息:

Message File Name   Line    Position    
Traceback               
    <module>    <module1>   19      
    RasterToNetCDF  C:\Program Files\ArcGIS\Desktop10.3\ArcPy\arcpy\md.py   253     
ExecuteError: Failed to execute. Parameters are not valid.
ERROR 000840: The value is not a Raster Layer.
ERROR 000840: The value is not a Raster Catalog.
Failed to execute (RasterToNetCDF).

Python 脚本:

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = r"D:12A"

# Set local variables
inRaster = r"D:12A"
outNetCDFFile = r"D:12A/nppnetcdf.nc"
variable = "elevation"
units = "meter"
XDimension = "x"
YDimension = "y"
bandDimension = ""

# Process: RasterToNetCDF
arcpy.RasterToNetCDF_md(inRaster, outNetCDFFile, variable, units,
                        XDimension, YDimension, bandDimension)

有两个问题对我来说很突出。

首先,您的文件路径outNetCDFFile = r"D:12A/nppnetcdf.nc"无效。两者都应该是反斜杠 \ 以获得有效路径。

其次,更可能导致错误的原因 -- inRaster = r"D:12A" 似乎是一个目录。您不能仅将目录传递给栅格文件(不是目录!)上的 RasterToNetCDF_md tool -- the input parameter has to be a raster layer. Run the MakeRasterLayer_management tool 来创建栅格图层,然后将该结果传递给 RasterToNetCDF_md.

@Erica 回答了您收到错误的原因,但如果您想对目录中的每个栅格数据集执行转换,则必须首先在 it.This 中创建栅格列表可以是完成这样的事情:

rasterlist = arcpy.ListRasters()
## other variables, as you have already defined them in your code
for raster in rasterlist:
    RastertoNetCDF_md(variables)

所以要实现这个:

# Set environment settings
env.workspace = r"D:12A"

# Set local variables
inRaster = r"D:12A"
outNetCDFFile = r"D:12A\nppnetcdf.nc"
variable = "elevation"
units = "meter"
XDimension = "x"
YDimension = "y"
bandDimension = ""
rasterlist = arcpy.ListerRasters()

# Process: RasterToNetCDF
for raster in rasterlist:
    arcpy.RasterToNetCDF_md(inRaster, outNetCDFFile, variable, units,
                    XDimension, YDimension, bandDimension)