Python地理数据处理 26:基于Arcpy批量提取多波段遥感影像中的所有单波段影像(以worldclim2.1未来气候数据为例)

1. 基于Arcpy批量提取多波段遥感影像中的所有单波段影像(以worldclim2.1未来气候数据为例)

  今天要分享的是如何用Arcpy从多波段遥感影像中提取所有单波段影像的方法。
  最近我在使用worldclim未来气候数据时,遇到了一个问题。未来气候数据为包含19个单波段的多波段影像,因此如果一个个地进行提取肯定会比较麻烦。于是我用Arcpy编写了一个小代码,来实现批量提取。

# -*- coding: cp936 -*-
import arcpy
from arcpy.sa import *
import os

# 检查并获取 Spatial Analyst 扩展许可
arcpy.CheckOutExtension('Spatial')

# 设置工作空间
arcpy.env.workspace = "C:/Users/Jacksonzhao/Desktop/21-40"
output_directory = "C:/Users/Jacksonzhao/Desktop/21-40/bands"

# 获取栅格列表
raster_list = arcpy.ListRasters("*.tif")

# 遍历栅格集合
for raster in raster_list:
    # 获取栅格数据集的全路径
    raster_full_path = os.path.join(arcpy.env.workspace, raster)
    
    # 创建栅格对象
    raster_obj = arcpy.Raster(raster_full_path)
    
    # 获取波段数量
    number_of_bands = raster_obj.bandCount
    
    # 构建基本的文件名
    base_filename = "wc2.1_30s_BCC_SSP126_21-40"
    
    # 遍历所有波段
    for i in range(1, number_of_bands + 1):
        # 提取单波段并创建栅格图层
        band_name = "band_" + str(i)
        arcpy.MakeRasterLayer_management(raster_full_path, band_name, "", "", i)

        # 保存单波段影像
        output_path = os.path.join(output_directory, base_filename + "_Bio{0}.tif".format(i))
        arcpy.CopyRaster_management(band_name, output_path)
        
        print("Saved:", output_path)
在ArcGIS环境中,你可以使用 arcpy 工具箱中的几何操作和数据分析工具来裁剪遥感数据(如栅格数据)并基于 Shapefile 数据进行统计分析。以下是一个基本步骤: 1. **导入所需的模块**: 首先,需要导入 arcpy 和 os 等模块,以及你的 Shapefile 文件路径。 ```python import arcpy import os ``` 2. **加载Shapefile和遥感数据**: 使用 `arcpy.env.workspace` 设置工作空间,并加载 Shapefile 和栅格数据。 ```python arcpy.env.workspace = "path_to_your_workspace" shapefile_path = "path_to_shapefile.shp" raster_data_path = "path_to_raster_file.tif" ``` 3. **读取Shapefile和栅格数据**: 对Shapefile使用 `arcpy.management.ReadAsShapefile()` 获取几何对象,对栅格使用 `arcpy.Raster() or arcpy.sa.Raster()` 读取。 4. **创建光谱选择函数(如果栅格是多波段)**: 如果栅格有多波段,可能需要提取感兴趣区域(AOI)内的特定波段。 5. **裁剪遥感数据**: 使用 `arcpy.sa.ExtractByMask()` 或 `arcpy.gp.ExtractByMask()` 对栅格进行裁剪,输入目标栅格和Shapefile的几何对象。 ```python raster_cropped = arcpy.sa.ExtractByMask(raster_data_path, shapefile_path) ``` 6. **计算均值**: 使用 `arcpy.sa.Mean()` 或 `raster_cropped.mean()` 计算裁剪后的栅格数据的平均值。 7. **保存结果**: 将结果转换为栅格数据并保存到指定位置。 ```python result_mean = raster_cropped.mean() output_raster_path = "path_to_output_raster_mean.tif" result_mean.save(output_raster_path) ``` 8. **清理环境**: 最后记得关闭所有连接,释放资源。 ```python arcpy.ResetEnvironments() del raster_cropped, result_mean ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackson的生态模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值