文章版权由作者pxtgis和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/pxtgis/。

一、概述

在数据处理工作中经常遇到批量裁剪ArcGIS文件地理数据库(GDB)的需求。利用ArcGIS进行GDB批量裁剪的方法主要有三种。本文以矢量GDB批量裁剪为例。

1、利用ArcToolbox中Analysis Tools工具箱中的Extract工具集下Clip裁剪工具的Batch批量处理(右键工具箱即可调出批量裁剪面板)。在Input Features下方单元格点击Browse可以批量选取GDB中多个要素(如果有数据集,则需单独添加要素集中要素类),Clip Features下方单元格点击Open指定裁剪文件,Output Feature Class这列第一个单元格也会自动填充内容,默认存放在Default.gdb下带” _Clip”后缀文件名。选中Clip Features列已填充的内容右键Fill,即可将该列其他空白单元格填充同样内容,也可以自己选中特定几行再点击Fill,则只填充选中的几行内容。Output Feature Class最好不动,保持默认,因为要修改路径就得都修改,修改一个其他还是默认。该列空白单元格程序运行时会自动填充同样路径,文件名与输入要素对应,所以无需Fill。点击OK即可执行批量裁剪,裁剪完可以把Default.gdb中的要素拷贝出来。但是Batch批量裁剪工具中裁剪要素只能取一个要素,就算输入的裁剪要素类中有多个面要素,也只执行第一个进入程序中的要素面。而且,在GDB中包含数据集的情况下,Batch批量处理在浏览数据时就很不方便,输出时也无法保留原始数据集结构。所以针对只需利用一个面要素进行批量裁剪,而且不需要保留GDB要素集结构的情况下,Batch批量处理比较合适。

图1 Batch Clip界面

2、利用Python,ArcPy站点包编写程序进行处理。本文先不过多介绍。

3、利用Model Builder制作工作流进行处理。Model Builder包含一组支持构建灵活且功能强大的模型的实用工具,可实现零代码对GDB进行批量分区裁剪且可选择是否保留原始GDB要素集要素类结构。这也是本文的重点,下文将详细介绍。

二、数据

1、待批量分区裁剪的市基础地理信息数据(部分测试数据,GDB格式),包含要素集和要素类。

2、用于裁剪的市区界(包含多个面要素,shp格式),也可以换成分幅或其他裁剪要素类(包含一个或多个面要素)。

图2 部分基础地理信息数据

三、GDB批量裁剪模型

需求是:利用市区界要素面数据对全市GDB数据进行批量分区裁剪出按区名命名的GDB,并且保留原始GDB的要素集结构。

如下图所示,由于Model Builder中只能添加一个迭代器,所以要用到子模型,甚至子子模型。

1、主模型添加裁剪要素Clip FeatureClass,也就是本文的市区界shp数据,先经过筛选Select(这步可省,为了减少测试数据量加的),然后执行迭代要素选择,选择的要素作为两个裁剪子模型的裁剪要素输入;同时,在OutputGDB Folder位置创建名为GDB Name (其值为%Value%,行内替换迭代选择出要素的name属性) 的文件地理数据库OutputGDB, 该GDB作为两个子模型的输出GDB参数;InputGDB为待批量分区裁剪的GDB,也就是本文的基础地理信息库。

图3 GDB批量裁剪总模型

2、要素类裁剪子模型中,仅对GDB目录下的要素类进行迭代裁剪,不递归至要素集下的要素类。

图4 要素类裁剪子模型

3、要素集裁剪子模型1中再嵌套了一个要素集裁剪子模型0。要素集裁剪子模型0中是对要素集裁剪子模型1中的迭代的要素集进行要素类迭代和裁剪。要素集裁剪子模型1中对输入的基础地理信息数据库进行迭代要素集,同时在总模型中生成的分区GDB中建立相应要素集,要素集路径和迭代的要素集以及迭代的裁剪要素共同作为要素集裁剪子模型0的输入。

图5 要素集裁剪子模型

4、本例中的GDB批量裁剪生成的GDB可以保留原始GDB的要素集合要素类的结构。如果不需要输出原始要素集的结构,可以去掉要素集裁剪子模型1,修改要素类裁剪子模型中迭代要素类的工具的Recursive递归选项勾上,则会批量裁剪GDB中包含数据集下的所有要素类,如图6所示。

图6 勾选要素集裁剪子模型中递归选项

5、运行总模型,模型参数和结果如下。结果为按区界名命名的各个GDB,GDB的要素集合要素类结构也和原GDB结构一致。

图7 模型运行及结果

四、总结

1、本文参考了《ArcGIS之GDB(文件地理数据库)批量处理(20190115)》

2、模型中三层嵌套有些复杂,下一步还需研究改善。

3、利用模型运行出来存在一些空图层并没有删除,有需求删除的话可以在模型中再加入批量删除空图层工具。

4、需注意若要将裁剪结果写入网络路径下可能会报错无法写入,将OutputGDB Folder参数改为磁盘绝对路径就可以正常写入。

-----欢迎转载,但请于明显处标明出处:http://www.cnblogs.com/pxtgis/

如果您觉得本文确实帮助了您,可小小打赏下,谢谢

