Skip to main content

用于读取、分析和处理剖析激光雷达观测的 Python 工具箱。

项目描述

昙花一现

托布洛

用于分析激光雷达观测数据和相关气象数据的工具箱

恢复

工具箱,用于从多普勒光束摆动模式 (DBS) 下的激光雷达剖面剖面观测中检索 3D 风矢量。在检索模块的当前状态下,需要准备径向(LOS)速度观测的输入。对于所有功能,需要仔细准备 LOS 速度输入,以使 LOS 速度输入与所使用的激光雷达系统的坐标和检索坐标系的坐标一致。检索坐标系中的每一个波束都对应一个特定的方位角和天顶角:

方位角,a,单位 = 度

指向以下方向的激光雷达光束

(x,y) = ( 1, 0) : a = 180

(x,y) = ( 0, 1) : a = 270

(x,y) = (-1, 0) : a = 0

(x,y) = ( 0,-1) : a = 90

天顶,z,单位 = 度

天顶角对应于 DBS 的锥角(例如 z=28 度)或向上指向(z=0)

使用检索模块的示例:模拟安装在移动平台上的激光雷达的风速系列

导入必要的 python 模块

from oblopy.retrieval import *

import numpy as np

import pandas as pd

制作样本速度向量

定义一系列时间戳

time = np.arange(0,40*np.pi, 0.1)

定义 3 个风速分量(人工)

u = 2*(np.cos(time*2.5)+np.cos(time*1.5)+np.sin(time/2.5)+np.cos(time/3.5))+np.random.rand(len(time))*2

v = -2*(np.cos(time*3.5)+np.sin(time*1.5)+np.sin(time/3.5)-np.cos(time/4.5))-np.random.rand(len(time))*2

w = np.cos((time-np.pi)/2*3.5)-np.random.randn(len(time))*0.5

定义一系列滚动俯仰和偏航角

注意:如果您不想在检索中包括运动角度和相应的校正,请将滚动、俯仰和偏航系列设置为零

定义运动角度(人工)

roll = np.ones(len(time))

pitch = -np.ones(len(time)) + 10

yaw = np.zeros(len(time)) + 45

获取对应的旋转矩阵

R = get_R(roll, pitch, yaw, time, order = 'zyx')

旋转模拟风速矢量

vec_u_ = multi_dim_matrix_mult(R,vec_u,time)

u_ = vec_u_[0,0,:]

v_ = vec_u_[1,0,:]

w_ = vec_u_[2,0,:]

制作样本径向速度矢量

检索的输入应该是类似的类型。光束数量可自由选择。光束由方位角和天顶坐标分开。梁需要按如下方式组织在 pandas DataFrame 中。列的命名(对应于一个梁的时间序列)是免费的。

定义 DBS 扫描的锥角

theta = np.deg2rad(28)

B1:指向相反的 x 方向 (az=0, ze = 28)

B1 = pd.DataFrame({'B1':u_[0::5]*np.sin(theta)+w_[0::5]*np.cos(theta)}, index = time[0::5])

B2:指向相反的 y 方向(az=90,ze = 28)

B2 = pd.DataFrame({'B2':v_[1::5]*np.sin(theta)+w_[1::5]*np.cos(theta)}, index = time[1::5])

B3:指向 x 方向 (az=180, ze = 28)

B3 = pd.DataFrame({'B3':-u_[2::5]*np.sin(theta)+w_[2::5]*np.cos(theta)}, index = time[2::5])

B4:指向相反的 x 方向 (az=270, ze = 28)

B4 = pd.DataFrame({'B4':-v_[3::5]*np.sin(theta)+w_[3::5]*np.cos(theta)}, index = time[3::5])

B5:垂直指向波束(az=*,ze=0),这里方位角的选择是自由的

B5 = pd.DataFrame({'B5':w_[4::5]}, index = time[4::5])

定义相应的方位角和天顶列表。

注意:需要与使用的梁数量相同的长度

az = [0,90,180,270,0]

ze = [28,28,28,28,0]

创建一个包含所有已定义光束的时间序列的 pandas DataFrame

all_beams = pd.DataFrame(index=time)

all_beams['B1'] = B1.copy()

all_beams['B2'] = B2.copy()

all_beams['B3'] = B3.copy()

all_beams['B4'] = B4.copy()

all_beams['B5'] = B5.copy()

检索样本径向速度矢量

通过船速校正光束。

corr_beams = correct_LOS_vel(all_beams.interpolate(method='pchip'), u_plat, az = az, ze = ze)

检索 3D 速度矢量。

retr_int = DBS_least_squares_retrieval(corr_beams, roll, pitch, yaw, az = az, ze = ze, rot=True, order = 'xyz')

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

oblopy-0.0.5.tar.gz (21.3 kB 查看哈希)

已上传 source