arcengine 判断要素是否有z值
//判断IFeatureClass图形是否含有Z值信息 IFeatureClass featureClass = this.pLayer.FeatureClass; string shapeFieldName = featureClass.ShapeFieldName; if (featureClass.Fields.get_Field(featureClass.FindField(shapeFieldName)).GeometryDef.HasZ) { this.hasZ = true; } //若有为IPoint赋Z值: IPoint point = new PointClass(); point.X = num; point.Y = num2; if (this.hasZ) { IZAware aware = point as IZAware; aware.ZAware = true; double num3 = Convert.ToDouble(this.Z_numericUpDown.Text); point.Z = num3; } ———————————————— 版权声明:本文为CSDN博主「GIS_百度」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/GIS_Y_C_B/article/details/119949462
Arcengine 开发,FeatureClass新增feature时“The Geometry has no z-value”或"The Geometry has null z-value"的解决方...
Arcengine 开发,当图层含有Z值时,新增的feature没有Z值就会 出现“The Geometry has no z-value”的错误。意思很明显,新增的geometry没有Z值。
此时按照常规想法,取出geometry的每个点,分别设置Z=0,理论可行,但实际调试过程中依然报“The Geometry has no z-value”。
可用解决方案如下:
-
IGeometry geometry = feature.ShapeCopy;
-
IZAware zAware = (IZAware)geometry;
-
zAware.ZAware = true;
这样转换一下,geometry就有Z属性了。zAware.ZAware是控制geometry是否有Z值的,当然也可以使用IZAware除去geometry的Z值。
故事到这里应该就结束了,可是调试时候又报错了,这时的错误是“The Geometry has null z-value”,意思也很明显,z为空,不通过....
这时再使用常规方案,取出geometry的每个点,分别设置Z=0...结果还是一样的报错。
解决方案如下:
-
IZ iz = (IZ)geometry;
-
iz.SetConstantZ(0);
运行,通过....
AE提供了很多转换接口,比我们自己写要简单和有效的很多...当然也是因为AE中有很多结构没有公开,我们的一些常规解决方案有时候不是那么有用。希望能帮到有这么方面困扰的AE coder!
分类:
ArcEngine
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2020-03-15 ArcGIS Pro定制和开发-执行GP环境变量的设置
2018-03-15 洛伦兹变换
2018-03-15 世界史上最著名的十大思想实验