当前位置: 首页 > article >正文

【ArcGIS Pro二次开发】:三调地类面积精准统计与数据清洗实战

1. 三调地类面积统计的业务痛点做国土调查数据处理的朋友都知道三调数据最让人头疼的就是地类名称不规范。我去年接手一个省级三调项目时光是清理养殖坑塘这类非标准表述就花了整整两周。不同作业单位提交的数据里光是坑塘水面就有养殖坑塘、水产养殖、1104A等七八种写法更别说还有带可调整前缀的临时地类。这种混乱直接导致两个问题一是人工核对效率低下二是面积汇总结果失真。有次我给领导报数据因为漏统计了几个变体名称导致耕地面积少算了200多公顷差点酿成重大工作失误。后来我痛定思痛决定用ArcGIS Pro二次开发彻底解决这个问题。2. 开发环境准备2.1 基础软件配置工欲善其事必先利其器建议按这个清单准备环境ArcGIS Pro 3.0必须安装.NET 6.0运行时Visual Studio 2022社区版安装时勾选.NET桌面开发Excel 2016用于最终报表输出特别提醒安装ArcGIS Pro SDK时要注意版本匹配。我有次用Pro 2.9配SDK 3.0调试时直接报程序集不兼容错误。建议通过NuGet统一管理依赖项Install-Package ArcGIS.Core -Version 3.1.0 Install-Package NPOI -Version 2.6.02.2 工程模板选择在VS中新建项目时务必选择ArcGIS Pro Module Add-in模板。这个模板会自动生成config.daml文件这是插件的入口声明文件。我见过有人误选Class Library模板结果调试时死活加载不了工具按钮。3. 核心数据处理流程3.1 地类名称标准化处理三调数据的DLMC字段就像个方言大杂烩我的处理策略是先清洗后映射。先看这段实测有效的代码// 创建地类修正字典 var correctionDict new Dictionarystring, string { {养殖坑塘, 坑塘水面}, {水产养殖, 坑塘水面}, {1104A, 坑塘水面}, // 其他常见变体... }; using (RowCursor cursor featureClass.Search()) { while (cursor.MoveNext()) { using (Row row cursor.Current) { string originName row[DLMC].ToString(); // 处理带可调整前缀的情况 if (originName.Contains(可调整)) { row[DLMC] originName.Replace(可调整, ).Trim(); row.Store(); continue; } // 字典匹配修正 if (correctionDict.TryGetValue(originName, out string standardName)) { row[DLMC] standardName; row.Store(); } } } }关键点一定要先处理可调整这类前缀再进行字典匹配。我有次把顺序搞反了结果产生了可调整坑塘水面这种四不像字段。3.2 地类编码对照表设计TDT 1055-2019规程里的地类编码是层级结构但实际数据往往只有小类编码。我的解决方案是建立三级映射表小类编码小类名称大类编码大类名称0101水田01耕地0102水浇地01耕地0201果园02园地建议用Excel维护这个对照表然后通过NPOI库动态读取using (var fs new FileStream(地类对照表.xlsx, FileMode.Open)) { var workbook new XSSFWorkbook(fs); var sheet workbook.GetSheetAt(0); for (int i 1; i sheet.LastRowNum; i) { var row sheet.GetRow(i); string code row.GetCell(0).ToString(); string name row.GetCell(1).ToString(); // 存入内存字典... } }4. 面积统计的进阶技巧4.1 多级面积汇总方案常规的面积统计太扁平化我改进的方案是同时输出三级统计结果小类统计按原始DLMC字段汇总大类统计按映射后的大类编码汇总权属统计叠加行政区划字段对应的ArcPy调用方式# 小类统计 arcpy.Statistics_analysis(input_features, class_stats, Shape_Area SUM, DLMC) # 大类统计 arcpy.Statistics_analysis(input_features, type_stats, Shape_Area SUM, 大类编码) # 合并结果 arcpy.Merge_management([class_stats, type_stats], final_stats)4.2 零值处理的三种策略报表中的零值既占篇幅又影响阅读我总结出这些处理方案物理删除直接过滤SUM_Shape_Area0的记录逻辑隐藏在Excel中设置条件格式透明化显示占位提示用0.01公顷替代零值推荐使用NPOI实现方案3ICellStyle style workbook.CreateCellStyle(); style.DataFormat workbook.CreateDataFormat().GetFormat(#,##0.00_);[红色](#,##0.00)); foreach (IRow row in sheet) { if (row.GetCell(5).NumericCellValue 0.01) { row.GetCell(5).SetCellValue(0.01); } }5. 成果输出与可视化5.1 自动化报表生成用EPPlus库生成带格式的Excel报表using (ExcelPackage pkg new ExcelPackage()) { var ws pkg.Workbook.Worksheets.Add(地类统计); // 设置表头样式 ws.Cells[A1:E1].Style.Font.Bold true; ws.Cells[A1:E1].Style.Fill.PatternType ExcelFillStyle.Solid; ws.Cells[A1:E1].Style.Fill.BackgroundColor.SetColor(Color.LightGray); // 写入数据 ws.Cells[A2].LoadFromDataTable(dataTable, false); // 添加合计行 ws.Cells[$A{rowCount2}].Value 合计; ws.Cells[$E{rowCount2}].Formula $SUM(E2:E{rowCount1}); }5.2 专题图自动生成技巧统计结果最好配合专题图使用这段代码可以批量生成分级设色图# 创建图例 sym arcpy.mapping.Layer(input_layer).symbology sym.renderer GraduatedColorsRenderer sym.classificationField SUM_Shape_Area sym.breakCount 5 sym.colorRamp arcpy.mapping.ListColorRamps(Yellow to Red)[0] arcpy.mapping.UpdateLayer(df, layer, sym)6. 避坑指南坐标系陷阱遇到过用地理坐标系计算面积的情况结果全错。务必先检查是否使用投影坐标系推荐CGCS2000_3_Degree_GK_Zone_39等三度带投影。拓扑错误影响图斑重叠会导致面积重复计算。建议先执行arcpy.CheckGeometry_management(in_features, geometry_errors) arcpy.RepairGeometry_management(in_features)字段类型问题汇总时若遇到字段截断可能是字符串长度不足。创建字段时建议// 创建足够长的文本字段 var fields new ListFieldDescription() { new FieldDescription(DLMC, FieldType.String) { Length 50 } }; featureClass.CreateFields(fields);这套方案在多个省级三调项目中验证过最快能在15分钟内完成全省数据统计。有次应急汇报从拿到数据到生成领导需要的PPT图表全程只用了23分钟比传统人工操作快了近百倍。