基于ArcGIS ModelBuilder的GDB批量分区裁剪——可保留原始GDB要素集要素类结构的更多相关文章

  1. ArcGIS案例学习笔记-批量裁剪地理模型

    ArcGIS案例学习笔记-批量裁剪地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:空间数据的批量裁剪 优点:1.批量裁剪:任意多个目标数据,去裁剪任意 ...

  2. 基于ArcGIS的CAD数据向GIS数据转换方法(转)

    基于ArcGIS的CAD数据向GIS数据转换方法 1 CAD数据与ArcGIS数据介绍 地图数据来源多种多样,大多数使用的是计算机辅助设计软件(CAD)制作的数据,CAD软件制图自动化程度高,操作简单 ...

  3. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  4. 基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序

    特点: 1.基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序: -(IBAction) showTOC:(id)sender { if (_tocViewController ...

  5. PictureCutting图片批量裁切(裁剪)工具

    PictureCutting图片批量裁切(裁剪)工具 写这个工具的原因是因为在获取一个软件的皮肤包中的图片的时候需要进行批量的裁切工作,而有没有找到在linux下简单好用的工具,干脆就用QT写了一个. ...

  6. 基于ArcGIS JS API的在线专题地图实现

    0 引言     专题地图是突出而深入的表示一种或几种要素或现象,即按照地图主题的要求,集中表示与主题有关内容的地图.专题地图的专题要素多种多样,分类方法也多种多样,根据专题地图表现数据的特点可分为定 ...

  7. 基于 ArcGIS Silverlight API开发的WebGIS应用程序的部署

    部署流程概述 在微软的iis服务器上部署基于ArcGIS  Silverlight API的应用程序,主要包括以下几个步骤: 1)(可选)部署GIS服务 如果需要将GIS服务也部署在Web服务器上,则 ...

  8. 基于ArcGIS的栅格图像平滑处理(转)

    基于ArcGIS的栅格图像平滑处理 栅格数据获取的途径多种多样,造成了栅格数据质量的很大差异,一些质量较差的栅格数据存在大量“噪音”象元,即在表达同类型的地理要素时,出现个别像元值与周边像元不一致的情 ...

  9. 基于集合成工控机Ubuntu系统安装分区详解

    基于集合成工控机Ubuntu系统安装分区详解 硬件描述:双核的CPU,128G的固态硬盘 软件描述:使用Ubuntu12.04系统,内核3.8.0-29版本,QT4.8.1版本 1.新建分区表 /de ...

随机推荐

  1. 单调队列优化O(N)建BST P1377 [TJOI2011]树的序

    洛谷 P1377 [TJOI2011]树的序 (单调队列优化建BST 链接 题意分析 本题思路很简单,根据题意,我们利用所给的Bst生成序将Bst建立起来,然后输出该BST的先序遍历即可: 但,如果我 ...

  2. 获取IP 地址,失败!解决方法

    命令ip addr 获取IP地址失败,见下图: 解决方法,查看ens33网卡的配置: 控制台,路径输入: vi /etc/sysconfig/network-scripts/ifcfg-ens33 然 ...

  3. Win10安装Ubuntu子系统

    相信我,这是最后一次折腾系统了qaq,以后一定开始认真用Linux编程 跟的一个博客安装,传送门:Win10安装Ubuntu子系统及图形化界面详细教程 文章是2019的,加上我装的是Ubuntu 20 ...

  4. 登陆页跳出iframe

    1 if(top.location.href != location.href){ 2 top.location.href = location.href; 3 }

  5. Python-去除字符串中不想要的字符

    问题: 过滤用户输入中前后多余的空白字符 '    ++++abc123---    ' 过滤某windows下编辑文本中的'\r': 'hello world \r\n' 去掉文本中unicode组 ...

  6. SpringBoot-04-自动配置原理再理解

    4. 自动配置原理再理解 ​ 配置文件到底能写什么?怎么写?SpringBoot官方文档有大量的配置,但是难以全部记住. 分析自动配置原理 ​ 官方文档 ​ 我们以HttpEncodingAutoCo ...

  7. 安卓app功能或自动化测试覆盖率统计(不用instrumentation启动app)

    一文带你揭秘如何采取非instrumentation启动app,打造实时统计覆盖率,一键触发覆盖率测试报告. 在上篇文章,一文带你解决Android app手工测试或者自动化测试覆盖率统计(撸代码版) ...

  8. Numpy中的shape和reshape()

    shape是查看数据有多少行多少列reshape()是数组array中的方法,作用是将数据重新组织 1.shape import numpy as np a = np.array([1,2,3,4,5 ...

  9. 超级简单的照片画廊MVC

    下载Gallery.zip - 23.5 MB 介绍 我想在我的个人网站上添加一个简单的图片库,但找不到任何合适的方法来从文件夹而不是数据库中挑选图片.也许我应该看得更仔细些!尽管如此,下面是我实现的 ...

  10. idea 2020.1 Mybatis log plugin破解插件

    下载 链接: https://pan.baidu.com/s/1FTgtJiyzxxaNxWLyX4OgZw 密码: w7w8 idea安装本地插件