大数跨境
0
0

ArcGIS Pro 数据建模综合案例讲解

ArcGIS Pro 数据建模综合案例讲解 GIS前沿
2023-01-30
3


10.3.1获得全国每个省面积最大县


数据:“chp10\案例数据.gdb\县”,打开属性表,如图10-25所示。


图10-25  数据的属性表


方法1-删除相同:模型如图10-26所示,排序(Sort)工具:按面积降序排序;删除相同项(DeleteIdentical)工具:选“省”字段,一个省保留一条,相同的保留前者,删除后面,所以前面面积降序排列。具体模型在“chp10\模型案例.tbx\面积最大县1”,该方法最简单。


图10-26  “删除相同法”模型


界面如图10-27所示,“县-Sort”就是输出结果。

图10-27  “删除相同法”运行界面


方法2-连接法:使用“融合(Dissolve)”工具得到每个省面积最大,之后连接,如果直接连接,不确定位数双精度,可能有问题,统一保留3位小数。添加字段工具:自己可以指定,有对应字段,不添加;计算字段(CalculateField)工具:计算面积,保留3位小数,round(!shape.area!,3),后面连接;融合工具:按省融合,取我们定义字段最大值;连接字段工具:县选我们添加字段,融合数据取最大值字段,假定条件一个省面积最大只有一个;选择工具:只选择连接上,SQL条件为:MAX_%字段% IS NOT NULL具体模型在“chp10\模型案例.tbx\面积最大县2”,如图10-28所示。


图10-28  “连接法”模型


方法3-交集制表:融合后得到省,省和县交集制表,获得每个县在省中占比,按面积占比排序,一个省保留一条。具体模型在“chp10\模型案例.tbx\面积最大县3”,如图10-29所示。

图10-29  “交集制表法”模型


“交集制表(TabulateIntersection)”工具的操作界面如图10-30所示。


图10-30  “交集制表法”工具运行的界面


运行结果如图10-31所示,字段PERCENTAGE就是每个县,在省中面积百分占比,最大是100。


图10-31  “交集制表”工具结果的属性表


10.3.2获得小于一定距离的点


原始数据如图10-32,有3万个点,获得距离小于10米的点。

图10-32  原始的点数据


方法1-近邻表法:生成模型如图10-33所示,主要使用“生成近邻表(GenerateNearTable)”工具,操作界面如图10-34所示,搜索半径,需要输入,模型中是变量,可以根据需要输入其他值,输出结果如图10-35所示。原始数据和输出表,分别按IN_FID,NEAR_FID连接两次,由于一个数据只能连接一次,把原始数据,使用选择工具导出一次。具体模型在“chp10\模型案例.tbx\获得小于一定距离的点1”。


图10-33  “近邻表法”模型


图10-34  “生成近邻表”工具运行界面


图10-35  “生成近邻表”输出结果


方法2-缓冲区法使用距离一半做缓冲区,缓冲区下面融合类型选择“将全部输出要素融合为一个要素”,相邻融合在一起,不相邻则分离;下一步查询面积大于圆的面积,SQL条件为:Shape_Area > 3.1416*%距离%**%距离%,和点数据,裁剪后点就是我们需要的数据,模型如图10-36所示。


图10-36  “生成近邻表”工具运行界面


计算值设置如图10-37所示,下面数据类型,设置线型单位,上面输入"%距离% Meter"。


图10-37  “计算值”设置界面


10.3.3整个数据库标识码的更新


由于数据库中,有很多要素类,整个数据库中要求标识码(BSM) 字段值在整库中唯一;每个要素类中,BSM字段值唯一,下一个要素类的开始值,是上一个要素类的最后一个值再加1。实现单个要素类的唯一值编号,Python3代码如下:


# 计算顺序编号

# 可访问 esriurl.com/CalculatorExamples 获取更多计算器示例

rec=0

def SequentialNumber(pStart):

    global rec

   

    pInterval = 1

    if (rec == 0):

        rec = pStart

    else:

        rec = rec + pInterval

    return rec


