【ArcGIS Pro二次开发】(24):现状、规划用地图斑的变化检查

news2024/11/26 20:35:42

如题如见,这是一个检查现状、规划用地变化的工具。
通过此工具,可以生成变化图斑,检查规划中发生的变化,明确是正常的规划措施,还是因为误操作产生的图斑变化。


一、要实现的功能

如上图所示,点击【检查现状规划用地变化】按钮,打开工具框,在下拉框中选择自备的现状和规划图层,并选择相应图层的编码或名称字段。这里前后必须保持一致,比如说现状用地选择了用地名称,那么规划图层也要选择用地名称,因为工具是通过这2个字段的值是否发生变化来判断用地变化的。

然后点击运行即可。运行结果如下图:

运行后会生成一个【chekcResult】图层,这就是发生变化的图斑,通过检查属性表,找到输入的2个检查字段,可以看字段值是不一致的。


二、使用步骤

创建ProWindow工具框、combox列表初始化等内容可以参看往期文章,这里只把实现核心功能的流程列举出来。

以下代码部分只是节选,直接运行未必能跑得通,文章最后放出的工程文件是完整的。

1、获取工具框中选择的图层,字段等参数

根据图层名找到指定图层:

var map = MapView.Active.Map;
FeatureLayer fc_xz = map.FindLayers(combox_fc_xz.Text)[0] as FeatureLayer;
FeatureLayer fc_gh = map.FindLayers(combox_fc_gh.Text)[0] as FeatureLayer;

获取检查字段、定义标记字段:

string field_xz = combox_field_xz.Text;
string field_gh = combox_field_gh.Text;
string field_change = @"用地变化";

设置标识和检查结果的输出结果:

var DefalutGDB = Project.Current.DefaultGeodatabasePath;
string identityFeatureClass = DefalutGDB + @"\identityFeatureClass";
string checkRezult = DefalutGDB + @"\checkRezult";

2、调用GP标识工具

通过调用GP标识工具,生成标识结果:

var par_Identity = Geoprocessing.MakeValueArray(fc_xz.Name, fc_gh.Name, identityFeatureClass, "ALL", "", "NO_RELATIONSHIPS");
await QueuedTask.Run(() => Geoprocessing.ExecuteToolAsync("analysis.Identity", par_Identity, null, null, null, executeFlags));

3、添加一个标记字段,并计算字段值

添加一个标记字段【field_change】:

var par_AddField = Geoprocessing.MakeValueArray(identityFeatureClass, field_change, "TEXT");
await QueuedTask.Run(() => Geoprocessing.ExecuteToolAsync("management.AddField", par_AddField, null, null, null, executeFlags));

打开属性表,通过比较2个检查字段的变化,找出变化图斑:

            await QueuedTask.Run(() =>
            {
                FeatureLayer fc_change = map.FindLayers("identityFeatureClass")[0] as FeatureLayer;
                using (Table table = fc_change.GetTable())
                {
                    using (RowCursor rowCursor = table.Search(null, false))
                    {
                        TableDefinition tableDefinition = table.GetDefinition();
                        while (rowCursor.MoveNext())
                        {
                            using (Row row = rowCursor.Current)
                            {
                                // 获取2个检查字段的值
                                var fd_xz = row[field_xz].ToString();
                                var fd_gh = row[field_gh].ToString();
                                if (fd_xz != fd_gh)
                                {
                                    // 赋值
                                    row[field_change] = @"用地有变化";
                                }
                                row.Store();
                            }
                        }
                    }
                }
            });

4、提取发生变化的图斑

通过GP筛选工具提取变化图斑:

string sql = "用地变化 = '用地有变化'";
var par_Select = Geoprocessing.MakeValueArray(identityFeatureClass, checkRezult, sql);
await QueuedTask.Run(() => Geoprocessing.ExecuteToolAsync("analysis.Select", par_Select, null, null, null, executeFlags));

通过以上流程提取出来的图斑即为检查图斑。


三、工程文件分享

 最后,放上工程文件的链接:

CheckYDChangeicon-default.png?t=N3I4https://pan.baidu.com/s/1W0fzcPELZM79XvxO7Y3_xQ?pwd=ze0h

PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Daily Share】没有域名怎么破?手把手教你如何通过hosts配置域名(假域名)

目录 ❌前言📄hosts文件🦉DNS解析步骤👌配置伪域名第一步 修改本机hosts配置第二步 配置服务器nginx 🔃流程图 ❌前言 ip记不住??? 域名不想买??? 每次当我…

系统分析师《企业信息化战略与实施》高频知识点

企业信息化战略与实施---企业信息化与电子商务 业务流程重组(Business Process Reengineering BPR)是针对企业业务流程的基本问题进行反思,并对它进行彻底的重新设计,使业绩取得显著性提高。与目标管理、全面质量管理、战略管理等…

桂林阳朔4天4夜旅游攻略-亲测整理踩坑版本

桂林阳朔4天4夜旅游攻略-亲测整理踩坑版本 前言我的行程上海飞机出发到达两江机场桂林第一家酒店第一天早饭桂林米粉正宗吃法坐大巴去杨堤路口杨堤路口坐巴士直达杨堤码头杨堤到兴坪坐电动竹筏兴坪--20元背面打卡地兴坪古镇--汽车站阳朔酒店租电动车遇龙河漂流(*五星…

Three.js教程:Face3对象定义Geometry的三角形面

推荐:将 NSDT场景编辑器 加入你的3D工具链 其他系列工具: NSDT简石数字孪生 Face3对象定义Geometry的三角形面 几何体Geometry的三角面属性geometry.faces和缓冲类型几何体BufferGeometry顶点索引属性BufferGeometry.index类似都是顶点位置数据的索引值…

【MySQL入门指南】MySQL中的数据类型总结

文章目录 MySQL数据类型一、数值类型1.类型总览2.BIT类型3.INT系列类型4.浮点数类型1)float与double2.float与decimal 二、字符串类型1.类型总览2.CHAR类型3.VARCHAR类型 三、日期与时间类型四、枚举类型1.enum类型2.set类型3.在set中的查找 MySQL数据类型 ​ MySQL中支持的数…

