1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 求取SHP文件的最小外接矩形并裁剪图像

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

时间:2022-04-10 23:53:54

相关推荐

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

目的:

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

已知数据:

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

2.shp文件对应的影像。

工具

ARCGIS10.4

python2.7(ARCGIS自带)

步骤

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

首先打开ArcMAP的工具箱,依次点击Data Management tools——Features——Minimum Bounding Geometry。该工具使用方法和参数含义详见/zh-cn/pro-app/tool-reference/data-management/minimum-bounding-geometry.htm

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

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

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

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

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

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

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

具体处理代码如下

# -*- coding: utf-8 -*-import osimport shutilimport arcpyimport shapefilearcpy.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处理成可以直接打开的图像文件。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。