在ArcEngine中创建带高程Z值的点和线图层

博客讲述了在ArcEngine中创建带有高程Z值的点和线图层时遇到的问题及解决方案。当管线数据的Z值重要且存在相同XY坐标时,直接生成图层会导致问题,特别是在使用ArcSDE C API时。解决方法包括在创建图层时设定Shape字段的HasZ属性为true,并在添加图元时使用IZAware接口确保Z值被考虑。还提及了ArcSDE C API中高程精度丢失的问题,最终通过设置SE_coordref_set_z_by_range函数成功解决了导入错误。

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

管线和其附属物的坐标数据都是带有Z值的

而且有些情况下,一个管段的两个端点的x,y值一模一样(垂直的管段)

这样的线,在直接生成shape图层的时候,就会产生问题,特别是

使用ArcSDE的C API直接创建到表中的时候你会发现,这样的数据是生成不了的

 

解决的方法就是为图层添加Z值,一个图层是否带有高程值,可以在ArcMap中通过查看

图层的属性表得知,带有Z值的图元,在Shape字段中,其类型后面会有个ZM字样

比如point ZM,Polyline ZM

带高程值的图元Shape字段显示状态

创建带高程Z值的图层时,只设置Point的Z属性是没有用的,默认情况下

ArcEngine会忽略Z值,

两步走,解决问题:

第一步:创建Shape图层,使用IFeatureWorkspace.CreateFeatureClass

此函数的第二个参数是IFields,字段定义,在字段定义中对Shape字段的类型

使用IGeometryDefEdit.HasZ_2 = true指定其包含Z值,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值