【ArcGIS Pro二次开发】(35):三调三大类面积统计

news2024/11/9 0:58:41

根据《第三次全国国土调查技术规程》,三调中的地类可以归纳为土地管理法中规定的三大类用地。

我们可以在三调中直接统计出这三大类用地的面积。主要方法是在ArcGIS中将这三大类对应的用地提取出来,再进行统计。不过每次都要在复制一长串的筛选语句,贴到GP工具里执行,有点不方便。

于是便做了这个小工具,主打的就是一个懒人需求。


一、要实现的功能

如上图所示,点击【统计三调三大类】按钮,输入用三调图层,需要注意的是要确保图层中有【DLBM】字段,这是三调自带的字段。

第二步输入面积字段,三调的业务我不熟,不知道是要统计的是投影面积还是图斑面积,这里以投影面积为例,输入【shape_area】。

最后输入要导出的Excel表格位置,点击执行即可。

生成结果如下:


二、实现流程

这里的生成结果采用的是Excel文件,所以首先要准备一个Excel模板:

部分单元格使用Excel里的公式计算。

主要流程如下:

1、按【DLBM】汇总面积

Arcpy.Statistics(fc_path, gdb + @"\statistisc_all", bm_field + @" SUM", "DLBM");

2、通过固定的筛选语句选择出三大类用地

// 三大类用地SQL
string sql_nyd = "DLBM IN ('0303','0304','0306','0402','0101','0102','0103','0201','0201K','0202','0202K','0204','0301', '0301K', '0302', '0302K' ,'0305','0307','0401' ,'0402' ,'0403' ,'1006','1103','1104','1104A', '1104K' ,'1107', '1107A', '1202' ,'1203')";
string sql_jsyd = "DLBM IN ('0603','05H1','0508','0601','0602','0701','0702','08H1','08H2','0809','0810','0810A','09','1001', '1002','1003','1004','1005','1007','1008','1009', '1109', '1201')";
string sql_wlyd = "DLBM IN ( '1105','1106' ,'1108' ,'0404' ,'1101' ,'1102','1110','1204' ,'1205' ,'1206' ,'1207' )";
// 筛选三大类用地
Arcpy.TableSelect(gdb + @"\statistisc_all", gdb + @"\statistisc_nyd", sql_nyd);
Arcpy.TableSelect(gdb + @"\statistisc_all", gdb + @"\statistisc_jsyd", sql_jsyd);
Arcpy.TableSelect(gdb + @"\statistisc_all", gdb + @"\statistisc_wlyd", sql_wlyd);

3、分别汇总三大类用地

Arcpy.Statistics(gdb + @"\statistisc_nyd", gdb + @"\all_nyd", "SUM_" + bm_field + @" SUM", "");
Arcpy.Statistics(gdb + @"\statistisc_jsyd", gdb + @"\all_jsyd", "SUM_" + bm_field + @" SUM", "");
Arcpy.Statistics(gdb + @"\statistisc_wlyd", gdb + @"\all_wlyd", "SUM_" + bm_field + @" SUM", "");

4、新建一个共有字段【地类名称】,并赋值,为后面合并用

string filed_dl = "地类名称";
Arcpy.AddField(gdb + @"\all_nyd", filed_dl, "TEXT");
Arcpy.AddField(gdb + @"\all_jsyd", filed_dl, "TEXT");
Arcpy.AddField(gdb + @"\all_wlyd", filed_dl, "TEXT");
Arcpy.CalculateField(gdb + @"\all_nyd", filed_dl, "'" + "农用地" +"'");
Arcpy.CalculateField(gdb + @"\all_jsyd", filed_dl, "'" + "建设用地" + "'");
Arcpy.CalculateField(gdb + @"\all_wlyd", filed_dl, "'" + "未利用地" + "'");

5、合并表格

List<string> files = new List<string>() { gdb + @"\all_nyd", gdb + @"\all_jsyd", gdb + @"\all_wlyd"};
Arcpy.Merge(files, gdb + @"\all_merge", true);

6、因为面积统计结果以公顷为单位,所以这里做了一个面积转换

Arcpy.CalculateField(gdb + @"\all_merge", "SUM_SUM_" + bm_field, "!SUM_SUM_" + bm_field + "!/10000");

7、从生成的统计表属性映射至Excel表格中,这部分内容可以看往期文章,或者直接看工程文件里的代码

// 复制嵌入资源中的Excel文件
ToolManager.CopyResourceFile(@"CCTool.Data.Excel.三调三大地类统计表.xlsx", table_path);

