src/main/java/com/se/simu/controller/BizH5FileParserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/se/simu/helper/HDF5ReaderHelper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/se/simu/service/IBizH5FileParserService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/se/simu/service/Impl/BizH5FileParserServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/se/simu/controller/BizH5FileParserController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,71 @@ package com.se.simu.controller; import com.se.simu.domain.vo.R; import com.se.simu.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 = "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<Object> 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<Object> openHdf5File(String filePath) throws HDF5LibraryException { return success(bizH5FileParserService.openH5File(filePath)); } /** * è§£æHD5æä»¶ */ @ApiOperation("è§£æHD5æä»¶") @PostMapping("/parse-hdf5-file") public R<Object> parseHdf5File(String filePath) throws HDF5LibraryException { filePath = "/Users/zhangshan/Desktop/hdf5/data.h5"; log.info("è§£æHD5æä»¶:{}", filePath); return success(bizH5FileParserService.parseH5File(filePath)); } } src/main/java/com/se/simu/helper/HDF5ReaderHelper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.se.simu.helper; public class HDF5ReaderHelper { public static void main(String[] args) { } } src/main/java/com/se/simu/service/IBizH5FileParserService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.se.simu.service; import hdf.hdf5lib.exceptions.HDF5LibraryException; /** * ibiz H5 æä»¶è§£æå¨ * * @author xingjinshuang@smartearth.cn * @date 2024/12/06 */ public interface IBizH5FileParserService { /** * æå¼HDF5æä»¶ * * @param filePath æä»¶è·¯å¾ * @return æä»¶ID */ long openH5File(String filePath) throws HDF5LibraryException; /** * 读åæå®æ°æ®éçæ°æ® * * @param fileId æä»¶ID * @param datasetName æ°æ®éåç§° * @return æ°æ®éçå¼ */ Object readDataset(long fileId, String datasetName); /** * å ³éHDF5æä»¶ * * @param fileId æä»¶ID */ void closeH5File(long fileId) throws HDF5LibraryException; /** * è§£æ H5 æä»¶ * * @param filePath * @return {@link Object} */ Object parseH5File(String filePath); } src/main/java/com/se/simu/service/Impl/BizH5FileParserServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,87 @@ package com.se.simu.service.Impl; import com.se.simu.service.IBizH5FileParserService; import hdf.hdf5lib.H5; import hdf.hdf5lib.HDF5Constants; import hdf.hdf5lib.exceptions.HDF5Exception; import hdf.hdf5lib.exceptions.HDF5LibraryException; import org.springframework.stereotype.Service; @Service public class BizH5FileParserServiceImpl implements IBizH5FileParserService { @Override public long openH5File(String filePath) throws HDF5LibraryException { long fileId = H5.H5Fopen(filePath, HDF5Constants.H5F_ACC_RDONLY, HDF5Constants.H5P_DEFAULT); return fileId; } @Override public Object readDataset(long fileId, String datasetName) { // long datasetId = H5.H5Dopen((int) fileId, datasetName, HDF5Constants.H5P_DEFAULT); // long datatypeId = H5.H5Dget_type((int) datasetId); int[] data = new int[1]; // åè®¾æ°æ®é为æ´åæ°ç» // H5.H5Dread((int) datasetId, datatypeId, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data); // // H5.H5Dclose(datasetId); // H5.H5Tclose(datatypeId); return data[0]; } @Override public void closeH5File(long fileId) throws HDF5LibraryException { H5.H5Fclose((int) fileId); } @Override public Object parseH5File(String filePath) { String fileName = "D:\\xingjs\\A_daily\\PycharmProjects\\pythonProject\\dev\\example.h5"; String datasetName = "dataset2"; try { // æå¼.h5æä»¶ int fileId = H5.H5Fopen(fileName, HDF5Constants.H5F_ACC_RDONLY, HDF5Constants.H5P_DEFAULT); // æå¼æ°æ®é int datasetId = H5.H5Dopen(fileId, datasetName, HDF5Constants.H5P_DEFAULT); // è·åæ°æ®éçæ°æ®ç±»å int datatypeId = H5.H5Dget_type(datasetId); int datatypeSize = H5.H5Tget_size(datatypeId); // è·åæ°æ®éçæ°æ®ç©ºé´ int dataspaceId = H5.H5Dget_space(datasetId); long[] dims = new long[HDF5Constants.H5S_MAX_RANK]; H5.H5Sget_simple_extent_dims(dataspaceId, dims, null); // è¯»åæ°æ®éçæ°æ® byte[] data = new byte[(int) (dims[0] * datatypeSize)]; H5.H5Dread(datasetId, datatypeId, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, data); // å ³éæ°æ®é H5.H5Dclose(datasetId); // å ³éæä»¶ H5.H5Fclose(fileId); // å¤çæ°æ® // ... // æå°æ°æ®ç¤ºä¾ for (int i = 0; i < data.length; i++) { System.out.print(data[i] + " "); } } catch (HDF5Exception e) { e.printStackTrace(); } return null; } }