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

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
L
LangChain Blog
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
The Cloudflare Blog
J
Java Code Geeks
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Microsoft Azure Blog
Microsoft Azure Blog
Y
Y Combinator Blog
有赞技术团队
有赞技术团队
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
Martin Fowler
Martin Fowler
小众软件
小众软件
量子位
月光博客
月光博客
P
Proofpoint News Feed
IT之家
IT之家
腾讯CDC
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
雷峰网
雷峰网
V
Visual Studio Blog

博客园 - 我也是个傻瓜

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 | 文档