Browse Source

图片不生成问题解决

gushoubang 4 months ago
parent
commit
b3bdeded1d

+ 6 - 0
onemap-modules/onemap-analyse/src/main/java/com/onemap/analyse/service/impl/GdbhReportServiceImpl.java

@@ -1,6 +1,7 @@
 package com.onemap.analyse.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.onemap.analyse.domain.HgxfxDTO;
 import com.onemap.analyse.domain.vo.HgxfxReportVo;
 import com.onemap.analyse.mapper.HgxfxMapper;
@@ -112,6 +113,11 @@ public class GdbhReportServiceImpl implements GdbhReportService {
             wktInfoData.setWkt(ewkt);
             wktInfos.add(wktInfoData);
             wktsVo.setWktInfos(wktInfos);
+
+            ObjectMapper objectMapper = new ObjectMapper();
+            String jsonString = objectMapper.writeValueAsString(wktsVo);
+            System.out.println("JSON输出: " + jsonString);
+
             RequestResult requestResult = spatialService.getImage(wktsVo);
             if (requestResult.isSuccess()) {
                 Map<String, String> map = (Map<String, String>) requestResult.get("data");

+ 18 - 18
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/impl/GdbhHandleService.java

@@ -116,26 +116,26 @@ public class GdbhHandleService {
             }
             insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护" + mx.getBsmmc() + "分析结束。。。", "info");
         }
-//        insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成开始。。。", "info");
-//        RequestResult res_1 = gdbhJgService.gdbhAnalysisHandle(gdbhDto.getBsm());
-//        if (res_1.isError()) {
-//            insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成失败。。。", "error");
-//            updateGdbg(gdbhDto.getBsm(), 3, null, new Date(), null);
-//            return;
-//        }
-//        Map jdMap_0 = (Map) res_1.get(RequestResult.DATA_TAG);
-//        RequestResult res_2 = analyseService.gdbhGenerateDocx(jdMap_0);
-//        if (res_2.isError()) {
-//            insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成失败。。。", "error");
-//            updateGdbg(gdbhDto.getBsm(), 3, null, new Date(), null);
-//            return;
-//        }
-//        String path_0 = (String) res_2.get(RequestResult.DATA_TAG);
-//        System.out.println("path_0:"+path_0);
+        insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成开始。。。", "info");
+        RequestResult res_1 = gdbhJgService.gdbhAnalysisHandle(gdbhDto.getBsm());
+        if (res_1.isError()) {
+            insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成失败。。。", "error");
+            updateGdbg(gdbhDto.getBsm(), 3, null, new Date(), null);
+            return;
+        }
+        Map jdMap_0 = (Map) res_1.get(RequestResult.DATA_TAG);
+        RequestResult res_2 = analyseService.gdbhGenerateDocx(jdMap_0);
+        if (res_2.isError()) {
+            insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成失败。。。", "error");
+            updateGdbg(gdbhDto.getBsm(), 3, null, new Date(), null);
+            return;
+        }
+        String path_0 = (String) res_2.get(RequestResult.DATA_TAG);
+        System.out.println("path_0:"+path_0);
         insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析报告生成结束。。。", "info");
 
-//        updateGdbg(gdbhDto.getBsm(), 2, null, new Date(), path_0);
-        updateGdbg(gdbhDto.getBsm(), 2, null, new Date(), null);
+        updateGdbg(gdbhDto.getBsm(), 2, null, new Date(), path_0);
+//        updateGdbg(gdbhDto.getBsm(), 2, null, new Date(), null);
         insertFxrwrz(StringUtils.getUUID(), gdbhDto.getBsm(), gdbhDto.getXmmc(), "耕地保护分析结束。。。", "info");
     }
 

+ 51 - 17
onemap-modules/onemap-spatial/src/main/java/com/onemap/spatial/service/impl/ImageServiceImpl.java

@@ -23,6 +23,7 @@ import org.geotools.styling.Stroke;
 import org.geotools.styling.*;
 import org.geotools.util.factory.Hints;
 import org.locationtech.jts.geom.Geometry;