// 将映射属性表中获取字典Dictionary
Dictionary<string, string> dict = ToolManager.GetDictFromTable("all_merge", filed_dl, "SUM_SUM_" + bm_field);
// 属性映射大类
ToolManager.ExcelAttributeMapper(table_path + @"\Sheet1$", 2, 3, dict, 3);

三、工程文件分享

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

StatisticsSDhttps://pan.baidu.com/s/1rHPpNefYc0vAjQA4aGMhrQ?pwd=wyr5PS:可以直接点击...bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。

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

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

相关文章

Android Small框架增量升级方案

篇首语&#xff1a;本文由小常识网(cha138.com)小编为大家整理&#xff0c;主要介绍了Android Small框架增量升级方案相关的知识&#xff0c;希望对你有一定的参考价值。 背景 随着业务的发展&#xff0c;安装包的体积也在不断的增大&#xff0c;这时候&#xff0c;如果要版本…

vscode下,camke构建QT项目成功后,Cmake/Launch无法出现程序窗口的原因和解决方式

由于可执行程序根目录下没有 qt 相关 dll 文件&#xff0c;直接运行会出现一闪而过的问题&#xff0c;所以需要进入 build目录&#xff0c;终端运行类似如下指令&#xff1a; D:\QT\5.15.2\mingw81_64\bin\windeployqt.exe .\test001.exe 注意&#xff1a;环境变量不能配置ms…

计算机视觉特征图可视化与注意力图可视化(持续更新)

1.YOLOv5 特征图可视化 可视化代码&#xff1a; def feature_visualization(x, module_type, stage, n2, save_dirPath(runs/detect/exp)):"""x: Features to be visualizedmodule_type: Module typestage: Module stage within mod…

前端工程化-NPM

前端工程化-NPM 1&#xff0e;什么是NPMNPM安装基本使用 1&#xff0e;什么是NPM NPM代表npmjs.org这个网站&#xff0c;这个站点存储了很多Node.js的第三方功能包。 NPM的全称是Node Package Manager&#xff0c;它是一个Node.js包管理和分发工具&#xff0c;已经成为非官方的…

DR模式 LVS负载均衡群集部署

DR模式 LVS负载均衡群集部署 一、LVS-DR工作原理1.数据包流向分析2.LVS-DR中的ARP问题3.LVS-DR模式的特点 二、LVS-DR部署1.部署NFS服务器2.配置2台节点服务器3.部署调度服务器 一、LVS-DR工作原理 1.数据包流向分析 &#xff08;1&#xff09;客户端发送请求到 Director Serv…

Spring Cloud Ribbon源码解析,Ribbon为什么可以实现负载均衡,为什么可以用服务名调用

文章目录 一、Ribbon概述1、Ribbon简单使用&#xff08;1&#xff09;引包&#xff08;2&#xff09;使用方式一&#xff1a;RestTemplateLoadBalanced&#xff08;3&#xff09;使用方式二&#xff1a;LoadBalancerClient 2、问题来了 二、前置知识回顾1、复习Qualifier的作用…

时序逻辑与组合逻辑

目录 一、概念 二、区别 一、概念 数字电路按照逻辑功能一般可以分为组合逻辑和时序逻辑。组合逻辑电路是指不含有任何存储器件&#xff08;一般指寄存器&#xff09;的电路&#xff0c;它的输出只和当前电路的输入有关&#xff1b;时序逻辑电路含有存储器件&#xff0c;可以…

[PyTorch][chapter 38][ResNet ]

前言&#xff1a; 论文地址&#xff1a; https://arxiv.org/pdf/1512.03385.pdf 残差网络是由来自Microsoft Research的4位学者提出的卷积神经网络&#xff0c;在2015年的ImageNet大规模视觉识别竞赛&#xff08;ImageNet Large Scale Visual Recognition Challenge, ILSVRC&am…

[ATL/WTL]_[初级]_[如何获取ListView点击的单元格区域]

场景 在做Win32/WTL开发时&#xff0c;CListViewCtrl控件是常用的表格控件。有时候自绘listview时&#xff0c;需要在单元格上绘制小图标&#xff0c;并且小图标能响应鼠标点击的操作。 那么如何实现判断是否点击了小图标呢&#xff1f; 说明 要响应点击单元格上的小图标&…

MongoDB笔记

