文章版权由作者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. npm包的发布和管理

    npm包管理 npm其实是Node.js的包管理工具(node package manager). 为啥我们需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScrip ...

  2. LVM的简单使用及常用的命令总结

    Lvm的简单使用及常用的命令总结 centos7中默认使用的是xfs文件系统,此文件系统的特点,可以另外查找资料,这里说一下对文件系统的扩容: 1.先看一下没扩容之前的分区大小 2.添加一块新磁盘,并 ...

  3. plt.imshow()显示图片色差问题

    转载:https://www.cnblogs.com/darkknightzh/p/6039667.html 由于系统缺少某些库,导致cv2.imshow()无法使用,于是使用matplotlib.p ...

  4. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 树上启发式合并(DSU ON TREE)

    题目描述 一棵根为\(1\) 的树,每条边上有一个字符(\(a-v\)共\(22\)种). 一条简单路径被称为\(Dokhtar-kosh\)当且仅当路径上的字符经过重新排序后可以变成一个回文串. 求 ...

  5. 从远程库github.com克隆代码时遇到了如下的问题:

    Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hos ...

  6. 序列化的JavaScript

    下载 序列化的JavaScript序列化的JavaScript 将JavaScript序列化为包含正则表达式.日期和函数的JSON超集. 概述 这个包中的代码最初是作为表示状态的内部模块.为了扩展它的 ...

  7. MeteoInfoLab脚本示例:subplot

    subplot命令可以自动等间距分配多个坐标系(Axes),命令中有三个参数,前两个定义了行数和列数,第三个指定了当前的坐标系(Axes),绘图命令是作用在当前坐标系中的. 脚本程序: def f(t ...

  8. 爬虫之Selenium

    简介 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如 ...

  9. Nginx常见错误解决办法

    报错: nginx: [error] CreateFile() "C:\mytools\nginx-1.8.1/logs/nginx.pid" failed (2: The sys ...

  10. Typora图片一键传——picgo使用兰空图床

    Typora picgo使用兰空图床 最近smms图床免费版的速度眼看着越来越慢,特别是到晚上,图片几乎是在原地打转,于是我想替换掉Typora中picgo默认使用的smms图床,网上的教程清一色地只 ...