相关文章:

【ArcGIS Pro二次开发】:三调地类面积精准统计与数据清洗实战

1. 三调地类面积统计的业务痛点 做国土调查数据处理的朋友都知道,三调数据最让人头疼的就是地类名称不规范。我去年接手一个省级三调项目时,光是清理"养殖坑塘"这类非标准表述就花了整整两周。不同作业单位提交的数据里,光是坑塘水…...

Star 13.3k 内网穿透工具 Rust 语言编写 frp,ngrok 替代

👉 这是一个或许对你有用的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 《项目实战(视频)》:从书中学,往事…...

Qianfan-OCR企业应用落地:金融票据关键信息自动提取实战案例

Qianfan-OCR企业应用落地:金融票据关键信息自动提取实战案例 1. 金融票据处理的行业痛点 在金融行业,每天需要处理海量的票据、合同和表单。传统的人工录入方式存在三个核心痛点: 效率低下:一张复杂的银行票据可能需要5-10分钟…...

3步解锁AMD/Intel显卡的CUDA超能力:ZLUDA兼容层终极指南

3步解锁AMD/Intel显卡的CUDA超能力:ZLUDA兼容层终极指南 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 你是否曾因缺少NVIDIA显卡而无法运行深度学习项目?当AI模型训练需要CUDA环境时…...

【EF Core 10向量搜索企业落地白皮书】:20年微软MVP亲授高并发、低延迟、可审计的向量检索架构设计

第一章:EF Core 10向量搜索扩展的企业级定位与演进全景EF Core 10 向量搜索扩展并非孤立的功能补丁,而是微软在 AI 原生数据访问层战略中的一次关键跃迁。它将传统 ORM 的关系建模能力与现代向量数据库的语义检索能力深度融合,使企业能在统一…...

嵌入式系统与CPS的本质差异及核心技术解析

1. 嵌入式系统与信息物理系统的本质差异在传统认知中,嵌入式系统常被简单理解为"资源受限的小型计算机系统",这种观点已经无法适应当前技术发展的需求。嵌入式系统与信息物理系统(CPS)的根本区别在于:前者关注的是计算设备本身的实…...

