Arcpy 无法列出充满栅格的文件夹中的栅格

问题描述 投票:0回答:1

我需要为课程的最终项目编写 Arcpy 代码。 我正在尝试运行一个脚本来列出文件夹中的栅格,将它们添加到 GDB,使用 shapefile 剪切它们,然后通过 NDVI 运行剪切的栅格。但是,当我尝试列出栅格时,脚本告诉我文件夹中有 0 个栅格。 我已经从 USGS Earth Explorer 下载了光栅文件。

这是我正在尝试使用的代码。

import arcpy
import os

# Set the workspace (folder containing raster datasets)
workspace = r"C:\Users\FGiacomelli\Documents\ArcGIS\Projects\Konza\Rasters\R1"

# Check if the workspace exists
if not arcpy.Exists(workspace):
    print("Workspace does not exist: {}".format(workspace))
    quit()

# Set the arcpy environment to overwrite outputs
arcpy.env.overwriteOutput = True

# Check out the Spatial Analyst extension
arcpy.CheckOutExtension("Spatial")

try:
    # List all the TIFF raster datasets in the workspace
    raster_list = arcpy.ListRasters("*", "TIF")

    if raster_list:
        # Print the number of raster datasets
        print("Number of Rasters: {}".format(len(raster_list)))

        # Print the names of the raster datasets
        print("Raster Names:")
        for raster in raster_list:
            print(raster)
    else:
        print("No TIFF raster datasets found in the specified workspace.")

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

finally:
    # Check in the Spatial Analyst extension
    arcpy.CheckInExtension("Spatial")

我什至尝试将文件移动到不同的位置,因为我认为可能是 ESRI 由于某种原因不允许我这样做。到目前为止还没有任何效果。

我一直在摸索这个问题,不知道如何解决它。

python raster arcgis arcpy
1个回答
0
投票

很可能是因为你没有设置工作空间...你需要使用

arcpy.env.workspace
arcpy.env.workspace
记录为:

支持当前工作空间环境的工具使用指定为地理处理工具输入和输出的默认位置的工作空间。

来源:https://pro.arcgis.com/en/pro-app/latest/arcpy/classes/env.htm

arcpy.ListRasters
就是这样一个工具。

arcpy.env.workspace = r"C:\Users\FGiacomelli\......\R1"

还有不需要arcpy.da.Walk

arcpy.env.workspace
。但是,这仅适用于文件,并且还包括文件夹的子目录。

与列表功能不同,Walk 不使用工作空间环境来识别其起始工作空间。相反,Walk 遍历的第一个起始(或顶部)工作空间是在其第一个参数 top 中指定的。

来源:https://pro.arcgis.com/en/pro-app/latest/arcpy/get-started/listing-data.htm


或者,如果您不想使用

arcpy.env.workspace
,您也可以使用
pathlib.Path.glob
而不是
arcpy.ListRasters
来迭代您的 tif 文件:

from pathlib import Path

workspace = r"C:\Users\FGiacomelli\Documents\ArcGIS\Projects\Konza\Rasters\R1"

rasters = [raster for raster in Path(workspace).glob("*.tif")]

print(f"Number of Rasters: {len(rasters)}")

for raster in rasters:
    print(raster)
© www.soinside.com 2019 - 2024. All rights reserved.