Skip to content

sorryhorizon/readervtk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VTK风场垂直层可视化脚本

功能简介

该脚本用于读取VTK文件中的风场数据,从50米开始每5米一层,一直到150米,生成每个高度层的风场可视化图片。

主要功能

  1. VTK文件读取:读取VTK文件中的风场数据(U和V分量)
  2. 高度层提取:从50米到150米,每5米一层提取风场数据
  3. 3D可视化:生成每个高度层的风场可视化图片
  4. STL模型叠加:支持叠加STL模型,增强可视化效果
  5. 测试模式:提供测试模式,默认使用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模型叠加(白色建筑)
  • 标题和风速颜色条

核心功能模块

1. VTK文件读取

def read_vtk_file(input_file):
    """读取VTK文件"""
    mesh = pv.read(input_file)
    return mesh

2. 风场数据提取

def get_wind_data(mesh):
    """获取风场数据"""
    wind_data = mesh.point_data['data']
    u = wind_data[:, 0]  # U分量
    v = wind_data[:, 1]  # V分量
    return u, v

3. 高度层数据提取

def extract_level_data(mesh, u, v, target_height):
    """提取指定高度层的数据"""
    # 找到最接近目标高度的点
    # 提取该高度层的数据
    return level_x, level_y, level_u, level_v

4. 3D风场可视化

def 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文件测试

vtk-wind-reader example/RESULT/uvwrho-huangpu_20251010120000.vtk test_real_data

开发指南

安装开发依赖

pip install -e .[dev]

代码风格检查

black src/
isort src/
flake8 src/

运行测试

pytest tests/

作者

sorryhorizon 1219699501@qq.com

更新日志

v0.1.1 (2026-01-08)

  • 改进:将所有测试文件路径从绝对路径改为相对路径
  • 改进:更新文档中的所有路径示例,使用相对路径
  • 改进:增强脚本的跨环境兼容性,通过动态路径计算实现

v0.1.0 (2026-01-06)

  • 初始版本
  • 实现VTK风场数据读取
  • 实现高度层提取和可视化
  • 支持STL模型叠加
  • 提供测试模式

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages