【ArcGIS_Python】使用arcpy脚本将shape数据转换为三维白膜数据

news/2025/2/2 6:47:33 标签: arcgis, python, 开发语言

说明:

该专栏之前的文章中python脚本使用的是ArcMap10.6自带的arcpy(好几年前的文章),从本篇开始使用的是ArcGIS Pro 3.3版本自带的arcpy,需要注意不同版本对应的arcpy函数是存在差异的

数据准备:准备一个带高度属性的二维面图层shape文件

示例代码说明:

①2D要素类(Polygon)转换为3D要素类(PolygonZ)

②3D要素类(PolygonZ,三维表面)转3D要素类(MultiPatch,体,三维模型)

③3D要素类(MultiPatch)转3D对象场景图层包.slpk数据

# -*- coding: utf-8 -*-
import arcpy
from arcpy import env
import os
import sys
import shutil
import datetime,time

starttime = datetime.datetime.now()
output_dir = 'E:/Dataset/output'
# 检查文件夹是否存在
if os.path.exists(output_dir):
    # 如果文件夹不为空,则删除其中的所有文件和子文件夹
    for filename in os.listdir(output_dir):
        file_path = os.path.join(output_dir, filename)
        try:
            if os.path.isfile(file_path) or os.path.islink(file_path):
                os.unlink(file_path)  # 删除文件或符号链接
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)  # 删除子文件夹及其内容
        except Exception as e:
            print(f"无法删除 {file_path}。原因:{e}")
    print(f"文件夹 '{output_dir}' 已清空。")
else:
    print(f"文件夹 '{output_dir}' 不存在,无需清空。")
# 设置工作空间
env.workspace = output_dir
# 输入 Shapefile 文件路径
in_features = 'E:/Dataset/build/build.shp'
# 输出 Shapefile 文件名称
out_feature='build3d.shp'
# 设置高度字段
height_field ='height'
arcpy.ddd.FeatureTo3DByAttribute(in_features, out_feature, height_field)
print("2D要素类转换为3D要素类完成,文件类型为PolygonZ")
# 创建要素图层
layer_name_polygonz = "temp_layer_polygonz"  # 临时图层的名称
arcpy.MakeFeatureLayer_management(out_feature, layer_name_polygonz)
print("PolygonZ文件转临时图层文件完成")
# 输出3D要素类路径
output_feature_class='build3dmultipatce.shp'
# 执行 Layer3DToFeatureClass 工具
arcpy.ddd.Layer3DToFeatureClass(layer_name_polygonz,output_feature_class)
print("3D图层转换为3D要素类完成,文件类型为MultiPatch")
out_slpk='buildslpk.slpk'
# 创建要素图层
layer_name_multipatch = "temp_layer_multipatch"  # 临时图层的名称
arcpy.MakeFeatureLayer_management(output_feature_class, layer_name_multipatch)
print("MultiPatch文件转临时图层文件完成")
arcpy.management.Create3DObjectSceneLayerPackage(
    in_dataset=layer_name_multipatch,# 输入的3D模型数据
    out_slpk=out_slpk,# 输出的SLPK文件路径
    out_coor_system=None,# 使用输入数据的坐标系(与ArcGIS Pro默认行为一致)# 输出坐标系(设置为默认,即与输入数据相同)
    transform_method="",# 不进行坐标转换(与ArcGIS Pro默认行为一致) # 转换方法(可选)
    texture_optimization="None", # 不进行纹理优化(与ArcGIS Pro默认行为一致)# 纹理优化:ALL | DESKTOP | MOBILE | NONE
    target_cloud_connection=""# 不使用云连接(与ArcGIS Pro默认行为一致)# 目标云连接(可选)
)
print("3D对象场景图层包.slpk数据转换完成")
endtime = datetime.datetime.now()
times=endtime-starttime
times_seconds =times.seconds
print ("用时:",times_seconds,"s")

输出结果示例:

使用脚本完成slpk数据的生成,接下来一般是上传slpk数据到门户网站,发布为三维服务,给出之前的发布结果示例图:


http://www.niftyadmin.cn/n/5839882.html

相关文章

【Unity2D 2022:C#Script】DoTween插件的使用

一、插件介绍 DOTween 是一个快速、高效、完全类型安全的 Unity 面向对象的动画引擎,针对 C# 用户进行了优化,免费和开源,具有大量高级功能 二、插件的下载 1. DoTween官网:DOTween (HOTween v2) 2. DoTween下载: …

基于YOLO11的肺结节检测系统

基于YOLO11的肺结节检测系统 (价格90) LUNA16数据集 数据一共 1186张 按照8:1:1随机划分训练集(948张)、验证集(118张)与测试集(120张) 包含 nodule 肺结节 1种…

智能小区物业管理系统打造高效智能社区服务新生态

内容概要 随着城市化进程的不断加快,智能小区物业管理系统的出现,正逐步改变传统物业管理的模式,为社区带来了崭新的管理理念和服务方式。该系统不仅提升了物业管理效率,还加强了业主与物业之间的互动,为每位居民提供…

Kafka SSL(TLS)安全协议

文章目录 Kafka SSL(TLS)安全协议1. Kafka SSL 的作用1.1 数据加密1.2 身份认证1.3 数据完整性1.4 防止中间人攻击1.5 确保安全的分布式环境1.6 防止拒绝服务(DoS)攻击 2. Kafka SSL 配置步骤(1)创建 SSL 证…

el-table组件样式如何二次修改?

文章目录 前言一、去除全选框按钮样式二、表头颜色的修改 前言 ElementUI中的组件el-table表格组件提供了丰富的样式,有一个全选框的el-table组件,提供了全选框和多选。 一、去除全选框按钮样式 原本默认是有全选框的。假如有一些开发者,因…

kamailio的部分模块的解释及代码示例【文章由DeekSeek大模型提供】

以下是 Kamailio 中这些模块的详细说明及示例代码: 1. tls.so 作用:提供 TLS 支持,用于加密 SIP 通信。示例:loadmodule "tls.so" modparam("tls", "certificate", "/etc/kamailio/tls/serve…

智慧园区管理系统推动企业智能运维与资源优化的全新路径分析

内容概要 在当今快速发展的商业环境中,园区管理的数字化转型显得尤为重要。在这个背景下,快鲸智慧园区管理系统应运而生,成为企业实现高效管理的最佳选择。它通过整合互联网、物联网等先进技术,以智能化的方式解决了传统管理模式…

事务04之死锁,锁底层和隔离机制原理

死锁和事务底层原理 文章目录 死锁和事务底层原理一:MySQL中的死锁现象1:何为死锁1.1:死锁的概念1.2:死锁产生的四个必要条件: 2:MySQL的死锁2.1:死锁的触发2.2:MySQL的死锁如何解决…