|
@@ -3,6 +3,7 @@ package com.onemap.analyse.service.impl;
|
|
|
import com.onemap.analyse.domain.vo.CutFillVo;
|
|
|
import com.onemap.analyse.mapper.raster.RasterMapper;
|
|
|
import com.onemap.analyse.mapper.vector.AnalyseUtilsDBMapper;
|
|
|
+import com.onemap.analyse.mapper.vector.CreateUtilsDBMapper;
|
|
|
import com.onemap.analyse.service.IRasterService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -20,9 +21,15 @@ public class RasterServiceImpl implements IRasterService {
|
|
|
|
|
|
@Resource
|
|
|
private AnalyseUtilsDBMapper analyseUtilsDBMapper;
|
|
|
+ @Resource
|
|
|
+ private CreateUtilsDBMapper createUtilsDBMapper;
|
|
|
|
|
|
@Override
|
|
|
public Double getValue(String tableName, String geomWkt, String type) {
|
|
|
+ if (!geomWkt.contains(";")) {
|
|
|
+ geomWkt = "SRID=4326;" + geomWkt;
|
|
|
+ }
|
|
|
+
|
|
|
Double value = (double) 0;
|
|
|
if (type.equals("min")) {
|
|
|
value = rasterMapper.getMinValue(tableName, geomWkt);
|
|
@@ -36,18 +43,29 @@ public class RasterServiceImpl implements IRasterService {
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> getCutFill(CutFillVo cutFillVo, String tableName) {
|
|
|
+ String useGeom = cutFillVo.getGeom();
|
|
|
+ if (!useGeom.contains(";")) {
|
|
|
+ useGeom = "SRID=4326;" + useGeom;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 缓冲区距离,单位米,目的是为了和周边高度缓和
|
|
|
+ if (cutFillVo.getBuffer() != null) {
|
|
|
+ useGeom = createUtilsDBMapper.bufferEwkt(useGeom, cutFillVo.getBuffer());
|
|
|
+ }
|
|
|
+
|
|
|
+ String bottomGeom = cutFillVo.getGeom();
|
|
|
|
|
|
Double midHeight = cutFillVo.getHeight();
|
|
|
if (midHeight == null) {
|
|
|
- midHeight = rasterMapper.getAveValue(tableName, cutFillVo.getGeom());
|
|
|
+ midHeight = rasterMapper.getAveValue(tableName, useGeom);
|
|
|
}
|
|
|
- Double maxHeight = rasterMapper.getMaxValue(tableName, cutFillVo.getGeom());
|
|
|
- Double minHeight = rasterMapper.getMinValue(tableName, cutFillVo.getGeom());
|
|
|
+ Double maxHeight = rasterMapper.getMaxValue(tableName, useGeom);
|
|
|
+ Double minHeight = rasterMapper.getMinValue(tableName, useGeom);
|
|
|
|
|
|
// 给定高程填平需要的土方体积
|
|
|
Map<String, Object> heightMap = new HashMap<>();
|
|
|
heightMap.put("tableName", tableName);
|
|
|
- heightMap.put("geomWkt", cutFillVo.getGeom());
|
|
|
+ heightMap.put("geomWkt", useGeom);
|
|
|
heightMap.put("height", midHeight);
|
|
|
|
|
|
// 计算给定区域,指定高程填平需要的土方体积
|
|
@@ -58,7 +76,7 @@ public class RasterServiceImpl implements IRasterService {
|
|
|
|
|
|
Map<String, Object> ringMap = new HashMap<>();
|
|
|
ringMap.put("tableName", tableName);
|
|
|
- ringMap.put("geomWkt", cutFillVo.getGeom());
|
|
|
+ ringMap.put("geomWkt", useGeom);
|
|
|
|
|
|
// ringMap.put("height", (midHeight + maxHeight) / 2);
|
|
|
// String midUpGeom = rasterMapper.getDemRing(ringMap);
|
|
@@ -69,7 +87,6 @@ public class RasterServiceImpl implements IRasterService {
|
|
|
// ringMap.put("height", (midHeight + minHeight) / 2);
|
|
|
// String midDownGeom = rasterMapper.getDemRing(ringMap);
|
|
|
|
|
|
- String bottomGeom = cutFillVo.getGeom();
|
|
|
|
|
|
Map<String, Object> resMap = new HashMap<>();
|
|
|
|