文章版权由作者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. xss的编码原理

    把以前的笔记翻出来整理一下 最前方 xss如何选用编码原理,为什么 找到的挺清楚的文章了:https://www.cnblogs.com/p0laris/p/11898322.html浏览器解析有两种 ...

  2. 关于JAVA的垃圾回收机制

    使用JAVA编程时,几乎不需要考虑"内存泄漏"的问题,这也是JAVA相较于C++的一个优点. 最近在看<Java编程思想>(第四版,听说第五版有点牛逼....),里面讲 ...

  3. python3-day1

    一.python的优缺点: 先看优点 Python的定位是"优雅"."明确"."简单",所以Python程序看上去总是简单易懂,初学者学Py ...

  4. Centos-当前登录用户信息- w who

    w who 显示当前登录系统的用户,但w显示的更为详细 who 相关参数 # 默认输出 用户名.登录终端.登录时间 -a 列出所有信息 -b    系统最近启动日期 -m   当前终端信息,相当于 w ...

  5. Arduino Wire.h(IIC/ I2C)语法

    转自:https://www.cnblogs.com/1996jiwei/p/6561681.html 本文转自上面链接,版权请直接参考原链接. 最近在用I2C进行通信交流,发现有两种方法的头文件需要 ...

  6. Jmeter5.3源码编译

    下载源码 https://jmeter.apache.org/download_jmeter.cgi 配置网络环境(重要) 下载 Proxifier 配置上网条件 导入Idea 通过 Idea 的 O ...

  7. net core 微服务 快速开发框架

    dymDemo github 地址:https://github.com/duyanming/dymDemo dym 分布式开发框架 Demo 熔断 限流 事件总线(包括基于内存的.rabbitmq的 ...

  8. linux(centos8):查看操作系统的当前版本(os/kernel/bash)

    一,查看redhat系操作系统的版本: 适用于centos/fedora/rhel等 [root@centos8 ~]# cat /etc/redhat-release CentOS Linux re ...

  9. Ubuntu搜狗输入法安装

    一.下载sogoupinyin_2.2.0.0108_amd64.deb 二.拷贝到服务器并安装 sudo dpkg -i sogoupinyin_2.2.0.0108_amd64.deb 三.设置搜 ...

  10. 忘记MySQL密码怎么办?一招教你搞定!

    在安装完 MySQL 或者是在使用 MySQL 时,最尴尬的就是忘记密码了,墨菲定律也告诉我们,如果一件事有可能出错,那么它一定会出错.那如果我们不小心忘记了 MySQL 的密码,该如何处理呢?别着急 ...