如何高效利用思源宋体TTF解决中文排版难题:7种字重完整方案

如何高效利用思源宋体TTF解决中文排版难题:7种字重完整方案 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文项目寻找专业且免费的字体解决方案而烦恼吗&#xff…...

别再被JDK版本坑了!手把手教你用Maven 3.8.4完美兼容JDK 15(附IDEA配置避坑指南)

从JDK 8到JDK 15:Maven 3.8.4的高版本JDK兼容实战指南 如果你还在用Maven 3.3.9搭配JDK 15开发,可能会遇到各种莫名其妙的错误。这不是你的问题,而是版本兼容性在作祟。本文将带你彻底解决这个痛点,从环境配置到IDE集成&#xff0…...

告别金鱼记忆!一文看透 LangGraph 是如何用 AgentState 和 Checkpoint 实现记忆隔离的

告别金鱼记忆!一文看透 LangGraph 是如何用 AgentState 和 Checkpoint 实现记忆隔离的在开发 AI Agent 时,让大模型“记住刚才聊了什么”是一项最基础但也最容易让人头疼的需求。 如果你正在使用 LangChain 及其专门用于构建状态化 Agent 的核心库 LangG…...

代码随想录算法训练营 Day40 | 动态规划 part13

647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 class Solution { public:int countSubstrings(string s) {int n s.size();vecto…...

排课软件采购要防哪些兼容问题:龙创教育深度解析智慧校园选型干货

排课软件采购要防哪些兼容问题:龙创教育深度解析智慧校园选型干货随着教育信息化建设的不断推进,越来越多的学校开始引入智能排课系统替代人工排课,解决排课效率低、冲突多的痛点。但在实际采购过程中,兼容问题是最容易被忽略、也…...

从NRZ到PAM-4:手把手解析PCIe 6.0信号编码的实战挑战与PHY选型避坑

从NRZ到PAM-4:PCIe 6.0信号编码的工程实践与PHY选型策略 当64GT/s的数据速率成为PCIe 6.0的标准配置时,硬件工程师们面临着一个关键抉择:如何在保持信号完整性的同时实现带宽翻倍?答案藏在PAM-4编码技术中——这个在112G以太网中已…...

从零到量产:手把手教你用U-Boot MMC命令为i.MX6ULL板卡烧录完整系统镜像

从零到量产:手把手教你用U-Boot MMC命令为i.MX6ULL板卡烧录完整系统镜像 在嵌入式产品开发中,系统镜像的烧录是连接硬件与软件的关键环节。对于采用NXP i.MX6ULL处理器的设备而言,掌握U-Boot的MMC命令操作不仅能提升开发效率,更能…...

直流微电网在数据中心的应用:如何用5种控制策略提升能源效率

直流微电网在数据中心的应用:如何用5种控制策略提升能源效率 数据中心作为数字经济的核心基础设施,其能耗问题日益突出。据统计,全球数据中心年耗电量已超过2000亿千瓦时,相当于某些中等国家的全年用电量。面对如此巨大的能源需求…...

从地震预测到社交网络:Hawkes过程如何成为‘连锁反应’建模的瑞士军刀?

Hawkes过程:从地震余震到社交传播的连锁反应建模利器 想象一下,当你看到社交平台上某条内容突然爆红时,背后是否存在某种规律?或者当电商平台某个商品销量激增时,是否受到前期购买行为的影响?这些看似无关…...

Sentry 从零到一:手把手部署与多端监控实战

1. 为什么选择Sentry作为错误监控方案 第一次接触Sentry是在三年前的一个深夜,当时我们线上商城突然出现大量支付失败的问题。凌晨三点,我还在服务器日志里大海捞针般寻找线索,直到同事推荐了Sentry。接入后仅用15分钟就定位到一个未处理的第…...

3步实现AI到PSD完美转换:Ai2Psd脚本终极指南

3步实现AI到PSD完美转换:Ai2Psd脚本终极指南 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd Adobe Illustrator和Photoshop是设计…...

终极指南:如何在foobar2000中实现专业级逐字歌词同步体验

终极指南:如何在foobar2000中实现专业级逐字歌词同步体验 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 你是否厌倦了传统歌词插件那种生硬的…...

Android 9.0 AOSP编译实战:手把手教你修改系统Fingerprint,绕过应用环境检测

Android 9.0 AOSP编译实战:深度定制系统指纹绕过环境检测 在移动应用生态中,越来越多的应用开始检测设备系统指纹(Fingerprint)来判断运行环境的安全性。当应用检测到test-keys等开发版标识时,可能会限制功能或直接拒绝…...

【Android】智能工具箱_1_1_8_Lwely

【Android】智能工具箱_1_1_8_去广告_解锁订阅版_Lwely 链接:https://pan.xunlei.com/s/VOqe5UC9mJL1rNZAeFOhIm0jA1?pwdhucf#这款智能工具箱解锁订阅版已去除广告干扰,集成超过百种实用工具于一体,从尺子、水平仪到系统优化功能一应俱全。界…...

TTL计算机原型Pilot-1 CPU的设计与实现

1. 项目概述:ECM-16/TTL计算机的简化验证原型Pilot-1 CPU是我在构建完整ECM-16/TTL计算机过程中的一个关键验证原型。这个采用纯TTL逻辑芯片搭建的16位处理器,虽然指令存储空间仅有16个单词(采用哈佛架构设计),但已经实…...

2026届必备的AI写作方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 针对学术研究范畴,恰到好处依循免费人工智能工具可极为突出地提高论文撰写效率。…...

程序员上手 Rust 2 年后感悟:它的确强大,但想要取代 C 还远着呢

作者 | Nabil Elqatib 译者 | 平川 策划 | 刘燕 本文最初发布于 Nabil Elqatib 的个人博客。 接触 Rust 开发快两年了。我觉得,回顾下自己在这个过程中的一些感想和汲取的经验教训,应该会很有趣。 下图是我第一次向一个 Rust 存储库提交代码。虽然时间是…...

2025届最火的五大降重复率神器解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 用于极大助力写作的辅助工具一键论文生成器,借助先进智能算法与自然语言处理技术…...

从Ubuntu双系统到形变图:手把手搞定StamPS+SBAS完整流程(含ISCE安装避坑指南)

从Ubuntu双系统到形变图:手把手搞定StamPSSBAS完整流程(含ISCE安装避坑指南) 当第一次接触InSAR处理时,最令人头疼的往往不是算法原理,而是软件环境的搭建。本文将带你从零开始,在Ubuntu双系统环境下完成St…...

从模型转换到性能评估:用RKNN-Toolkit v1.7.1跑通Mobilenet-V1完整流程实录

从模型转换到性能评估:RKNN-Toolkit v1.7.1实战全流程解析 在边缘计算领域,瑞芯微的NPU平台凭借其出色的能效比和性价比,正成为越来越多AI应用的首选硬件。而RKNN-Toolkit作为连接算法模型与硬件NPU的桥梁,其重要性不言而喻。本文…...

Hearthstone-Script终极指南:如何用Java/Kotlin打造智能炉石传说自动化脚本

Hearthstone-Script终极指南:如何用Java/Kotlin打造智能炉石传说自动化脚本 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 在炉石传说这款…...

从“拒绝访问”到注册成功:深度复盘Win10/Win11下MSCOMM控件安装的全流程避坑指南

从“拒绝访问”到注册成功:Win10/Win11下MSCOMM控件安装全流程避坑指南 当你在Windows 10或11系统上尝试运行某个老旧的工控软件或VB6程序时,突然弹出一个令人沮丧的错误提示:"没有注册类(MSCOMM)"。这个看似简单的错误背后&#x…...

GitHub 中国区前100名,哪些是真开发者?哪些是Markdown工程师?

GitHub 中国区前100名,哪些是真开发者?哪些是Markdown工程师? 大家好,我是彪哥, 本次分析的数据来源于开源项目《中国区 GitHub 用户排行榜》, 仓库数据及分析来自开源工具《悟空 GitHub 数据分析工具》&am…...

为什么你的技术演示应该告别手动排版?md2pptx让PPT制作变得简单高效

为什么你的技术演示应该告别手动排版?md2pptx让PPT制作变得简单高效 【免费下载链接】md2pptx Markdown To PowerPoint converter 项目地址: https://gitcode.com/gh_mirrors/md/md2pptx 还在为技术演示的格式调整而头疼吗?md2pptx是一款开源的Ma…...