package com.se.nsl.controller; import com.se.nsl.domain.vo.R; import com.se.nsl.service.IBizH5FileParserService; import hdf.hdf5lib.exceptions.HDF5LibraryException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * Bize H5 文件解析器控制器 * * @author xingjinshuang@smartearth.cn * @date 2024/12/06 */ @Api(tags = "05-H5文件解析器控制器") @Slf4j @CrossOrigin(origins = "*", maxAge = 3600) @RestController @RequestMapping("/h5") public class BizH5FileParserController extends BaseController { @Resource private IBizH5FileParserService bizH5FileParserService; /** * HDF5文件 说明 */ @ApiOperation("HDF5文件 说明") @GetMapping("/hdf5-illustrate") public R hdf5FileIllustrate() throws HDF5LibraryException { String content = "HDF5(Hierarchical Data Format version 5)是一种用于存储和组织大量数据的文件格式,它支持高效地存储和处理大规模科学数据的能力。HDF5 是一种灵活的数据模型,可以存储多种数据类型,包括数值数据、图像、表格等等,并且可以按照层级结构组织数据。\n" + "HDF5 文件(通常使用 .h5 扩展名)是一种二进制文件格式,它具有以下特点:\n" + "1.灵活性: HDF5 文件格式非常灵活,可以存储各种不同类型和大小的数据,从简单的数值数组到复杂的多维数据集合。\n" + "2.层级结构: HDF5 文件是以层级结构组织的,可以在文件中创建多个数据集(Datasets)和组(Groups),允许用户根据需求组织和管理数据。\n" + "3.多种数据类型: HDF5 支持多种数据类型,包括标量、数组、字符串、表格等等,并且可以使用不同的压缩技术对数据进行压缩。\n" + "4.高效性能: HDF5 文件格式被设计用于高效存储和处理大型数据集,具有高效的数据访问和读写性能。\n" + "5.跨平台兼容性: HDF5 文件可以在不同的操作系统上使用,具有良好的跨平台兼容性。\n" + "HDF5 文件通常由科学计算、数据分析、机器学习等领域的应用广泛使用,用于存储大规模数据集,例如图像数据、传感器数据、模拟数据等。通过使用各种编程语言的 HDF5 库和工具,可以方便地读写和处理 HDF5 格式的文件。"; log.info("HDF5文件 说明:{}", content); return success(content); } /** * 打开HDF5文件 * * @param filePath 文件路径 * @return 文件ID */ @ApiOperation("打开HDF5文件") @PostMapping("/open-hdf5-file") public R openHdf5File(String filePath) { return success(bizH5FileParserService.openH5File(filePath)); } /** * 解析HD5文件 */ @ApiOperation("解析HD5文件") @PostMapping("/parse-hdf5-file") public R parseHdf5File(String filePath) throws HDF5LibraryException { filePath = "/Users/zhangshan/Desktop/hdf5/data.h5"; log.info("解析HD5文件:{}", filePath); return success(bizH5FileParserService.parseH5File(filePath)); } }