如何使用 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)
我正在尝试使用 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)