1.用Python和OpenGL探索数据可视化(实践篇)- CT扫描体数据可视化
2.Cesium地形切片--CTB(cesium-terrain-builder)填坑指南
3.什么是源码持续集成(CI)/持续部署(CD)?
用Python和OpenGL探索数据可视化(实践篇)- CT扫描体数据可视化
本系列文章介绍了使用Python和OpenGL进行数据可视化开发的实践。首先,源码确保您的源码电脑支持OpenGL 4.5版本,可以通过《准备工作(一)Windows下检测显卡和OpenGL信息》和《准备工作(二)配置Windows下VS Code + Python + OpenGL开发环境》进行检测和配置。源码上一节中,源码我们学习了如何使用Python和OpenGL绘制蛋白质分子的源码记录爱情网站源码网址空间填充模型。本节,源码我们将以医学和工业领域常用的源码CT扫描技术为例,展示如何使用Python和OpenGL对体数据进行可视化。源码
CT,源码即计算机断层扫描,源码通过逐层扫描物体,源码利用X射线对物体内部不同物质成分的源码吸收差异,获取物体的源码三维信息。在医学领域,源码CT扫描已成为诊断疾病、早期筛查肿瘤的重要工具,广泛应用于中枢神经系统、头颈部、江山荣耀源码胸部、心脏和腹部等疾病的诊断。在工业领域,工业CT扫描作为无损检测技术,应用于材料分析、质量控制和产品优化。
CT扫描生成的数据称为体数据。通过体渲染技术,如单程光线投射法,可以展示人体或物体的内部结构。本节使用的数据来自klacansky.com/open-sciv...,包含人体头部右半部分动脉的扫描数据。
接下来,我们将创建一个名为volumetexture3d.py的Python脚本,封装OpenGL的三维纹理对象,用于处理体数据。在脚本中,我们定义了一个VolumeTexture3D类,ssm打印源码用于处理和渲染体数据。
通过修改文件夹下的__init__.py文件,配置相关的类和功能,我们实现了一个名为volume_raycast.vs的顶点着色器和名为volume_raycast.fs的片段着色器,用于渲染体数据。在volume_cube.py中,我们创建了一个立方体类,用于展示渲染结果。在volume_viewer.py中,我们编写了主程序,控制窗口的事件,如鼠标移动、滚动和点击,以实现对动脉扫描数据的交互式浏览。
运行程序后,您可以使用鼠标进行旋转、缩放和移动扫描数据,通过滑动条调整步长和阈值,hey ui源码隐藏或显示世界坐标轴和XZ平面网格。此外,程序允许在任意时刻重置视图,回到初始设置。
通过本系列文章的学习,您可以掌握使用Python和OpenGL进行数据可视化的技能,从基础的窗口、OpenGL和ImGui的使用,到更高级的模型矩阵、照相机控制、纹理处理和事件处理。此外,文章还提供了大量的参考资源和源代码,帮助您深入理解并实践数据可视化。
Cesium地形切片--CTB(cesium-terrain-builder)填坑指南
面临全中国Cesium地形数据制作需求,原计划使用cesiumlab进行操作,但处理数千张DEM数据时,面临性能和数据管理问题,mybatisplus改写源码导致项目效率低下。
随后发现CTB(cesium-terrain-builder)工具,能有效提升处理速度,且不占用个人办公资源,便于数据处理与后期发布。然而,使用过程中遇到编译问题,GDAL环境部署后,CTB的cmake编译不通过,经排查后发现是GDAL版本与CTB需求不符,调整至GDAL-2.4.4后,问题解决。
在验证CTB使用效果时,发现cesium无法直接使用CTB输出的gzip压缩地形文件,为了解决瓦片压缩问题,通过修改CTB源代码,将CTBZFileOutputStream改为CTBFileOutputStream,完成对输出文件格式的调整,使cesium能直接利用输出结果进行数据展示。
对于多数据同时处理问题,采用Python脚本按顺序处理文件夹下数据,并结合GDAL生成虚拟数据集(vrt)的方法,以简化层.json文件的合并过程,提升工作效率。最终,通过此方案,不仅成功解决了技术难题,还有效提升了项目处理效率,实现自动化与标准化流程。
什么是持续集成(CI)/持续部署(CD)?
在软件开发中,持续集成(CI)和持续交付(CD)是两个常用的术语。它们究竟代表了什么含义呢?本文将为您详细解释这些概念以及与之相关的持续测试(CT)和持续部署(CD)。
想象一下工厂的装配线,它以快速、自动化、可重复的方式生产出消费品。在软件开发领域,持续交付(CD)就是以类似的方式,从源代码生成发布版本。而启动这一过程的是持续集成(CI),它确保代码的质量,并将最终产品提供给用户。推动这一切高效运行的,正是运维开发(DevOps)践行者。
“持续”一词在这里指的是一种随时可运行的状态,而非持续不断地运行。在软件开发中,它涵盖了多个核心概念和最佳实践。其中,将源代码转换为可发布产品的多个任务和作业串联而成的软件“管道”,就是持续交付管道。
持续交付管道的工作流程通常包括源代码跟踪、构建、测试、指标采集和版本管理等方面。这些作业是自动化的、高效的,并且可重复的。如果作业成功,工作流管理器将触发管道中的下一个作业;如果作业失败,则会发出警报,以便尽快纠正问题。
在持续交付管道中,快速失败(fail fast)是一种重要的概念。它指的是在管道流程中尽快发现问题并快速通知用户的方式,以便及时修正问题并重新提交代码。
持续集成(CI)是在源代码变更后自动检测、拉取、构建和进行单元测试的过程。其目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。
持续测试(CT)是指在代码通过持续交付管道时运行扩展范围的自动化测试的实践。它包括单元测试、集成测试、系统测试等多种形式,以确保代码质量。
持续交付(CD)通常是指整个流程链,包括持续集成、持续测试和可选的持续部署。其目标是自动化、效率、可靠性、可重复性和质量保障。
持续部署(CD)是指能够自动提供持续交付管道中发布版本给最终用户使用的想法。这可以通过蓝/绿测试/部署、金丝雀测试/部署、功能开关、暗箱发布等多种方法实现。
运维开发(DevOps)是一种关于如何使开发和运维团队更容易合作开发和发布软件的一系列想法和推荐的实践。持续交付管道是DevOps理念的一种实现。
管道即代码(pipeline-as-code)是将管道实现表示为代码,以便它可以与代码一起存储、评审、跟踪和重建的通用术语。
DevOps如何影响生产软件的基础设施?传统的硬件系统需要配套的软件,而DevOps则通过标准化交付、虚拟机和容器等技术,实现了易于重现和可跟踪的环境。