From 514705c874699fb016ca405961e50dcb15af2648 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 28 十一月 2023 10:28:16 +0800 Subject: [PATCH] 栅格分析返回值添加图层单位字段 --- src/main/java/com/moon/server/service/data/RasterAnalysisService.java | 82 +++++++++++++++++++++++++++++++---------- 1 files changed, 62 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java index fad1561..6172f70 100644 --- a/src/main/java/com/moon/server/service/data/RasterAnalysisService.java +++ b/src/main/java/com/moon/server/service/data/RasterAnalysisService.java @@ -7,6 +7,7 @@ import com.moon.server.entity.data.PublishEntity; import com.moon.server.helper.GeoHelper; import com.moon.server.helper.PathHelper; +import com.moon.server.helper.StringHelper; import com.moon.server.helper.WebHelper; import com.moon.server.service.all.WebSocketService; import org.apache.commons.logging.Log; @@ -17,11 +18,13 @@ import org.gdal.gdal.gdal; import org.gdal.ogr.Geometry; import org.gdal.ogr.ogr; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.awt.geom.Point2D; import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.util.*; @@ -32,6 +35,9 @@ */ @Service public class RasterAnalysisService { + @Value("${sys.gdal_path}") + String gdalPath; + @Resource PathHelper pathHelper; @@ -42,6 +48,11 @@ /** * 娴嬭瘯 + * <p> + * POINT (26.72 -48.58) + * LINESTRING(18.44 -46.69,20.14 -45.93) + * POLYGON ((5.11 -41.64,7.68 -43.59,4.73 -43.3,5.11 -41.64)) + * POLYGON ((42.6 -40.3,49.1 -40.4,49.1 -65.7,46.3 -65.6,42.6 -40.3)) */ public List<AnalysisResultEntity> test(Geometry geo, Integer size) { List<AnalysisResultEntity> rs = new ArrayList<>(); @@ -63,11 +74,12 @@ return; } - // for (PublishEntity pub : pubs) { + //for (PublishEntity pub : pubs) { pubs.parallelStream().forEach(pub -> { try { AnalysisResultEntity entity = new AnalysisResultEntity(token); entity.setLayerName(pub.getName()); + entity.setUnit(pub.getUnit()); List<MetaEntity> metas = publishService.selectMetasByPubid(pub.getId()); if (null == metas || metas.isEmpty()) { @@ -76,7 +88,7 @@ return; } - String filePath = pathHelper.getConfig().getUploadPath() + File.separator + metas.get(0).getPath(); + String filePath = getFilePath(metas); File file = new File(filePath); if (!file.exists() || file.isDirectory()) { setError(entity, "婧愭暟鎹笉瀛樺湪"); @@ -93,6 +105,31 @@ } /** + * 鑾峰彇鏂囦欢璺緞 + */ + private String getFilePath(List<MetaEntity> metas) throws IOException { + String basePath = pathHelper.getConfig().getUploadPath() + File.separator; + if (metas.size() == 1) { + return basePath + metas.get(0).getPath(); + } + + String tempPath = pathHelper.getTempPath() + File.separator, guid = StringHelper.getGuid(); + String fileList = tempPath + guid + ".txt"; + FileWriter fw = new FileWriter(fileList); + for (int i = 0, c = metas.size(); i < c; i++) { + String str = (i > 0 ? "\r\n" : "") + basePath + metas.get(i).getPath(); + fw.write(str.toCharArray()); + } + fw.close(); + + String vrt = tempPath + guid + ".vrt"; + String cmd = String.format("\"%s\\gdalbuildvrt.exe\" -input_file_list \"%s\" \"%s\"", gdalPath, fileList, vrt); + WebHelper.exec(cmd); + + return vrt; + } + + /** * 鎺ㄩ�佹秷鎭� */ private void postInfo(AnalysisResultEntity entity) throws IOException { @@ -100,7 +137,8 @@ map.put("analysisForPost", entity); String json = JSONObject.toJSONString(map); - // System.out.println(json) + //System.out.println(json) + WebSocketService.broadCastInfo(json); } @@ -116,26 +154,30 @@ } for (PublishEntity pub : pubs) { - AnalysisResultEntity entity = new AnalysisResultEntity(); - entity.setLayerName(pub.getName()); + try { + AnalysisResultEntity entity = new AnalysisResultEntity(); + entity.setLayerName(pub.getName()); + entity.setUnit(pub.getUnit()); - List<MetaEntity> metas = publishService.selectMetasByPubid(pub.getId()); - if (null == metas || metas.isEmpty()) { - setError(entity, "鎵句笉鍒板彂甯冩暟鎹�"); - continue; + List<MetaEntity> metas = publishService.selectMetasByPubid(pub.getId()); + if (null == metas || metas.isEmpty()) { + setError(entity, "鎵句笉鍒板彂甯冩暟鎹�"); + continue; + } + + String filePath = getFilePath(metas); + File file = new File(filePath); + if (!file.exists() || file.isDirectory()) { + setError(entity, "婧愭暟鎹笉瀛樺湪"); + continue; + } + + openRaster(entity, filePath, geo, size); + rs.add(entity); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); } - - String filePath = pathHelper.getConfig().getUploadPath() + File.separator + metas.get(0).getPath(); - File file = new File(filePath); - if (!file.exists() || file.isDirectory()) { - setError(entity, "婧愭暟鎹笉瀛樺湪"); - continue; - } - - openRaster(entity, filePath, geo, size); - rs.add(entity); } - return rs; } -- Gitblit v1.9.3