Kaynağa Gözat

model 切片改多线程

wuweihao 5 yıl önce
ebeveyn
işleme
d4172927cc

+ 1 - 1
src/main/java/com/fd/constant/Command.java

@@ -12,7 +12,7 @@ public class Command {
      * 输入目录:/root/gis/cesium/input/@fileName fileName:是目录名
      * 输出目录:/root/gis/cesium/output/@fileName fileName:是目录名
      */
-    public static String MODEL_OSGB = "/opt/3dtiles_v1/target/release/3dtile -f osgb -i /root/gis/cesium/input/@fileName -o /root/gis/cesium/output/@fileName";
+    public static String MODEL_SLICE_OSGB = "/opt/3dtiles_v1/target/release/3dtile -f osgb -i /root/gis/cesium/input/@fileName -o /root/gis/cesium/output/@fileName";
 
     /**
      * 矢量数据 坐标转换(普通转换,2000转wgs84)

+ 47 - 4
src/main/java/com/fd/controller/FdModelController.java

@@ -33,6 +33,9 @@ public class FdModelController {
     @Value("${input.file.path}")
     private String INPUT_FILE_PATH;
 
+    @Value("${output.file.path}")
+    private String OUTPUT_FILE_PATH;
+
     @Autowired
     private FileServer fileServer;
 
@@ -105,15 +108,55 @@ public class FdModelController {
 
     @ApiOperation("倾斜摄影数据切片")
     @GetMapping("command/osgb/{fileId}/")
-    private R cmdOsgb(@PathVariable("fileId") Long fileId) {
-        log.info("run cmdOsgb: {}", fileId);
+    private R cmdModelSlice(@PathVariable("fileId") Long fileId) {
+        log.info("run cmdModelSlice: {}", fileId);
         FileEntity entity = fileServer.findById(fileId);
         // 传入的是目录
-        String cmd = Command.MODEL_OSGB;
+        String cmd = Command.MODEL_SLICE_OSGB;
         cmd = cmd.replace("@fileName",entity.getFileName());
         log.info("cmd: {}", cmd);
 
-        return cmdServer.exeCmdOsgb(cmd, entity.getFileName());
+        // 命令产生的是文件夹
+        FileEntity fileEntity = new FileEntity();
+        fileEntity.setFileName(entity.getFileName());
+        fileEntity.setFileUrl(OUTPUT_FILE_PATH + entity.getFileName());
+        fileEntity.setCreateTime(new Date());
+        fileEntity.setUpdateTime(new Date());
+
+        fileEntity = fileServer.save(fileEntity);
+
+
+        // 多线程运行切片
+        new Thread(new ModelSliceThread(cmd, fileEntity)).start();
+
+        return new R(200, fileEntity) ;
+
+    }
+
+
+    public class ModelSliceThread implements Runnable{
+
+        private String cmd;
+
+        private FileEntity entity;
+
+        private ModelSliceThread(String cmd, FileEntity entity){
+            this.cmd = cmd;
+            this.entity = entity;
+        }
+
+        @Override
+        public void run() {
+            log.warn("run ModelSliceThread");
+            Integer integer = cmdServer.exeCmdModelSlice(cmd);
+            if (integer != 0) {
+                log.info("error command exeCmdModelSlice");
+                // 如果命令运行失败,删除刚才创建的实体类
+                fileServer.deleteById(entity.getId());
+                return;
+            }
+            log.warn("end RasterSliceThread");
+        }
     }
 
 

+ 0 - 90
src/main/java/com/fd/controller/RasterController.java

@@ -101,72 +101,6 @@ public class RasterController {
     }
 
 
-
-//    @ApiOperation("栅格数据普通坐标转换")
-//    @GetMapping("command/transform/gdalwarp/{fileId}/")
-//    private R cmdTansformGdalwarp(@PathVariable("fileId") Long fileId) {
-//        log.info("run cmdTansformGdalwarp: {}", fileId);
-//        FileEntity entity = fileServer.findById(fileId);
-//
-//        String fileName = StringUtils.substringBefore(entity.getFileName(), ".");
-//
-//        String cmd = Command.RASTER_TRANSFORM_GDALWARP;
-//        cmd = cmd.replace("@fileName",fileName);
-//        log.info("cmd: {}", cmd);
-//
-//        Integer integer = cmdServer.exeCmdInt(cmd);
-//        if (integer != 0) {
-//            log.info("error command transform");
-//            return new R(50005, MsgCode.E50005);
-//        }
-//
-//        FileEntity fileEntity = new FileEntity();
-//        fileEntity.setFileName(entity.getFileName());
-//        // /root/gis/cesium/input/transform/@fileName.tif
-//        fileEntity.setFileUrl(INPUT_FILE_PATH + "transform" + File.separator + entity.getFileName());
-//        fileEntity.setCreateTime(new Date());
-//        fileEntity.setUpdateTime(new Date());
-//        fileEntity.setType(TypeCode.FILE_TYPE_RASTER_TIF);
-//        fileEntity = fileServer.save(fileEntity);
-//
-//        return new R(200, fileEntity) ;
-//    }
-
-
-//    @ApiOperation("栅格数据严格坐标转换")
-//    @GetMapping("command/transform/strict/gdalwarp/{fileId}/")
-//    private R cmdTansformGdalwarpStrict(@PathVariable("fileId") Long fileId) {
-//        log.info("run cmdTansformGdalwarpStrict: {}", fileId);
-//        FileEntity entity = fileServer.findById(fileId);
-//
-//        String fileName = StringUtils.substringBefore(entity.getFileName(), ".");
-//
-//        String step_1 = Command.RASTER_TRANSFORM_GDALWARP_STRICT_1;
-//        String step_2 = Command.RASTER_TRANSFORM_GDALWARP_STRICT_2;
-//        step_1 = step_1.replace("@fileName",fileName);
-//        step_2 = step_2.replace("@fileName",fileName);
-//        log.info("cmd1: {}", step_1);
-//        log.info("cmd2: {}", step_2);
-//
-//        Integer integer = cmdServer.exeCmd(step_1, step_2);
-//
-//        if (integer != 0) {
-//            log.info("error command transform");
-//            return new R(50005, MsgCode.E50005);
-//        }
-//
-//        FileEntity fileEntity = new FileEntity();
-//        fileEntity.setFileName(entity.getFileName());
-//        // /root/gis/cesium/input/transform_strict/@fileName.tif
-//        fileEntity.setFileUrl(INPUT_FILE_PATH + "transform_strict" + File.separator + entity.getFileName());
-//        fileEntity.setCreateTime(new Date());
-//        fileEntity.setUpdateTime(new Date());
-//        fileEntity.setType(TypeCode.FILE_TYPE_RASTER_TIF);
-//        fileEntity = fileServer.save(fileEntity);
-//
-//        return new R(200, fileEntity) ;
-//    }
-
     @ApiOperation("栅格数据切片命令")
     @GetMapping("command/osgeo/{fileId}/")
     private R cmdOsgeo(@PathVariable("fileId") Long fileId) {
@@ -181,11 +115,6 @@ public class RasterController {
         cmd = cmd.replace("@fileName",fileName);
         log.info("cmd: {}", cmd);
 
-//        Integer integer = cmdServer.exeCmdRasterSlice(cmd);
-//        if (integer != 0) {
-//            log.info("error command exeCmdRasterSlice");
-//            return new R(50005, MsgCode.E50005);
-//        }
 
         FileEntity fileEntity = new FileEntity();
         fileEntity.setFileName(fileName);
@@ -276,25 +205,6 @@ public class RasterController {
     }
 
 
-    //        String a = "112222.zip";
-//        String b = "11/2222/aa";
-//        String c = "11/2222/aa.zip";
-//        String e = "/root/gis/cesium/input/test/clip.shp";
-//        System.out.println(StringUtils.stripStart(a, "."));
-//        System.out.println("After: " + StringUtils.substringAfter(a, "."));
-//        System.out.println("before: " + StringUtils.substringBefore(a, "."));
-//        System.out.println("c: " + StringUtils.substringBefore(c, "/"));
-//        System.out.println("c: " + StringUtils.substringBeforeLast(c, "/"));
-//        System.out.println(StringUtils.substringBefore(b, "/"));
-//        System.out.println(StringUtils.substringBeforeLast(b, "/"));
-//        System.out.println(StringUtils.substring(b, b.lastIndexOf("/") + 1, b.length()));
-//        System.out.println("e: " + StringUtils.substringBeforeLast(e, "/"));
-//        System.out.println("e1: " + StringUtils.substring(e, e.indexOf("input/") + 6, e.lastIndexOf("/")));
-//        System.out.println("===========================================");
-//        System.out.println();
-//
-//        System.out.println("a: " + StringUtils.substringAfterLast(a, "."));
-
     public static void main(String[] args) {
         String a = "0...10...20...30...40...50...60...70...80...90...100.....10..11";
         String b = "...10";

+ 1 - 1
src/main/java/com/fd/server/CmdServer.java

@@ -15,7 +15,7 @@ public interface CmdServer {
 
     R exeCmd(String commandStr, Long id);
 
-    R exeCmdOsgb(String cmd, String fileName);
+    Integer exeCmdModelSlice(String cmd);
 
 //    R exeCmdUnzip(String cmd);
 

+ 2 - 20
src/main/java/com/fd/server/impl/CmdServerImpl.java

@@ -113,26 +113,8 @@ public class CmdServerImpl implements CmdServer {
 
 
     @Override
-    public R exeCmdOsgb(String cmd, String fileName) {
-        Integer isCmd = exeCmdSingle(cmd);
-
-
-        if (isCmd == 0) {
-
-            // 命令产生的是文件夹
-            FileEntity entity = new FileEntity();
-            entity.setFileName(fileName);
-            entity.setFileUrl(OUTPUT_FILE_PATH + fileName);
-            entity.setCreateTime(new Date());
-            entity.setUpdateTime(new Date());
-
-            entity = fileRepository.save(entity);
-
-            return new R(200, entity);
-        } else {
-            return new R(200, MsgCode.E50005);
-        }
-
+    public Integer exeCmdModelSlice(String cmd) {
+        return exeCmdSingle(cmd);
 
     }