| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | @Api(tags = "仿真管理") |
| | | @Slf4j |
| | |
| | | String token = gedbService.getToken(); |
| | | GeDb db = gedbService.connectGedb(token, data); |
| | | List<GeLayer> layers = gedbService.getLayers(token, db); |
| | | boolean result = gedbService.queryBboxCount(token, db, layers); |
| | | log.info("result = " + result); |
| | | return success(result); |
| | | |
| | | return success(gedbService.queryBboxCount(token, db, layers)); |
| | | // return success(gedbService.queryBboxCount(token, db, layers)); |
| | | } catch (Exception ex) { |
| | | return fail(ex, false); |
| | | } |
| | |
| | | String floodFile = vo.getFloodFile(); |
| | | log.info("范围文件地址:{}", floodFile); |
| | | try { |
| | | // 判断地址不为空 |
| | | if (StringUtils.isEmpty(floodFile)) { |
| | | return fail("范围文件地址不能为空", false); |
| | | } else { |
| | | // 获取文件的后缀名 |
| | | String fileName = floodFile.substring(floodFile.lastIndexOf(".")); |
| | | // 判断后缀名是否为.shp |
| | | if (!fileName.equalsIgnoreCase(".shp")) { |
| | | return fail("范围文件格式不正确", false); |
| | | // 判断是否绘制区域 |
| | | if (!StringUtils.isEmpty(vo.getMaxx().toString()) && !Objects.isNull(vo.getMaxx())) { |
| | | rangeVerify(vo.getMinx(), vo.getMaxx(), vo.getMiny(), vo.getMaxy()); |
| | | log.info("绘制区域范围验证通过!"); |
| | | } else |
| | | // 判断地址不为空 |
| | | if (StringUtils.isEmpty(floodFile)) { |
| | | return fail("范围文件地址不能为空", false); |
| | | } else { |
| | | // 1 读取shp文件,获取范围值 |
| | | JSONObject jsonObject = ShpToolUtils.readShp(floodFile); |
| | | // 2 获取jsonObject中的范围值 |
| | | vo.setMinx(jsonObject.getDouble("minX")); |
| | | vo.setMaxx(jsonObject.getDouble("maxX")); |
| | | vo.setMiny(jsonObject.getDouble("minY")); |
| | | vo.setMaxy(jsonObject.getDouble("maxY")); |
| | | // 获取文件的后缀名 |
| | | String fileName = floodFile.substring(floodFile.lastIndexOf(".")); |
| | | // 判断后缀名是否为.shp |
| | | if (!fileName.equalsIgnoreCase(".shp")) { |
| | | return fail("范围文件格式不正确", false); |
| | | } else { |
| | | // 1 读取shp文件,获取范围值 |
| | | JSONObject jsonObject = ShpToolUtils.readShp(floodFile); |
| | | // 2 获取jsonObject中的范围值 |
| | | Double minX = jsonObject.getDouble("minY"); |
| | | Double maxX = jsonObject.getDouble("maxY"); |
| | | Double minY = jsonObject.getDouble("minX"); |
| | | Double maxY = jsonObject.getDouble("maxX"); |
| | | // 3 判断范围值是否为空 |
| | | // vo.setMinx(jsonObject.getDouble("minX")); |
| | | // vo.setMaxx(jsonObject.getDouble("maxX")); |
| | | // vo.setMiny(jsonObject.getDouble("minY")); |
| | | // vo.setMaxy(jsonObject.getDouble("maxY")); |
| | | vo.setMinx(jsonObject.getDouble("minY")); |
| | | vo.setMaxx(jsonObject.getDouble("maxY")); |
| | | vo.setMiny(jsonObject.getDouble("minX")); |
| | | vo.setMaxy(jsonObject.getDouble("maxX")); |
| | | rangeVerify(minX, maxX, minY, maxY); |
| | | } |
| | | } |
| | | } |
| | | // todo: 解析范围文件 根据不同的的格式文件进行不同的解析,获取需要计算的范围值 |
| | | // 上传格式:.shp/.tiff/.img/.geojson |
| | | // 重新给vo赋值 |
| | |
| | | // 1 读取CSV 文件 |
| | | CsvToSQLiteUtils.readCsvSaveLocal(stationRainFile, tableName); |
| | | // 获取仿真时间 duration |
| | | |
| | | Integer duration = CsvToSQLiteUtils.getDuration(tableName); |
| | | log.info("仿真时间 duration = {}", duration); |
| | | vo.setDuration(duration); |
| | | |
| | | // 获取降雨总量 total |
| | | |
| | | Double total = CsvToSQLiteUtils.getTotal(tableName); |
| | | log.info("降雨总量 total = {}", total); |
| | | vo.setTotal(total); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("解析站点雨量CSV文件失败"); |
| | | } |
| | | // TODO: 2024/12/24 根据这些文件的地址,获取文件内容,创建仿真视图 |
| | | try { |
| | | if (null == vo.getTotal() || vo.getTotal() < 1 || vo.getTotal() > 1000) { |
| | | return fail("降雨量不能为空,且取值在1~1000之间"); |
| | | } |
| | | if (null == vo.getDuration() || vo.getDuration() < 1 || vo.getDuration() > 10080) { |
| | | return fail("仿真时长不能为空,且取值在1~10080之间"); |
| | | } |