ONLYOFFICE协作空间是什么?

今天给大家带来一个好消息,ONLYOFFICE推出更安全的协作空间了,好多朋友看到这个标题不认识是什么,我也是,今天来给大家介绍一下。 什么是 ONLYOFFICE 协作空间 简单来说ONLYOFFICE协作空间是一个协同工作平台,帮助您更…

Unity3D:模拟器视图

推荐:将NSDT场景编辑器加入你的3D工具链 3D工具集:NSDT简石数字孪生 模拟器视图 “模拟器”视图在模拟的移动设备上显示应用程序。使用它来查看应用程序与该设备的屏幕形状、分辨率和方向的显示方式。 模拟器视图的屏幕截图 使用模拟器视图 若要打开…

微服务学习——Docker

初识Docker 项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题: 依赖关系复杂,容易出现兼容性问题开发、测试、生产环境有差异 Docker Docker如何解决依赖的兼容问题的? 将应用的Libs(函数库)、 Deps&#xf…

【软件测试】第1章 软件测试概述

系列文章目录 文章目录 系列文章目录前言第1章 软件测试概述1.1 软件、软件危机和软件工程1.1.1 基本概念1.1.2 软件工程的目标及其一般开发过程1.1.3 软件过程模型 1.2 软件缺陷与软件故障1.2.1 基本概念1.2.2 典型案例 1.3 软件测试的概念1.3.1 软件测试的定义1.3.2 软件测试…

2023全球运维大会 | 智能运维中的数据管理和数据探索

GOPS 全球运维大会由高效运维社区(GreatOPS)、开放运维联盟(OOPSA)和 DevOps 时代社区联合主办,指导单位为云计算开源产业联盟、FinOps产业推进方阵。迄今为止,GOPS 已经举行了十九次,大会参会嘉…

Docker网络与资源控制

目录 一、Docker网络 1.Docker网络模式 2.Docker网络实现的原理 3.映射端口 4.none模式 5.bridge模式 二、资源控制 1.CPU 资源控制 2.cgroups有四大功能: 一、Docker网络 1.Docker网络模式 ●Host:容器将不会虚拟出自己的网卡&am…

如何保护数据安全?企业该从部署SSL证书开始

数字化时代,大数据开始蔓延到各行各业,影响着生活的方方面面。在犹如“皇帝穿新衣”般透明的大数据时代,数据泄露无孔不入,存在问题层出不穷,未知的漏洞隐患、安全边界的模糊、新的网络攻击手段、个人隐私的无处藏身等…

音视频开发面试题大盘点:掌握这些基础知识,你就能轻松应对面试

前言 音视频开发作为一种高技术含量的领域,随着人们对数字媒体的需求不断增加,其前景非常广阔。预计在2023年,音视频开发领域仍将继续保持快速发展的态势,尤其是在移动互联网、物联网、虚拟现实、增强现实等领域。 根据BOSS招聘…

deepstream6.2更新的新特性-支持雷达lidar的推理检测

1,其实在deepstream6.1中已经加入了3D深度图像 其实在deepstream6.1中已经加入了3D深度图像,可以将深度图像的数据显示出来,但是需要专门的深度相机,官方给出的是Intel realSense D435相机,它可以读取相机数据,并进行点云显示以及渲染深度绘制,这个功能有点类似调用ope…

ES集群配置

一、高并发下如何保证读写一致 1.1 写操作 对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本…

centos集群上安装hive客户端的操作步骤以及hive介绍

系列文章目录 虚拟机centos7配置Hadoop单节点伪分布配置教程​​​​​​ hbase进阶操作——读流程与写流程介绍 HBase进阶——文件的合并、 MemStore Flush、StoreFile Compaction、 Region Split、高可用与预分区介绍 centos7虚拟机下hbase的使用案例讲解 文章目录 前言…

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata

NacosSentinelSeata 9/9 1、SpringCloud Alibaba简介1.1 主要功能1.2 具体组件 2、SpringCloud Alibaba Nacos服务注册和配置中心2.1 Nacos介绍2.2 Nacos下载安装2.3 使用Nacos作为注册中心2.3.1 在父工程的pom文件中引入springcloudalibaba依赖2.3.2 创建cloudalibaba-provide…

面向对象(高级)-包装类的理解_基本数据类型、包装类、String类型间的转换及练习

包装类 大纲 包装类的使用 1.为什么要使用包装类? 为了使基本数据类型的变量具备引用数据类型变量的相关特征(比如:封装性、继承性、多态性)。我们给各个基本 数据类型的变量都提供了对应的包装类。2.(掌握&#xff…

Vue电商项目--项目路由

项目路由分析 vue-router 路由分为KV node平台(并非语言) 对于后台而言:K即为URL地址 V即为相应的中间件 前端路由: K即为URL(网络资源定位符) V即为相应的路由组件 路由的一个分析 确定项目结构顺序:上中下 -----只有中间部…

如何构建可靠的台账数据——详解台账管理系统的使用方法

随着数字化的发展,越来越多的企业开始采用电子台账管理,实现了对各项业务数据的及时准确保存和管理。而在台账管理应用中,发票管理、工单管理和库房台账是三大重要方面。下面我将详细介绍一下台账管理系统。 一、发票管理 1.收票台账报表 …