当前位置: 代码迷 >> 综合 >> Python(arcpy) 提取包含目标流域的矩形区域
  详细解决方案

Python(arcpy) 提取包含目标流域的矩形区域

热度:8   发布时间:2023-12-28 19:28:29.0

任务描述:有一张全国的DEM图以及一个流域的边界文件,想要从全国DEM图中裁出一个包含该流域的矩形区域,以便将流域以外的邻近区域也考虑进来

# -*- coding: utf-8 -*-
""" 这篇代码是用于提取比目标流域大一点(包含目标流域)的矩形区域 """import sys
import os
import shapefile
import arcpy
from arcpy import env     #导入 env 类(env 类包含所有地理处理环境)
from arcpy.sa import *    #arcpy.sa 即Spatial Analyst 模块,管理模块和分析模块都将被导入为 *arcpy.CheckOutExtension("spatial")    #仅在使用浮动版许可的情况下需要 CheckOutExtension
arcpy.gp.overwriteOutput=1sf = shapefile.Reader("F:\\Data of Flash Flood\\PRE_interpolation_test\\5876_China_62505400_Boundary_Line.shp")  #读取流域边界文件的信息
print(sf.bbox)                       #输出此时流域边界的经纬度范围,该顺序是 西 南 东 北
sf.bbox[0] = sf.bbox[0]-1            #向西方向扩展1°(具体扩展多少可根据需要决定)
sf.bbox[1] = sf.bbox[1]-1            #向南方向扩展1°(具体扩展多少可根据需要决定)
sf.bbox[2] = sf.bbox[2]+1            #向东方向扩展1°(具体扩展多少可根据需要决定)
sf.bbox[3] = sf.bbox[3]+1            #向北方向扩展1°(具体扩展多少可根据需要决定)
print(sf.bbox)                       #输出扩展后的边界范围,并根据此范围进行裁减in_raster = 'F:\\Data of Flash Flood\\PRE_interpolation_test\\China_filled_Resample.tif'                         #这是个DEM数据,只要是raster格式的就行
rectExtract  = ExtractByRectangle(in_raster, Extent(sf.bbox[0],sf.bbox[1],sf.bbox[2],sf.bbox[3]), "inside")
rectExtract.save("F:\\Data of Flash Flood\\PRE_interpolation_test\\test_1111")

结果图如下:
在这里插入图片描述黑白色为该流域的DEM,金黄色的则是流域以外1°的区域

如果提示没有shapefile模块,请看:
Sublime 如何手动添加python库(以shapefile.py为例)

参考文献:
导入 ArcPy
按矩形提取