ArcGIS pro Python脚本实现批量栅格裁剪,将栅格根据若干个矢量面裁剪

# -*- coding: utf-8 -*-
import arcpy
import os
from arcpy.sa import ExtractByMask
from arcpy import env

# 环境设置
arcpy.CheckOutExtension("Spatial")  # 启用空间分析扩展 
env.overwriteOutput = True          # 允许覆盖输出

# 参数设置
input_raster = r"C:\Data\原始影像.tif"       # 输入栅格路径
vector_folder = r"C:\Data\矢量面数据"        # 矢量面数据文件夹
output_folder = r"C:\Data\裁剪结果"          # 输出文件夹

# 创建输出目录
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 获取所有矢量面要素
env.workspace = vector_folder
feature_classes = arcpy.ListFeatureClasses("*.shp")  # 列出所有SHP文件 

# 进度计数器
total = len(feature_classes)
count = 0

# 主处理循环
for fc in feature_classes:
    count += 1
    try:
        # 构建完整路径
        mask_layer = os.path.join(vector_folder, fc)
        
        # 生成输出文件名
        output_name = "裁剪_" + os.path.splitext(fc)[0] + ".tif"
        output_path = os.path.join(output_folder, output_name)
        
        # 执行掩膜提取 
        out_raster = ExtractByMask(input_raster, mask_layer)
        
        # 保存结果 
        out_raster.save(output_path)
        
        # 打印进度
        arcpy.AddMessage(f"进度:{count}/{total} | 完成:{output_name}")
        
    except Exception as e:
        arcpy.AddError(f"处理 {fc} 失败: {str(e)}")

# 清理环境
arcpy.CheckInExtension("Spatial")
print("批量裁剪处理已完成!")



### 使用 ArcGIS Pro 制作语义分割数据集 #### 数据准备阶段 在创建语义分割数据集之前,需要准备好高质量的遥感影像以及对应的标注数据。这些数据可以通过多种方式获取,例如卫星影像、无人机航拍等。为了确保后续模型训练的效果良好,建议选择分辨率较高且清晰度较好的影像作为输入。 对于标注部分,在实际操作中通常会采用矢量化的形式来表示目标区域[^2]。具体来说,可以利用ArcMap或者更先进的工具如ArcGIS Pro中的编辑功能完成对感兴趣对象的手动勾画工作,并保存为Shapefile格式文件以便进一步处理。 #### 矢量到栅格转换过程 当完成了初步的对象标记之后,则需将其由矢量形态转变为适合神经网络使用的像素级分类地图即所谓的“Ground Truth”。这一环节可通过调用`arcpy`模块下的相应函数实现自动化批量生产: ```python import arcpy # 设置工作空间路径 arcpy.env.workspace = r"C:\path\to\your\data" # 将矢量图层转换成栅格图像 arcpy.FeatureToRaster_conversion(in_features="annotated_areas.shp", out_rasterdataset="ground_truth.tif", cell_assignment="CELL_CENTER", priority_field="FID") ``` 上述脚本片段展示了如何借助Python API快速执行从形状文件至GeoTIFF类型的转变动作[^4]。其中参数`in_features`指定待转化的目标要素集合名称;而`out_rasterdataset`则定义输出产物存储位置及其命名规则等等细节设置均可以根据个人需求灵活调整。 另外值得注意的是,在某些特殊情况下可能还需要额外考虑诸如重采样方法的选择等问题以满足特定应用场景的要求。 #### 图片切分技术应用 由于原始采集得到的大尺寸图片往往超出GPU显存容量限制从而无法一次性加载整个场景进入内存参与计算活动因此有必要事先按照固定大小窗口裁剪整幅画面成为若干个小块后再分别送入卷积运算单元当中去逐一分析评估每一个局部范围内的土地覆盖类别归属情况。下面给出了一段示范代码用于演示这种切割逻辑的实际编码实践: ```python # 对大尺寸TIFF进行均匀划分并导出子图序列 arcpy.SplitRaster_management( in_raster="original_large_image.tif", out_path="splitted_images/", name_prefix="tile_", tile_size="WIDTH HEIGHT", # 替换为你想要的具体数值比如'512 512' format="JPEG" ) ``` 此命令行能够帮助我们轻松达成按行列方向规律间隔取样的目的同时保留原有地理参考信息不变便于后期拼接还原整体视图结构特征[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值