BabylonJS小部件
项目描述
TileDB-PyBabylonJS
TileDB-PyBabylonJS库是一个地理空间数据可视化Python库,可以交互式地将TileDB数组与Babylon.js在Jupyter笔记本小部件中可视化。
该软件包正在开发中,目前包含点云可视化功能,可选择从 TileDB 数组中流式传输所有数据或定义一个边界框以加载数组的一部分
安装
该项目可在 PyPI 上获取,并可以使用 pip
进行安装
pip install pybabylonjs
如果您正在使用 Jupyter Notebook 5.2 或更早版本,您可能还需要启用 nbextension
jupyter nbextension enable --py [--sys-prefix|--user|--system] pybabylonjs
开发安装
创建并激活一个开发环境
conda create -n pybabylonjs-dev -c conda-forge nodejs yarn python tree scipy 'pyarrow>2' numpy pandas tiledb-py jupyter-packaging jupyterlab
conda activate pybabylonjs-dev
pip install opencv-python
分叉或克隆仓库并转到主目录。安装 TileDB-PyBabylonJS Python 包,该包还将构建 TypeScript 包
pip install -e ".[test, examples]"
在开发扩展时,您需要手动使用笔记本/实验室前端启用扩展。对于 jupyter lab,这是通过以下命令完成的
jupyter labextension install @jupyter-widgets/jupyterlab-manager
yarn run build
jupyter labextension develop . --overwrite
对于经典笔记本,您需要运行
jupyter nbextension install --sys-prefix --symlink --overwrite --py pybabylonjs
jupyter nbextension enable --sys-prefix --py pybabylonjs
请注意,Windows 上不支持 --symlink
标志,因此每次您重建扩展时都必须运行 install
命令。对于某些安装,您可能还需要使用另一个标志而不是 --sys-prefix
。
如何查看您的更改
TypeScript
可视化 TypeScript 代码可在 TileDB-Viz 仓库中找到。在 TileDB-Viz 中进行更改后,使用以下命令构建包
yarn build
然后,要查看 TileDB-PyBabylonJS 中的这些更改,请运行
yarn add file:/path/to/TileDB-Viz/packages/core
yarn build
然后重启笔记本内核。
Python
当您对 Python 代码进行更改时,请重新构建包并重启笔记本内核以查看您的更改。
使用方法
以下可视化示例的 Jupyter 笔记本提供在 示例文件夹 中
注册 TileDB 账户 并通过指定数据切片的边界框来显示来自 TileDB 云稀疏数组的点云可视化
from pybabylonjs import Show as show
bbox = {
'X': [636800, 637200],
'Y': [852800, 853100],
'Z': [406.14, 615.26]
}
lidar_array = "autzen-classified"
show.point_cloud(source="cloud",
uri = "tiledb://TileDB-Inc/autzen_classified_tiledb",
token=token,
bbox = bbox,
point_size = 3,
rgb_max = 65535,
camera_up = 25,
camera_location = 2,
camera_zoom = [2,2,2],
point_type = 'fixed_screen_size',
width=1000,
height=600)
或从一组数组中流式传输所有数据
show.point_cloud(streaming=True,
uri="tiledb://TileDB-Inc/bristol",
token=token,
point_size = 4,
wheel_precision = 0.2,
color_scheme = 'dark',
width = 1200,
height = 800,
rgb_max = 255,
point_budget = 3500000,
camera_location = 8,
camera_zoom = [1, 1, 2],
camera_up = 50,
move_speed = 8,
point_type = 'fixed_world_size')
参数
可以为点云可视化设置以下参数
camera_location
是相对于点云中心的 arcRotateCamera 的位置。1: 南,2: 东南,3: 东,4: 东北,5: 北,6: 北西,7: 西,8: 西南和 9: 从点云中心上方向下看camera_up
是 freeCamera 初始位置的高度camera_zoom
使用[1,1,1]
为默认位置,将相机位置相对于点云中心进行缩放,[2,2,2]
是 X、Y 和 Z 方向上距离中心两倍远的距离color_scheme
是初始背景颜色:dark
(默认),light
或blue
data
是当source = dict
时包含点云数据的字典。此字典需要包含位置X
、Y
和Z
以及每个点的 RGB 颜色Red
、Green
和Blue
height
是显示窗口的高度(以像素为单位)point_size
是点的大小point_type
是交互式点大小类型fixed_screen_size
(默认):每个点在像素大小上是恒定的,无论其与相机的距离如何fixed_world_space
:每个点在世界空间中具有恒定的大小。此值应根据世界空间中点之间的间距相应设置adaptive_world_space
:与下面的示例中的fixed_world_space
相同。但在流式传输点云数据时,点的尺寸取决于每个点局部加载的 LOD。相同 LOD 的所有块中的点密度应相同,并且每个 LOD 的点密度应加倍。
source
是数据源(默认为cloud
,也可以是local
或dict
)。use_sps=True
使用 固态粒子系统 以 3D 块的形式显示点。use_shader=True
添加 EDL 着色。edl_strength
是着色的强度。wheel_precision
控制鼠标滚轮缩放的快慢。width
是显示窗口的宽度(以像素为单位)。
点云导航
有两种不同的相机可用于导航点云:arcRotateCamera 和 freeCamera。使用 c
键在它们之间切换。初始相机始终是 arcRotateCamera。
arcRotateCamera
- 使用鼠标滚轮放大和缩小。
- 按住鼠标左键拖动以旋转。
- 参数
wheel_precision
控制使用鼠标滚轮缩放的快慢。 - 可以使用
camera_location
和camera_zoom
改变相机位置和点云中心的距离。 - 使用
v
在camera_locations
之间旋转。 - 使用
b
在深色和浅色背景之间切换。
freeCamera
- 向前移动:按
W
或up
。 - 向后移动:按
S
或down
。 - 向上移动:按
E
。 - 向下移动:按
Q
。 - 向左移动:按
A
或left
。 - 向右移动:按
D
或right
。 - 按住鼠标左键拖动以旋转。
- 初始相机位置是点云的中心,可以通过参数
camera_up
改变位置的高度。 - 可以通过参数
move_speed
改变相机速度。 - 使用
b
在深色和浅色背景之间切换。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。