package com.se.simu.service;
|
|
import com.se.simu.domain.*;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* 内涝服务类
|
*
|
* @author WWW
|
* @date 2024-07-16
|
*/
|
@Slf4j
|
@Service
|
public class WaterService {
|
@Value("${sys.ver}")
|
String ver;
|
|
@Value("${sys.path.out}")
|
String outPath;
|
|
/**
|
* 获取元数据信息
|
*/
|
public byte[] getLayerJson(String serviceName) {
|
try {
|
String filePath = outPath + File.separator + serviceName + File.separator + "layer.json";
|
|
File dat = new File(filePath);
|
if (!dat.exists()) {
|
return null;
|
}
|
|
byte[] bytes = new byte[(int) dat.length()];
|
|
FileInputStream fs = new FileInputStream(filePath);
|
fs.read(bytes);
|
fs.close();
|
|
return bytes;
|
} catch (Exception ex) {
|
return null;
|
}
|
}
|
|
/**
|
* 获取地形高度图
|
*/
|
public String getTerraMap(String serviceName, Integer width, Integer height) {
|
return outPath + File.separator + serviceName + File.separator + "terrain" + File.separator + width + "_" + height + ".png";
|
}
|
|
/**
|
* 获取水面高度图
|
*/
|
public String getWaterMap(String serviceName, Integer width, Integer height, Long timestamp) {
|
return outPath + File.separator + serviceName + File.separator + "waters" + File.separator + timestamp + File.separator + width + "_" + height + ".png";
|
}
|
|
/**
|
* 获取水流向流速图
|
*/
|
public String getFlowMap(String serviceName, Integer width, Integer height, Long timestamp) {
|
return outPath + File.separator + serviceName + File.separator + "flows" + File.separator + timestamp + File.separator + width + "_" + height + ".png";
|
}
|
|
/**
|
* 获取图层 *
|
*/
|
public Layer getLayer(String serviceName) {
|
Layer layer = new Layer();
|
layer.setVersion(ver);
|
layer.setDuration(new Duration(1719812810225L, 1719812810225L));
|
layer.setExtension(new Extension(2.11062743358, 0.53812160220, 2.11070827834, 0.53819799453, 1.151, 38.83));
|
|
List<Integer[]> sizes = new ArrayList<>();
|
sizes.add(new Integer[]{64, 64});
|
sizes.add(new Integer[]{128, 128});
|
sizes.add(new Integer[]{256, 256});
|
sizes.add(new Integer[]{512, 512});
|
sizes.add(new Integer[]{1024, 1024});
|
sizes.add(new Integer[]{2048, 2048});
|
layer.setTerrain(new Terrain(sizes));
|
|
List<Long> data = new ArrayList<>(Arrays.asList(1719812812225L, 1719812812225L, 1719812812225L, 1719812812225L, 1719812812225L, 1719812812225L));
|
layer.setWaters(new Water(data));
|
|
return layer;
|
}
|
}
|