该脚本用于读取VTK文件中的风场数据,从50米开始每5米一层,一直到150米,生成每个高度层的风场可视化图片。
- VTK文件读取:读取VTK文件中的风场数据(U和V分量)
- 高度层提取:从50米到150米,每5米一层提取风场数据
- 3D可视化:生成每个高度层的风场可视化图片
- STL模型叠加:支持叠加STL模型,增强可视化效果
- 测试模式:提供测试模式,默认使用example/RESULT目录下的真实VTK文件和example/proj_temp目录下的STL地形文件生成风场图
cd reader
pip install -e .pip install numpy pyvista matplotlib scipy# 使用真实VTK文件
vtk-wind-reader input.vtk [output_dir]
# 或使用Python模块方式
python -m vtk-wind-reader input.vtk [output_dir]
# 使用模拟数据进行测试
vtk-wind-reader --test [output_dir]# 使用测试模式(默认加载example/RESULT目录下的真实VTK文件和example/proj_temp目录下的STL地形文件)
vtk-wind-reader --test test_output
# 读取VTK文件并生成风场图
vtk-wind-reader example/RESULT/uvwrho-huangpu_20251010120000.vtk output_images
# 自定义箭头密度和分辨率
vtk-wind-reader --test --arrow-density 600 --resolution 1280x720 custom_output| 参数 | 说明 | 默认值 |
|---|---|---|
input_file |
输入VTK文件路径 | - |
output_dir |
输出图片目录 | ./output |
--test |
使用模拟数据进行测试 | False |
--stl-dir |
STL文件所在目录 | VTK文件所在目录的上级目录下的proj_temp文件夹 |
--arrow-density |
风场箭头数量 | 400 |
--resolution |
输出图片分辨率 | 1920x1080 |
reader/
├── src/ # 源代码目录
│ ├── __init__.py # 包初始化文件
│ └── vtk_wind_reader.py # 主脚本
├── example/ # 示例文件目录
│ ├── RESULT/ # 测试VTK文件目录
│ │ └── uvwrho-huangpu_20251010120000.vtk # 测试VTK文件
│ └── proj_temp/ # 测试STL文件目录
│ └── huangpu_DEM.stl # 测试STL地形文件
├── output/ # 输出图片目录
├── pyproject.toml # 项目配置文件
└── README.md # 项目说明文档
脚本会为每个高度层(50米到150米,每5米一层)生成一张风场可视化图片,图片保存在指定的输出目录中。每张图片包含:
- 风速分布(红蓝渐变)
- 风矢量箭头(黑色)
- 可选的STL模型叠加(白色建筑)
- 标题和风速颜色条
def read_vtk_file(input_file):
"""读取VTK文件"""
mesh = pv.read(input_file)
return meshdef get_wind_data(mesh):
"""获取风场数据"""
wind_data = mesh.point_data['data']
u = wind_data[:, 0] # U分量
v = wind_data[:, 1] # V分量
return u, vdef extract_level_data(mesh, u, v, target_height):
"""提取指定高度层的数据"""
# 找到最接近目标高度的点
# 提取该高度层的数据
return level_x, level_y, level_u, level_vdef plot_wind_field(mesh, u, v, height, output_path, stl_meshes):
"""绘制3D风场并叠加STL模型"""
# 创建Plotter对象
# 计算风速大小
# 创建风场切片
# 添加STL模型
# 添加风矢量箭头
# 保存图片- numpy:用于数值计算和数组操作
- pyvista:用于VTK文件读取和3D可视化
- matplotlib:用于颜色映射和图表绘制
- scipy:用于数据插值(可选)
vtk-wind-reader --test test_output该命令会自动加载以下测试文件(脚本会自动使用项目根目录下的相对路径):
- VTK文件:
example/RESULT/uvwrho-huangpu_20251010120000.vtk - STL地形文件:
example/proj_temp/huangpu_DEM.stl
vtk-wind-reader example/RESULT/uvwrho-huangpu_20251010120000.vtk test_real_datapip install -e .[dev]black src/
isort src/
flake8 src/pytest tests/sorryhorizon 1219699501@qq.com
- 改进:将所有测试文件路径从绝对路径改为相对路径
- 改进:更新文档中的所有路径示例,使用相对路径
- 改进:增强脚本的跨环境兼容性,通过动态路径计算实现
- 初始版本
- 实现VTK风场数据读取
- 实现高度层提取和可视化
- 支持STL模型叠加
- 提供测试模式