Browse Source

根据geoType调整图片

zhouyuexiang 1 year ago
parent
commit
a0d5f06e7e

+ 1 - 2
tile-service/src/main/java/cn/com/taiji/tile/service/ITileService.java

@@ -14,6 +14,5 @@ public interface ITileService {
 
     byte[] tileData(GeoRequestParam requestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String,List<LayerStyleView>> dataMaps);
     FeatureInfo getFeatureInfo(GeoRequestParam geoRequestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps);
-
-    List<Map<String, Object>> getFeature(GeoRequestParam geoRequestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps);
+    FeatureInfo getFeature(GeoRequestParam geoRequestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps);
 }

+ 10 - 28
tile-service/src/main/java/cn/com/taiji/tile/service/impl/TileServiceImpl.java

@@ -50,7 +50,7 @@ public class TileServiceImpl implements ITileService {
             if (result.pageResult != null && result.pageResult.getRecordCount() > 0) {
                 List<Map<String, Object>> cqlDataList = (List<Map<String, Object>>) result.pageResult.getDatas();
                 //3根据空间地理数据生成图层二进制数据
-                BufferedImage bufferedImage = ShapeUtils.drawImage(requestParam.getBbox(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList);
+                BufferedImage bufferedImage = ShapeUtils.drawImage(requestParam.getGeoType(),requestParam.getBbox(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList);
                 biMap.put(layerGroupDsView.getLayerCode(),bufferedImage);
             } else {
 //                log.info("根据查询过滤规则条件:" + filterCqlStr.toString() + "和图层代码:" + requestParam.getLayers() + " 没有找到图层对应的数据源的空间地理数据");
@@ -250,10 +250,8 @@ public class TileServiceImpl implements ITileService {
             if (result.pageResult != null && result.pageResult.getRecordCount() > 0) {
                 List<Map<String, Object>> cqlDataList = (List<Map<String, Object>>) result.pageResult.getDatas();
                 //3根据空间地理数据生成图层二进制数据
-                List<Map<String, Object>> maps = ShapeUtils.detectClick(requestParam.getBbox(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList, requestParam.getX(), requestParam.getY());
+                List<Map<String, Object>> maps = ShapeUtils.detectClick(requestParam.getBbox(),requestParam.getGeoType(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList, requestParam.getX(), requestParam.getY());
                 features.addAll(maps);
-            } else {
-//                log.info("根据查询过滤规则条件:" + filterCqlStr.toString() + "和图层代码:" + requestParam.getLayers() + " 没有找到图层对应的数据源的空间地理数据");
             }
         });
         featureInfo.setFeatures(features);
@@ -263,36 +261,20 @@ public class TileServiceImpl implements ITileService {
     }
 
     @Override
-    public List<Map<String, Object>> getFeature(GeoRequestParam requestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps) {
-        List<Map<String, Object>> list = new CopyOnWriteArrayList<>();
+    public FeatureInfo getFeature(GeoRequestParam requestParam, List<LayerGroupDsView> layerGroupDsViewList, Map<String, List<LayerStyleView>> dataMaps) {
+        FeatureInfo featureInfo = new FeatureInfo();
+        List<Map<String, Object>> features = new CopyOnWriteArrayList<>();
         layerGroupDsViewList.parallelStream().forEach(layerGroupDsView -> {
             Result result = getResult(requestParam, dataMaps, layerGroupDsView);
             if (result.pageResult != null && result.pageResult.getRecordCount() > 0) {
                 List<Map<String, Object>> cqlDataList = (List<Map<String, Object>>) result.pageResult.getDatas();
-                list.addAll(cqlDataList);
-            } else {
-//                log.info("根据查询过滤规则条件:" + filterCqlStr.toString() + "和图层代码:" + requestParam.getLayers() + " 没有找到图层对应的数据源的空间地理数据");
+                features.addAll(cqlDataList);
             }
         });
-        return list;
-    }
-
-    public static double[] parseBbox(String bboxString) {
-        String[] bboxValuesStr = bboxString.split(",");
-        if (bboxValuesStr.length != 4) {
-            return new double[0]; // 返回空数组表示无效的 BBOX 格式
-        }
-
-        double[] bboxValues = new double[4];
-        try {
-            for (int i = 0; i < 4; i++) {
-                bboxValues[i] = Double.parseDouble(bboxValuesStr[i]);
-            }
-        } catch (NumberFormatException e) {
-            return new double[0]; // 返回空数组表示无效的 BBOX 格式
-        }
-
-        return bboxValues;
+        featureInfo.setFeatures(features);
+        featureInfo.setNumberReturned(features.size());
+        featureInfo.setTimeStamp(DateUtil.format(new Date(),DateTimeFormatter.ISO_INSTANT));
+        return featureInfo;
     }
 
     private static class Result {

+ 10 - 5
tile-service/src/main/java/cn/com/taiji/tile/util/ShapeUtils.java

@@ -256,7 +256,7 @@ public class ShapeUtils {
         }
     }
 
-    public static List<Map<String, Object>> detectClick(String bboxStr, List<Map<String, Object>> dataList, String shapeKey, List<LayerStyleView> layerStyleViews, int x, int y) {
+    public static List<Map<String, Object>> detectClick(String geoType,String bboxStr, List<Map<String, Object>> dataList, String shapeKey, List<LayerStyleView> layerStyleViews, int x, int y) {
         List<Map<String, Object>> clickSelectedDataList = new CopyOnWriteArrayList<>();
 
         BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);
@@ -265,7 +265,7 @@ public class ShapeUtils {
         for (int i = 0; i < split.length; i++) {
             bbox[i] = Double.parseDouble(split[i]);
         }
-        ShapeStyle shapeStyle = getShapeStyle(layerStyleViews);
+        ShapeStyle shapeStyle = getShapeStyle(layerStyleViews,geoType);
         Graphics2D graphics = image.createGraphics();
         dataList.forEach(poi -> {
             Geometry geometry;
@@ -333,13 +333,13 @@ public class ShapeUtils {
         }
     }
 
-    public static BufferedImage drawImage(String bboxStr, List<Map<String, Object>> dataList, String shapeKey, List<LayerStyleView> layerStyleViews) {
+    public static BufferedImage drawImage(String geoType,String bboxStr, List<Map<String, Object>> dataList, String shapeKey, List<LayerStyleView> layerStyleViews) {
         BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_ARGB);
-        renderShape(image, bboxStr, dataList, getShapeStyle(layerStyleViews), shapeKey);
+        renderShape(image, bboxStr, dataList, getShapeStyle(layerStyleViews,geoType), shapeKey);
         return image;
     }
 
-    public static ShapeStyle getShapeStyle(List<LayerStyleView> layerStyleViews) {
+    public static ShapeStyle getShapeStyle(List<LayerStyleView> layerStyleViews,String geoType) {
         ShapeStyle shapeStyle = new ShapeStyle();
         for (LayerStyleView layerStyleView : layerStyleViews) {
             BeanUtils.copyProperties(layerStyleView, shapeStyle);
@@ -358,6 +358,11 @@ public class ShapeUtils {
             setImage(layerStyleView.getCenterPointImage(), shapeStyle::setCenterPointImage);
             setImage(layerStyleView.getPointMarkerImage(), shapeStyle::setPointMarkerImage);
             if (shapeStyle.getPointMarkerImage() != null) {
+                if(StringUtils.equals(geoType,"1")){
+                    //如果类型为2图标要变大
+                    shapeStyle.setPointMarkerImageWidth(shapeStyle.getPointMarkerImageWidth()+4);
+                    shapeStyle.setPointMarkerImageHeight(shapeStyle.getPointMarkerImageHeight()+4);
+                }
                 shapeStyle.setPointMarkerImage(TileUtils.scaleWidthHeight(shapeStyle.getPointMarkerImage(), shapeStyle.getPointMarkerImageWidth(), shapeStyle.getPointMarkerImageHeight()));
             }
         }

+ 15 - 18
tile-web/src/main/java/cn/com/taiji/web/controller/TileWebController.java

@@ -25,6 +25,7 @@ import javax.annotation.PostConstruct;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.*;
 
 /**
@@ -92,27 +93,12 @@ public class TileWebController {
                         responseWrite(response, "image/png", ret);
                     }else if(StringUtils.equals(geoRequestParam.getRequest(),"GetFeatureInfo")) {
                         FeatureInfo featureInfo = tileService.getFeatureInfo(geoRequestParam, layerGroupDsViewList, dataMaps);
-                        // 转换List为JSON
-                        ObjectMapper mapper = new ObjectMapper();
-                        String json = mapper.writeValueAsString(featureInfo);
-                        // 设置响应类型和编码
-                        response.setContentType("application/json");
-                        response.setCharacterEncoding("UTF-8");
-                        // 将JSON写入响应
-                        response.getWriter().write(json);
+                        responseWriteJson(response, featureInfo);
                     } else if(StringUtils.equals(geoRequestParam.getRequest(),"GetFeature")){
-                        List<Map<String, Object>> feature = tileService.getFeature(geoRequestParam, layerGroupDsViewList, dataMaps);
-                        // 转换List为JSON
-                        ObjectMapper mapper = new ObjectMapper();
-                        String json = mapper.writeValueAsString(feature);
-                        // 设置响应类型和编码
-                        response.setContentType("application/json");
-                        response.setCharacterEncoding("UTF-8");
-                        // 将JSON写入响应
-                        response.getWriter().write(json);
+                        FeatureInfo feature = tileService.getFeature(geoRequestParam, layerGroupDsViewList, dataMaps);
+                        responseWriteJson(response, feature);
                     }
                 }else{
-
                     log.info("根据图层代码:" + StringUtils.join(layerGroupList,",") + "获取图层对应的数据源为空或者为null");
                 }
 
@@ -133,6 +119,17 @@ public class TileWebController {
 
     }
 
+    private static void responseWriteJson(HttpServletResponse response, Object featureInfo) throws IOException {
+        // 转换List为JSON
+        ObjectMapper mapper = new ObjectMapper();
+        String json = mapper.writeValueAsString(featureInfo);
+        // 设置响应类型和编码
+        response.setContentType("application/json");
+        response.setCharacterEncoding("UTF-8");
+        // 将JSON写入响应
+        response.getWriter().write(json);
+    }
+
     private void responseWrite(HttpServletResponse response, String contentType, byte[] data) {
 
         response.setStatus(200);