+import org.locationtech.jts.geom.MultiPolygon;
 import org.locationtech.jts.io.WKTReader;
 import org.opengis.feature.simple.SimpleFeature;
 import org.opengis.filter.FilterFactory2;
@@ -103,30 +104,63 @@ public class ImageServiceImpl implements IImageService {
 
             Geometry geometry = wktReader.read(wkt);
 
-            SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
-            typeBuilder.setName("geometry");
-            typeBuilder.setCRS(DefaultGeographicCRS.WGS84);
-            typeBuilder.add("the_geom", Geometry.class);
-            SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(typeBuilder.buildFeatureType());
+            if (geometry instanceof MultiPolygon) {
+                MultiPolygon multiPolygon = (MultiPolygon) geometry;
+                for (int i = 0; i < multiPolygon.getNumGeometries(); i++) {
+                    Geometry polygon = multiPolygon.getGeometryN(i);
 
-            featureBuilder.add(geometry);
-            SimpleFeature feature = featureBuilder.buildFeature(null);
+                    // 对每个单独的 Polygon 进行渲染
+                    SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
+                    typeBuilder.setName("geometry");
+                    typeBuilder.setCRS(DefaultGeographicCRS.WGS84);
+                    typeBuilder.add("the_geom", Geometry.class);
+                    SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(typeBuilder.buildFeatureType());
 
-            DefaultFeatureCollection featureCollection = new DefaultFeatureCollection();
-            featureCollection.add(feature);
+                    featureBuilder.add(polygon);
+                    SimpleFeature feature = featureBuilder.buildFeature(null);
 
-            Style wktStyle = createStyle(wktInfo.getBorderColor(), wktInfo.getBorderOpacity(), wktInfo.getFillColor(), wktInfo.getFillOpacity());
-            Layer wktLayer = new FeatureLayer(featureCollection, wktStyle);
-            // 添加图层
-            mapContent.addLayer(wktLayer);
+                    DefaultFeatureCollection featureCollection = new DefaultFeatureCollection();
+                    featureCollection.add(feature);
 
-            combinedBounds.expandToInclude(featureCollection.getBounds());
+                    Style wktStyle = createStyle(wktInfo.getBorderColor(), wktInfo.getBorderOpacity(), wktInfo.getFillColor(), wktInfo.getFillOpacity());
+                    Layer wktLayer = new FeatureLayer(featureCollection, wktStyle);
+                    // 添加图层
+                    mapContent.addLayer(wktLayer);
+
+                    combinedBounds.expandToInclude(featureCollection.getBounds());
+                }
+            } else {
+                SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder();
+                typeBuilder.setName("geometry");
+                typeBuilder.setCRS(DefaultGeographicCRS.WGS84);
+                typeBuilder.add("the_geom", Geometry.class);
+                SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(typeBuilder.buildFeatureType());
+
+                featureBuilder.add(geometry);
+                SimpleFeature feature = featureBuilder.buildFeature(null);
+
+                DefaultFeatureCollection featureCollection = new DefaultFeatureCollection();
+                featureCollection.add(feature);
+
+                Style wktStyle = createStyle(wktInfo.getBorderColor(), wktInfo.getBorderOpacity(), wktInfo.getFillColor(), wktInfo.getFillOpacity());
+                Layer wktLayer = new FeatureLayer(featureCollection, wktStyle);
+                // 添加图层
+                mapContent.addLayer(wktLayer);
+
+                combinedBounds.expandToInclude(featureCollection.getBounds());
+            }
         }
 
         // 增加长和宽的10%
-        double expandWidth = combinedBounds.getWidth() * (1 + 0.01);
-        double expandHeight = combinedBounds.getHeight() * (1 + 0.01);
-        combinedBounds.expandBy(expandWidth, expandHeight);
+//        double expandWidth = combinedBounds.getWidth() * (1 + 0.01);
+//        double expandHeight = combinedBounds.getHeight() * (1 + 0.01);
+
+        double expandWidth = combinedBounds.getWidth() ;
+        double expandHeight = combinedBounds.getHeight();
+        double bian = expandWidth>expandHeight?expandWidth:expandHeight;
+
+
+        combinedBounds.expandBy(bian, bian);
 
         // 将地图绘制到图片
         File outputFile = new File(filePath);