wuww
2025-05-04 d8a1ab25881275da008b2801119f36b51554f427
修改初始化方案参数
已添加1个文件
已修改8个文件
123 ■■■■■ 文件已修改
data/init.sql 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/config/PropertiesConfig.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/controller/SimuController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/controller/TestController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/domain/po/SimuData.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/domain/vo/ConfigVo.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/se/nsl/service/ResolveService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-dev.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mybatis.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
data/init.sql
@@ -45,8 +45,8 @@
-- insert into nsl.simu (name, service_name, type, area_type, area_name, status, geom) values ('预测模拟-0416', '20250416100000', 1, 1, '大兴区', 0, ST_GeomFromText('MULTIPOLYGON(((116.666748 39.639859,116.659403 39.626287,116.665956 39.654698,116.666748 39.639859)))'));
select id, name, service_name, type, area_type, area_name, status, result, create_time, create_user, update_time, update_user, bak, data, st_astext(geom) geom from nsl.simu order by id desc;
-- update nsl.simu set status = 0, area_name = '房山区' where id = 24;
select id,name,service_name,type,area_type,area_name,status,result,create_time,update_time,bak,data,st_astext(geom) from nsl.simu where id > 0 order by id desc;
-- update nsl.simu set status = 0, area_name = '房山区', data = '{"startTime":"2025-05-01 11:10:54","type":3,"total":50,"duration":6,"intensity":70,"history":"XXå¹´50mm降雨"}' where id = 24;
---------------------------------------------- 2.推演区域
-- drop table if exists nsl.region;
create table nsl.region (
@@ -85,6 +85,21 @@
comment on column nsl.udometer.geom is '空间位置';
select * from nsl.udometer;
----------------------------------------------
---------------------------------------------- å°† MULTIPOLYGON è½¬æ¢ä¸º POLYGON
select st_astext(ST_GeometryN(geom, generate_series(1, ST_NumGeometries(geom)))) as geom from nsl.region limit 1;
src/main/java/com/se/nsl/config/PropertiesConfig.java
@@ -62,6 +62,8 @@
    private String zarr2tifBat;
    private Integer saveFrames;
    private List<Integer> sizes;
    private String terrainFile;
@@ -262,6 +264,14 @@
        this.zarr2tifBat = zarr2tifBat;
    }
    public Integer getSaveFrames() {
        return saveFrames;
    }
    public void setSaveFrames(Integer saveFrames) {
        this.saveFrames = saveFrames;
    }
    public boolean isCopyTif() {
        return copyTif;
    }
src/main/java/com/se/nsl/controller/SimuController.java
@@ -108,6 +108,7 @@
            if (null == data) return fail("方案数据格式(JSON)不正确");
            if (simu.getStatus() != 0) return fail("方案正在运行或已完成");
            if (StringUtils.isEmpty(simu.getGeom())) return fail("方案的图形为空");
            int rows = resolveService.start(simu);
src/main/java/com/se/nsl/controller/TestController.java
@@ -175,7 +175,7 @@
    @ApiOperation(value = "04.testPngList <")
    @GetMapping("/testPngList")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "D:\\other\\simu\\out\\fs24cubic"),
            @ApiImplicitParam(name = "path", value = "路径", dataType = "String", paramType = "query", example = "fs24cubic"),
            @ApiImplicitParam(name = "size", value = "尺寸", dataType = "Integer", paramType = "query", example = "1024")
    })
    public R<Object> testPngList(String path, Integer size) {
src/main/java/com/se/nsl/domain/po/SimuData.java
@@ -103,6 +103,13 @@
        return GdalHelper.createSpatialReference(this.getEpsg());
    }
    public void setEnvelope(double[] envelope) {
        this.minx = envelope[0];
        this.maxx = envelope[1];
        this.miny = envelope[2];
        this.maxy = envelope[3];
    }
    public String getInPath() {
        return inPath;
    }
