ArcEngine操作Z值和M值

文章介绍了GIS坐标信息中的Z值和M值,Z值用于表示高程,M值用于存储其他属性如温度、浓度。在二维矢量数据中通常不含Z值,创建要素类时可以选择是否包含。代码操作示例包括创建带Z值的几何定义、检查Z值存在、启用或禁用Z值以及设置Z值。处理数据时忽视Z值可能导致异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         坐标信息中除了X,Y,ESRI还定义了Z值和M值。Z值是用来存储高程属性信息的,M值是用来存储其他属性信息的,如温度、浓度等。通常二维的矢量数据是不包含Z值,使用时应该格外注意,否则容易引起异常。

软件操作

        新建要素类时,可选择是否包含Z值和M值。

        如果数据已经包含Z值,想要去除,可以在环境设置中调整参数。

代码操作

对Z值的常见的代码操作:

(1)创建带Z值和图层:

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值

IFeatureClass featureClass = this.pLayer.FeatureClass;
string shapeFieldName = featureClass.ShapeFieldName;
if (featureClass.Fields.get_Field(featureClass.FindField(shapeFieldName)).GeometryDef.HasZ)
{
    this.hasZ = true;
}

(3)开启或禁用Z值

IGeometry geometry = feature.ShapeCopy;
IZAware zAware = (IZAware)geometry;
zAware.ZAware = true;

(4)设置Z值

IZ iz = (IZ)geometry;
iz.SetConstantZ(500);

在处理数据时,需注意Z值是否存在,否则容易引起The Geometry has no z-value或The Geometry has null z-value等异常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值