惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
The Cloudflare Blog
博客园_首页
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
美团技术团队
博客园 - 【当耐特】
博客园 - Franky
T
Tailwind CSS Blog
雷峰网
雷峰网
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)

博客园 - 我也是个傻瓜

ArcGIS Pro新建地图底图加载慢 ArcGIS属性表搜索查找字符串长度限制bug Win11浏览器鼠标光标变白看不见解决方法 IIS 未能加载文件或程序集XX或它的一个依赖项 ArcGIS显存缓存路径修改 Python卸载Config.Msi权限问题 ArcGIS中对“被完全包含”的理解。 ArcGIS中NULL空值的特殊性 Cesium加载本地离线影像南北空洞缺失问题 IIS中W3SVC、WAS服务无法启动问题 Navicat连接Oracle报错ORA-28547问题 WebService调用创建应用程序事件日志权限问题 您必须有许可证才能使用此 ActiveX 控件0x80131901 Visual Studio Installer 2022正在进行准备 C#修改已根据框架版本自动选择语言版本 打开工作空间时,但未在 DTD/架构中声明 Word表格1.5倍行距居中问题 CAD安装Error 1402权限问题解决 ArcEngine10.2中融合工具Dissolve的bug Visual Studio 离线安装0x80131509 如何快速向Windows安全中心添加排除项 VMware复制无法扫描本地目录,您可能没有执行此操作的权限 如何判断ArcGIS界面语言是中文还是英文 Visual Studio批量删除Token注释 解决Authentication method 'caching_sha2_password' not supported的问题 7zip压缩Updating for multivolume archives is not implemented SVN设置强制提交日志 ArcGIS AddIn插件开发断点调试
lQueryDef查询Evaluate报该几何不包含M值问题。
我也是个傻瓜 · 2025-09-19 · via 博客园 - 我也是个傻瓜

地理数据库既包括空间,又包括属性,属性类似于SQL表,理论上支持标准SQL查询。lQueryDef接口提供了高效查询方法,适用于对属性表或要素类的属性进行筛选和检索。

问题描述

一个简单的面积求和示例如下:

IQueryDefFactory queryDefFactory = (IQueryDefFactory)workspace;
IQueryDef queryDef = queryDefFactory.CreateQueryDef();

// 设置查询表
queryDef.Tables = "TB";

// 关键:使用SQL聚合函数SUM()并重命名
queryDef.SubFields = "SUM(area) AS total_area";

// 筛选条件
queryDef.WhereClause = "BM = '0702'";

// 执行查询IRecordSet recordSet = queryDef.Evaluate();
ICursor cursor = recordSet.Cursor;
IRow row = cursor.NextRow();

但执行时,却报错:该几何不包含M值在ESRl.ArcGls.Geodatabase.lQueryDef.Evaluate()。

解决方案

通过观察字段area是存在的,通过对比更换其他有的字段不报错,最终发现area是一个文本字段(因为未打开图层,所以未检查字段类型),SUM字段不能直接使用文本字段。解决方案有两种:

(1)使用游标遍历所有area属性值,转换后再相加:这样的好处是可以处理各种异常的值;

(2)使用CAST转换函数,将area转为数值类型:

queryDef.SubFields = "SUM(CAST(area AS INTEGER)) AS total_area";

可参考官网说明:在 ArcGIS 中使用的查询表达式的 SQL 参考—ArcGIS Pro | 文档