跳至内容
九溪
溪水润知林,滴露启慧心
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您在这里:
Home
»
知识标签
»
GIS
»
批量处理裁剪矢量数据 (ArcPy+Clip)
您的足迹:
wiki:gis:arcpy-batch-clip-shp
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 批量处理裁剪矢量数据 (ArcPy+Clip) ====== ===== 需求 ===== 本示例要解决什么问题? 有河北省东北部矢量数据,包含53个图层,例如城市名、立交桥、功率、水系、县乡道等,需要将北戴河行政区划内所有的相关图层数据都提取出来,生成53个新的图层,文件名称保持一致,只包含北戴河数据。 {{https://i.loli.net/2020/05/11/e2KkF6gtlGnN54x.png|待处理shp}} {{https://i.loli.net/2020/05/11/pMXN9Ge7cVgs5uE.png}} ===== 思路 ===== ArcGIS 可以通过 ArcToolbox - Analysis Tools - Extract - Clip 实现对矢量数据的裁剪功能。但是一次只能处理生成一个文件。 {{https://i.loli.net/2020/05/11/nOgAZFHYKjPu4lI.png|ArcGIS-Clip}} 但该功能显然不适用于本示例,每次只能处理一个,要累死人。 使用 ArcPy (Python in ArcGIS) 编写脚本,即可批处理运行。 ArcPy入口 - 【开始菜单】-【ArcGIS】-【Python (command line)】 - C:\Python27\ArcGIS10.2\python.exe (与实际安装路径相关) ArcPy官方 - [[https://pro.arcgis.com/zh-cn/pro-app/arcpy/get-started/a-quick-tour-of-arcpy.htm|ArcPy快速浏览]] ===== 一、创建裁剪基准图层 ====== 单独编辑县界图层,只保留北戴河,保存为 北戴河.shp {{https://i.loli.net/2020/05/11/2ljPA7H8VMqy9CG.png}} 具体方法就不说了。 ===== 二、创建 ArcPy 脚本 ===== ArcPy 进行Clip处理,主要代码如下 arcpy.Clip_analysis("clipfrom.shp","base.shp","C:/clipto.shp") 本次使用python遍历工程文件夹,将所有shp进行clip处理,所需代码如下 <code python clippatch.py.txt> #conding=utf8 import sys reload(sys) sys.setdefaultencoding('utf8') import os import arcpy from arcpy import env path_in="C:/home/00-library/download/SHP" path_out="C:/home/00-library/download/SHP_for" path_clipfile="北戴河.shp" env.workspace = path_in g = os.walk(path_in) num=0 for path,dir_list,file_list in g: for file_name in file_list: if os.path.splitext(file_name)[-1]=='.shp' and file_name!=path_clipfile: num=num+1 shpfileto=path_out+“/”+file_name print 'Clipping', file_name try: #print 'test', shpfileto arcpy.Clip_analysis(file_name.decode("gb2312"),path_clipfile.decode("gb2312"),shpfileto.decode("gb2312")) except: print '-----error-----', num, '----------------------' #print '********* Sth is happened, but still go on.' print '-----over-----', num, '----------------------' </code> ===== 三、运行脚本 ===== 打开 ArcGIS Python (command line),将代码粘贴进去,回车即可运行 {{https://i.loli.net/2020/05/11/pPMeiCZ4B9V27GT.png}} 运行成功后,处理的成果如下: {{https://i.loli.net/2020/05/11/bVW6jJBM8CxPZED.png}} ===== 可能遇到的问题 ===== 1. 使用“裁剪(clip)”工具出现了“000117 警告: 生成的输出为空”拓扑无效 [空多边形不完整] 原因和解决办法: (1)拓扑无效 [空多边形不完整]错误: * 原因:两个图册的空间坐标系不同 * 解决:“Data Management Tools”-“投影与变换”-“要素”-“投影”工具,统一图层的坐标系 (2)000117错误: * 原因:失量图层有问题 * 解决:“Data Management Tools”-“要素”-“修复几何”工具先修复,再裁剪 2. Python 处理文件中文路径问题 - [[https://www.giserdqy.com/arcgis/arcpy/32790/|python 编码问题:’ascii’ codec can’t encode characters in position 的解决方案]]
wiki/gis/arcpy-batch-clip-shp.txt
· 最后更改: 2023/01/03 15:25 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部