首页 > 其他分享 >大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file

大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file

时间:2024-01-03 11:35:09浏览次数:37  
标签:文件 radian file contextcapture 点云 path txt



大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file

  • 前言
  • 步骤
  • 1. 在DJI Terra中导出las格式的点云,然后找到轨迹文件sbet.txt
  • 2. 将所有的sbet.txt转成需要的文件样式
  • 3. 把点云导入contextcapture(iTwin capture)


前言

点云和航片联合进行倾斜模型建模是笔者的探索方向。

本次实验,笔者使用的软硬件设备如下:

  • 硬件:大疆M300 RTL+Zenmuse L1
  • 软件:DJI Terra、iTwin capture
    在使用L1执行航测任务时,必须开启RTK模式

步骤

1. 在DJI Terra中导出las格式的点云,然后找到轨迹文件sbet.txt

大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_无人机


我们只需要前四列数据,时间、纬度、经度、高程

大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_无人机_02

2. 将所有的sbet.txt转成需要的文件样式

在sbet.txt中,前四列原始数据为:SOW(second of week)格式的时、弧度的纬度和经度、高程(L1内部的RTK高)

需要转成:GPStime、度格式的经纬度、高程(无需转换)

转换代码(python):

'''
	author: weiguo xie
	email: xiewg@jxnu.edu.cn
	2023-12-28 
'''
import glob
import math

# 定义存储文件夹路径
folder_path = 'path/to/folder'  # 定义存储文件夹路径
# file_paths = ['path/to/file1.txt', 'path/to/file2.txt', 'path/to/file3.txt'] # 也可以读取单独的文件
output_file_path = 'output.txt'  # 定义输出文件路径

# 获取文件夹下所有的txt文件路径
file_paths = glob.glob(folder_path + '/*.txt')

# 定义转换函数
def radian_to_degree(radian):
    return radian * (180 / math.pi)

# 打开输出文件进行写入
with open(output_file_path, 'w') as output_file:
    # 遍历每个文件路径
    for file_path in file_paths:
        # 打开文件进行读取
        with open(file_path, 'r') as file:
            # 跳过第一行和第二行
            next(file)  # 跳过第一行
            next(file)  # 跳过第二行

            # 逐行读取剩余的数据
            for line in file:
                # 分割行数据为列数据
                data = line.split()

                # 获取第一列的GPStime值
                gpstime = float(data[0])

                # 进行计算
                calculated_gpstime = gpstime + 604800 * 2294

                # 获取第二列和第三列的弧度数据
                latitude_radian = float(data[1])
                longitude_radian = float(data[2])
                

                # 进行转换
                latitude_degree = radian_to_degree(latitude_radian)
                longitude_degree = radian_to_degree(longitude_radian)

                # 获取第四列的数据
                height = float(data[3])

                 # 将计算和转换结果写入输出文件,使用制表符作为分隔符
                output_file.write(f"{calculated_gpstime}\t{latitude_degree}\t{longitude_degree}\t{height}\n")

转换结果:

大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_L1_03

3. 把点云导入contextcapture(iTwin capture)

在Block中,Point Clouds标签下,选择import mobile scans,因为无人机是移动的,所以必须选mobile

大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_航测_04

  • 添加点云和轨迹文件trajectories
  • 大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_航测_05

  • 选择坐标
  • 大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_git_06

  • 设置分隔符
  • 大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_git_07

  • 设置数据列属性,然后import即可
  • 大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_无人机_08

  • 查看导入结果
    在3D view中,黄色是轨迹,蓝色点是航片位置(我事先添加了航片,这个不添加有可以),下方是刚刚添加的点云,不是基于航片生产的点云。
  • 大疆DJI Zenmuse L1点云导入contextcapture(iTwin capture)—轨迹文件Sbet转成符合contextcapture要求的trajectories file_git_09


标签:文件,radian,file,contextcapture,点云,path,txt
From: https://blog.51cto.com/u_15813863/9080791

相关文章

  • 如何做好chatFile?如何做RGA?
    chatFilechatFile相关问题。这里有一篇综述论文,讲的很清楚!推荐研读https://simg.baai.ac.cn/paperfile/25a43194-c74c-4cd3-b60f-0a1f27f8b8af.pdf简单处理流程用户输入问题 ——> 把问题做BM25召回+把问题embedding然后做语义召回 ——> 召回结果筛选,大于某个阈值,则用于构建p......
  • windows下logstash从文件中读数据写入es报错 Error: No such file or directory - :/d
    [2023-12-22T17:26:50,327][ERROR][logstash.javapipeline][main][897a6c7006446c97daa2ee44df7541701882ceece289ce428fcfac8aa982a0c5]Apluginhadanunrecoverableerror.Willrestartthisplugin.Pipeline_id:mainPlugin:<LogStash::Inputs::Filestar......
  • Java之File类的详细解析及小练习
     2.File类2.1概述java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。2.2构造方法publicFile(Stringpathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。publicFile(Stringparent,Stringchild):从父路径名......
  • Java之File类的详细解析及小练习
     2.File类2.1概述java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。2.2构造方法publicFile(Stringpathname):通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。publicFile(Stringparent,Stringchild):从父路径名......
  • seq_file.txt 翻译
    1.seq_file接口版权所有2003JonathanCorbet<corbet@lwn.net>该文件最初来自LWN.net驱动程序移植系列,网址为:http://lwn.net/Articles/driver-porting/设备驱动程序(或其他内核组件)可以通过多种方式向用户或系统管理员提供信息。一种有用的技术是在debugfs、/proc或其他......
  • Vite + ESBuild error: No loader is configured for ".node" files: node_modules/fs
    Vite+ESBuilderror:Noloaderisconfiguredfor".node"files:node_modules/fsevents/fsevents.nodeAddfseventstoyouroptimizeDepsexcludeinyourvite.config.jsfile:optimizeDeps:{exclude:["fsevents"]},import{defineConfig......
  • 在 PyCharm 中编写 Vue 项目,你可以按照以下步骤进行: 1. **安装 Vue.js 插件**:在 PyCh
    在PyCharm中编写Vue项目,你可以按照以下步骤进行:1.**安装Vue.js插件**:在PyCharm中,选择`File->Settings…->Plugins`,搜索Vue并点击安装,安装后重启PyCharm¹²。2.**设置JavaScript**:支持Vue语法,选择`File->Settings…->Languages&Frameworks->JavaSc......
  • 无涯教程-Java NIO - FileLock(文件锁)
    JavaNIO支持并发和多线程,这使它能够同时处理在多个文件上运行的多个线程,但是在某些情况下,无涯教程要求文件不能被任何线程共享并且不可访问。为了满足这种要求,NIO提供了FileLock的API,该API用于提供对整个文件或部分文件的锁定,以使该文件或其部分不会共享或不可访问。为了提供或......
  • 无涯教程-Java NIO - AsynchronousFileChannel
    无涯教程知道JavaNIO支持并发和多线程,这允许同时处理不同的通道,因此JavaNIO包中负责此操作的API是AsynchronousFileChannel。AsynchronousFileChannel与NIO的FileChannel相似,不同之处在于此通道使文件操作能够异步执行。在异步中,线程将请求传递给操作系统的内核以完成请求,而......
  • Java第二十课_File
    1.FileFile常用函数publicstaticvoidmain(String[]args)throwsIOException{//相对路径:IO流默认目录:当前项目工程开始自己算//绝对路径:带盘符的路径://网络路径:https://img2.baidu.com/it/u=3164322677,862193441&fm=2......