src/main/java/com/se/nsl/domain/vo/ConfigVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.se.nsl.domain.vo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@SuppressWarnings("ALL")
public class ConfigVo {
    private List<Object> terrain;
    private List<Object> landuse;
    private List<Object> station;
    private Integer kSt;
    private String raingage;
    private String infiltration;
    private Integer duration;
    private Boolean save_state;
    private List<String> save_variables;
    private Integer save_interval;
    private Integer save_frames;
    private Integer save_start;
    private Double dt;
    private Boolean variable_dt;
    public ConfigVo() {
        terrain = new ArrayList<Object>(Arrays.asList("Data/Hillzone.tif", 1));
        landuse = new ArrayList<Object>(Arrays.asList("Data/landuse.tif", 1));
        station = new ArrayList<Object>(Arrays.asList("Data/station.tif", 1));
        kSt = 40;
        raingage = "Data/beijing.dat";
        infiltration = "Data/landuse_to_infiltration.dat";
        duration = 3600 * 24;
        save_state = true;
        save_variables = new ArrayList<>(Arrays.asList("depth"));
        save_interval = 60;
        save_frames = 60;
        save_start = 0;
        dt = 0.1;
        variable_dt = true;
    }
    public ConfigVo(int hours, int frames) {
        this();
        duration = 3600 * hours;
        save_frames = frames;
        save_interval = duration / frames;
    }
}
src/main/java/com/se/nsl/service/ResolveService.java
@@ -10,6 +10,8 @@
import com.se.nsl.helper.WebHelper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.gdal.ogr.Geometry;
import org.gdal.ogr.ogr;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -32,11 +34,21 @@
        Date now = new Date();
        String date = StringHelper.YMDHMS2_FORMAT.format(now);
        // å°†WKT转换为Geometry对象
        Geometry geom = Geometry.CreateFromWkt(simu.getGeom());
        if (geom.GetGeometryType() == ogr.wkbMultiPolygon) {
            geom = geom.GetGeometryRef(0);
        }
        double[] envelope = new double[4];
        geom.GetEnvelope(envelope);
        SimuData data = JSON.parseObject(simu.getData(), SimuData.class);
        data.setInPath(date);
        data.setOutPath(date);
        data.setEpsg(4548);
        data.setEnvelope(envelope);
        simu.setData(JSON.toJSONString(data));
        simu.setServiceName(date);
        simu.setStatus(1); // 0-创建仿真,1-预处理,2-分析中,10-完成,20-出错
        simu.setUpdateTime(new Timestamp(now.getTime()));
@@ -65,7 +77,7 @@
        try {
            DataPo data = JSONUtil.toBean(simu.getData(), DataPo.class);
            //update(simu, 2, null);
            update(simu, 1, null);
            //gedbService.copeVectors(token, data, db);
            //update(simu, 3, null);
@@ -88,4 +100,8 @@
        simuService.updateById(simu);
    }
    private void initArgs(){
    }
}
src/main/resources/application-dev.yml
@@ -143,6 +143,7 @@
  sww2tifBat: D:\other\simu\uwsolver\sww2tif.bat
  uwSolverBat: D:\other\simu\uwsolver\CudaUWSolver.Demo.NoVis.20250430\start.bat
  zarr2tifBat: D:\other\simu\uwsolver\zarr2tif 1.0\CudaUWSolver.Demo.NoVis.20250430\start.bat
  saveFrames: 10
  #sizes: 64,128,256,512,1024,2048,4096
  sizes: 1024
  # è¾“出文件
src/main/resources/mybatis.xml
@@ -29,7 +29,7 @@
        <!--指定当结果集中值为 null æ—¶ï¼Œæ˜¯å¦è°ƒç”¨æ˜ å°„对象的 setter(map å¯¹è±¡æ—¶ä¸º put)方法-->
        <setting name="callSettersOnNulls" value="true"/>
        <!--指定 MyBatis æ‰€ç”¨æ—¥å¿—的具体实现:LOG4J/LOG4J2/SLF4J/STDOUT_LOGGING/NO_LOGGING-->
        <setting name="logImpl" value="NO_LOGGING" />
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    <typeAliases>
        <package name="com.se.nsl.domain"/>