ArcEngine操作Z值和M值
坐标信息中除了X,Y,ESRI还定义了Z值和M值。Z值是用来存储高程属性信息的,M值是用来存储其他属性信息的,如温度、浓度等。通常二维的矢量数据是不包含Z值,使用时应该格外注意,否则容易引起异常。
软件操作
新建要素类时,可选择是否包含Z值和M值。
如果数据已经包含Z值,想要去除,可以在环境设置中调整参数。
代码操作
对Z值的常见的代码操作:
(1)创建带Z值和图层:
1 2 3 4 5 6 | IGeometryDef geometryDef = new GeometryDef(); IGeometryDefEdit geometryDefEdit = geometryDef as IGeometryDefEdit; geometryDefEdit.GeometryType_2 = geometryType; geometryDefEdit.HasZ_2 = true ; //允许有Z值 geometryDefEdit.SpatialReference_2 = spatialReference; fieldEdit.GeometryDef_2 = geometryDef; |
(2)判断是否含Z值
1 2 3 4 5 6 | IFeatureClass featureClass = this .pLayer.FeatureClass; string shapeFieldName = featureClass.ShapeFieldName; if (featureClass.Fields.get_Field(featureClass.FindField(shapeFieldName)).GeometryDef.HasZ) { this .hasZ = true ; } |
(3)开启或禁用Z值
1 2 3 | IGeometry geometry = feature.ShapeCopy; IZAware zAware = (IZAware)geometry; zAware.ZAware = true ; |
(4)设置Z值
1 2 | IZ iz = (IZ)geometry; iz.SetConstantZ(500); |
在处理数据时,需注意Z值是否存在,否则容易引起The Geometry has no z-value或The Geometry has null z-value等异常。
作者:我也是个傻瓜
出处:http://www.cnblogs.com/liweis/
签名:成熟是一种明亮而不刺眼的光辉。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理