调用方法如图10-38所示。


图10-38  计算字段调用Python代码界面


单表更新的模型如图10-39所示,模型在“chp10\模型.tbx\BSM更新\更新一个表BSM”。没有字段,增加字段,类型为长整数,输入开始值,更新字段值,返回更新后的值。


图10-39  单表更新的模型


运行界面如图10-40所示,输入一个表或要素类,输入字段和开始值。


图10-40  单表更新的模型运行界面


整个数据库的标识码更新模型如图10-41所示,迭代要素类循环所有的要素类,调用上面模型“更新一个表BSM”,使用反馈,循环输出“值”是下一次循环的“开始值”。


图10-41  整个数据库更新的模型


运行界面如图10-42所示,上面选择数据库,输入字段和开始值。


图10-42  整个数据库更新的模型运行界面


10.3.4数据库复制


需要将一个数据库的数批量复制到另一个数据库,实现数据库备份。一个数据库要素类,要素数据集和栅格数据集。一个模型只能有一个迭代器,这里需要两个迭代器:一个数据集迭代,一个要素类迭代;这两个迭代器是并列的,通过模型调用模型来实现,就是前面说的子模型。模型都在“chp10\模型.tbx\复制数据库”的工具集下。


“拷贝数据集”的模型:实现数据集迭代,包括要素数据集和栅格数据集,后面复制要素数据集,数据集下的要素类数据一块复制,复制数据使用“复制(Copy)”工具,复制工具可以复制要素数据集,栅格数据集和要素类。“计算值”工具把数据库的路径和数据集名称加在一起,同时使用逻辑判断“如果数据已存在”,不存在再复制。模型如图10-43所示。


图10-43  拷贝数据集的模型


“拷贝要素类”复制数据库中的要素类,不包括数据集下要素类,所以迭代要素类中递归选项是不勾选,模型如图10-44所示。

图10-44  拷贝数据类的模型


总的模型如图10-45,首先输入一个原始数据库,输入路径(该路径一定在windows存在)和数据库名字,自动创建数据库,把数据复制到新的数据库中。这个模型调用前面两个模型,并列平行的关系。


图10-45  数据库复制的模型


10.3.5矢量数据批量裁剪


需要实现多个图层,按另一个要素的记录批量裁剪,模型运行的效果如图10-46所示的界面。


图10-46  批量裁剪的运行界面


需要两个迭代器:一个是多个图层,使用“迭代多值”;另一个是裁剪要素的记录循环,使用“迭代要素选择”。两个迭代器是嵌套关系,数据裁剪,调用“裁剪(Clip)”工具,是最内层迭代做的。模型都在“chp10\模型.tbx\矢量批量裁剪”的工具集下。


迭代多值模型如图10-47所示,输出位置是文件夹,定义成参数,是确定位置的,裁剪后面名称需要考虑路径和名称,设置如“%输出位置%\%名称%”。

图10-47  多个图层按一个要素记录批量裁剪模型


输入要素是自己创建变量,类型是要素图层,下面多个值勾选。如图10-48所示。


图10-48 自己创建多值变量界面


总的模型如图10-49所示,其中“多个图层被一个要素批量裁剪”就是上面的子模型,“迭代要素选择”分组字段值,就是裁剪后数据库名称,模型中调用“创建文件地理数据库(CreateFileGDB)”工具创建数据库,是上面模型的输出位置。




文章授权转载:gisoracle


- END -

ArcGIS Pro花边图框的制作
重要通知!2023年注册测绘师、规划师考试时间公布
ArcGIS 各种坐标系文件下载
GIS=1/3地学+2/3信息科学?听武大教授谈GIS
实用工具 | ArcGIS顺序编号工具和快速查找文件下载

【声明】内容源于网络
0
0
GIS前沿
分享测绘地信资讯,交流行业软件技巧。
内容 4923
粉丝 0
GIS前沿 分享测绘地信资讯,交流行业软件技巧。
总阅读5.5k
粉丝0
内容4.9k