ArcGISPro2.7 三维场景下线数据 z值设置

该博客介绍了如何通过ArcPy脚本更新线要素的Z值,特别是针对管线等线数据,需要考虑线上的所有节点。内容涉及到读取几何对象、遍历线上的点并修改Z坐标,然后更新线要素的形状。示例代码展示了如何将线要素的每个点Z值增加20米。
摘要由CSDN通过智能技术生成

应用场景:管线等线数据的Z值设置,不像面或点要素,一个点要素有N的节点,Z值可能都不同。比如一根管线可能有beginHeight和endHeight,所以其实如果需要准确设置,是需要获取到线的所有节点,然后设置对应的Z值的。

另外,如果已经获取到的线要素是没有Z值的,是在ArcMap创建的,并且没有开启Z值,那就可以先使用工具,先把Z值启用出来。
在这里插入图片描述

解决方法

通过写ArcPy脚本解决。

参考资料

代码

以下示例为给一条线要素的每个点Z值都增加20米:
在这里插入图片描述

import arcpy
infc = "C:\\Users\\Priva\\Documents\\ArcGIS\\Projects\\MyProject26\\MyProject26.gdb\\testline"
cur= arcpy.UpdateCursor(infc)
SR= arcpy.Describe(infc).spatialReference

#循环每一行的每一个线要素
for row in cur:
    new_point = arcpy.Point()
    new_array = arcpy.Array()
    
    #获取线的几何对象geometry对象
    line_geom=row.getValue('shape')
    print(line_geom)
    
    #获取到线要素中的每一个点
    array = line_geom.getPart(0)
    print(array)
    
    #逐点处理,Z值+20
    for x in range(0,array.count):
        old_point = array[x]
        newZ = old_point.Z+20
        new_point = arcpy.Point(old_point.X,old_point.Y,newZ)
        new_array.add(new_point)
    
    #利用新的坐标点array创建新的线geometry对象
    new_line = arcpy.Polyline(new_array,SR)
    new_array.removeAll()
    print(1111)
    
    #更新每一行的线要素
    row.setValue("SHAPE",new_line)
    cur.updateRow(row)
    new_line = None
del row,cur
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙同学的一个笔记本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值