mongoDB基础知识 MongoDB的三个核心特性&#xff1a;灵活设计&#xff08;No Schema&#xff09;、高可用和分布式&#xff08;可平行扩展&#xff09;&#xff0c;另外MongoDB自带数据压缩功能&#xff0c;使得同样的数据存储所需的资源更少。 No Schema&#xff08;BJSON&a…

NeRF-Diffusion系列文章阅读

文章目录 前置知识《Latent-NeRF for Shape-Guided Generation of 3D Shapes and Textures》【CVPR23】《NeRDi: Single-View NeRF Synthesis with Language-Guided Diffusion as General Image Priors》【CVPR23】《SparseFusion: Distilling View-conditioned Diffusion for …

【系统找不到D盘指定驱动设备之解决方法】

文章目录 1.原因2.解决经过3.最终解决办法 1.原因 今天在搞课设&#xff0c;突然之间电脑一顿卡&#xff0c;然后整个电脑屏幕空白&#xff0c;D盘以及所有的安装软件都不见了。点击屏幕出现提示系统找不到指定驱动设备等等提示&#xff0c;查看此电脑发现D盘神奇的消失了。 …

Kafka面试题01

1、kafka有哪些特点 高吞吐&#xff0c;低延迟 可以热扩展 并发度高 具有容错性&#xff08;即使挂的只剩下一台也可以正常工作&#xff09; 可靠性高2、请简述你在那些场景下会选择kafka&#xff1f;kafka的应用 日志收集&#xff1a; 一个公司可以用kafka收集各种服务的log…

B站、抖音上那些4K、60帧视频是如何修复的?

如何把一个不清晰的视频变成高清的视频&#xff1f;今天就来教大家视频画质修复把720p的渣画质变成4K超清画质。 相信对于电影和后期爱好者来说&#xff0c;糊成马赛克的画质一定劝退了无数人&#xff0c;那不妨试试这个 牛学长视频修复工具 牛学长视频修复工具通过高级的AI…

Java网络开发(Tomcat)—— 登陆 和 注册功能 的实现 从html 到 jsp 迭代升级 session保存登陆信息

目录 引出登陆功能---从html到jsp1.登陆--用post请求2.用html文件的form表单登陆&#xff08;1&#xff09;index.html页面&#xff08;2&#xff09;login.html登陆的页面&#xff08;3&#xff09;LoginServlet.java处理输入信息的代码&#xff08;4&#xff09;登陆成功&…

ChatGPT提示大解析:如何有效定制Prompt并用插件管理

有时候&#xff0c;你可能在编程时遇到难题&#xff0c;需要解决方法。有时候&#xff0c;你在学习新的语言时&#xff0c;想要找到一位悉心的教师。又或者&#xff0c;你可能只是需要一些新的灵感&#xff0c;来润色你的文章。在所有这些情况下&#xff0c;ChatGPT都可以发挥巨…

轻量应用服务器哪款性价比高?

最近云服务器618活动正在火热进行中&#xff0c;选对时间入手自己心仪的云服务器其实可以为你省去一大笔费用&#xff0c;这里先开门见山将三家的云服务器活动粒度做个对比。 腾讯云 懂行的人一看这种配置性价比就会内心无比激动&#xff0c;按照平时的价格根本买不到这么实惠的…

JavaSE基础知识笔记

​1、基础语法 在一个Java源文件中可以声明多个class&#xff0c;但是最多只有一个类可以被声名为public&#xff0c;而且被声名为public的类的类名必须与源文件名相同。 计算机底层都以补码的方式来存储数据&#xff01;目的是为了简化计算机的结构设计&#xff0c;同时提升运…

如何在Moonbeam设置多重签名钱包,加固资产安全

Moonbeam Safe是以太坊上Safe&#xff08;先前名为Gnosis Safe&#xff09;的分叉。Safe于2018年正式推出&#xff0c;并发展成为了以太坊上知名的去中心化托管协议和集体资产管理平台。 Moonbeam Safe可用于创建多重签名Safe钱包&#xff0c;通过配置一个多签&#xff08;mul…

02.Web大前端时代之:HTML5+CSS3入门系列~H5结构元素

Web大前端时代之&#xff1a;HTML5CSS3入门系列&#xff1a;Web大前端时代之&#xff1a;HTML5CSS3入门系列 - 毒逆天 - 博客园 1.结构元素 可以理解为语义话标记&#xff0c;比如&#xff1a;以前这么写<div id"nav"></div> 现在偷懒写&#xff1a;&l…