求取SHP文件的最小外接矩形并裁剪图像

本文介绍了如何利用ARCGIS10.4和Python2.7来求取SHP文件中每个形状的最小外接矩形,并基于这些矩形裁剪对应的图像。首先通过Data Management Tools的Minimum Bounding Geometry工具计算最小外接矩形,然后使用ARCGIS自带的Python环境和pyshape库进行图像裁剪,处理过程中需要注意中文路径可能导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:

  1. 求取shp文件中每一个形状的最小外接矩形。
  2. 根据每一个形状的最小外接矩形裁剪图像。

已知数据:

  1. 一个shp文件,包含若干个形状。

2.shp文件对应的影像。

工具

ARCGIS10.4

python2.7(ARCGIS自带)

步骤

一、求取shp文件中各个形状的最小外接矩形

首先打开ArcMAP的工具箱,依次点击Data Management tools——Features——Minimum Bounding Geometry。该工具使用方法和参数含义详见最小边界几何 (数据管理)—ArcGIS Pro | 文档

使用该工具之后即可求得各个形状的最小外接矩形

将求得的最小外接矩形按照下面的步骤保存为shp文件。

此时可以在保存路径下面看到保存的shp文件了。

二、根据shp文件的每一个形状裁剪图像

这里使用ARCGIS自带的python进行二次开发。

打开pycharm,新建工程,将工程的python解释器设置为ARCGIS自带的python

此外,为了处理shp文件,还需安装pyshape包。此外由于pyshape对中文的支持不好,当文件路径里有中文的时候可能会出现错误。

具体处理代码如下

# -*- coding: utf-8 -*-
import os
import shutil
import arcpy
import shapefile

arcpy.env.workspace = r'F:\桌面\csdn\csdn.gdb'   # arcgis地理数据库目录
shp_path = 'G:\\test\\Export_Output_2.shp'       # shp文件的路径, shapefile不支持中文路径
raster = 'F:\\桌面\\csdn\\multi\\img.tif'        # 图像路径
out_dir = "G:/test/clip/"                        # 裁剪后图像保存路径
if os.path.exists(out_dir):
	shutil.rmtree(out_dir)
os.mkdir(out_dir)

sf = shapefile.Reader(shp_path)   # 读取shp文件
shapes = sf.shapes()

for i in range(len(shapes)):
	shp = shapes[i]    # 获取shp文件中的每一个形状

	out_path = os.path.join(out_dir, str(i) + '.tif')

	point = shp.points    # 获取每一个最小外接矩形的四个点
	x_list = [ii[0] for ii in point]
	y_list = [ii[1] for ii in point]
	x_min = min(x_list)
	y_min = min(y_list)
	x_max = max(x_list)
	y_max = max(y_list)
	cor = str(x_min) + ' ' + str(y_min) + ' ' + str(x_max) + ' ' + str(y_max)
	arcpy.Clip_management(raster, cor, out_path, "#", "#", None)     # 调用工具箱函数

	print i

运行结果如下,此时的图像不能直接打开,但是可以用ARCGIS打开,或者用opencv处理成可以直接打开的图像文件。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值