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

lQueryDef查询Evaluate报该几何不包含M值问题。

地理数据库既包括空间,又包括属性,属性类似于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 | 文档

http://www.hskmm.com/?act=detail&tid=9163

相关文章:

  • 我的首个RCE漏洞发现之旅:Apache ActiveMQ远程代码执行实战
  • 北京市社保费用差额补缴计算工具
  • 使用自签名SSL证书有什么风险?
  • CDN可以使用iTrustSSL通配符证书吗?
  • OpenCvSharp基于颜色反差规避FBA面单贴标
  • AI CodeReview + Devops协同
  • 【API接口】最新可用手机号归属地查询接口
  • 【API接口】最新可用IP地址查询接口
  • UE5创建的对象无法用ai操控
  • 【API接口】最新可用喜马拉雅接口
  • 25/09/18 小结
  • 【API接口】最新可用番茄畅听接口
  • 【API接口】最新可用七猫短剧接口
  • 磁盘分析工具推荐(Wiztree)
  • 用FastAPI和Streamlit实现一个ChatBot
  • 搜索百科(2):Apache Solr — 企业级搜索的开源先锋
  • Markbook Day03
  • re分区为y盘,efi分区为z盘
  • 数组,java学习第五天
  • 文件结构与数据分析专项-解析
  • 销售能力——Steam平台我们应该做什么游戏?
  • 平静
  • 2025.9.18总结
  • Codeforces 2144F Bracket Groups 题解 [ 紫 ] [ AC 自动机 ] [ DP ] [ 构造 ]
  • Java进制,数据类型拓展Unicode编码学习
  • 9月18日总结
  • 【转】[IDEA] 调试时怎么判断使用哪个配置文件
  • 软件工程学习日志2025.9.18
  • U3D动作游戏开发读书笔记--3.1 物理系统详解(上)
  • 一个联名款电子产品的技术实现和诞生