Browse Source

低空修改250307-01

zhiyuan-007 1 month ago
parent
commit
f6e0ca67bb

BIN
dist (2).zip


BIN
dist (3).zip


BIN
dist.zip


+ 116 - 10
src/components/mapJK.vue

@@ -53,7 +53,7 @@ import routeList from '../config/routeList.json'
 import {
   getAvoidRoute,
   getBuildingPoint,
-  getNoFlyPointInterface, getPath,
+  getNoFlyPointInterface, getOccupyPointByPolygon, getPath,
   getPowerInterface,
   getPowerPoint, getPowerPointByFrustumCone,
   getPowerPointByFunnel, getPowerPointByInvertedCone, getPowerPointByPath,
@@ -320,6 +320,9 @@ export default {
           case "GetOccupyCube":
             getOccupyCube(params);
             break;
+          case "GetPowerCube":
+            getPowerCube(params);
+            break;
           case "GetFunnelCube":
             getFunnelCube(params);
             break;
@@ -748,17 +751,21 @@ export default {
             m_handles.remove(scale_handle_id);
           }
           let addScaleEvent;
+          debugger
           if(scale_handle_id === "scale_handle_cube"){
+            showCubeWithScaleEventsReturn(m_view.scale)
             addScaleEvent = new AddScaleEvent({
               m_view,
               callBackFunction:showCubeWithScaleEventsReturn
             });
           }else if(scale_handle_id === "scale_handle_tileLayerChange"){
+            showTileLayersWithScaleEventsReturn(m_view.scale)
             addScaleEvent = new AddScaleEvent({
               m_view,
               callBackFunction:showTileLayersWithScaleEventsReturn
             });
           }else if(scale_handle_id === "scale_handle_sceneLayerLayerChange"){
+            showSceneLayersWithScaleEventsReturn(m_view.scale)
             addScaleEvent = new AddScaleEvent({
               m_view,
               callBackFunction:showSceneLayersWithScaleEventsReturn
@@ -2531,11 +2538,20 @@ export default {
         const connectFlyPointWebSocket = (status) => {
           if(status === "show"){
             if(flyPointSocket){
-              return
+              socket.send(JSON.stringify({
+                  "flightIdS": ["EFF7AE7B8B044436997F93F327819C20","18207414-c19e-4233-87e2-e6e4743fdea0"],
+                  "messageCode": 1,
+                  "isShow": true
+              }));
             }else{
               flyPointSocket = new WebSocket('ws://58.34.215.19:8100/flight/data/websocket');
               flyPointSocket.onopen = () => {
                 console.log('WebSocket 连接成功');
+                flyPointSocket.send(JSON.stringify({
+                  "flightIdS": ["EFF7AE7B8B044436997F93F327819C20","18207414-c19e-4233-87e2-e6e4743fdea0"],
+                  "messageCode": 1,
+                  "isShow": true
+                }));
               };
               flyPointSocket.onmessage = (messageEvent) => {
                 let messages = JSON.parse(messageEvent.data);
@@ -2580,6 +2596,90 @@ export default {
         let level = params.level;
         let minZ = params.minZ;
         let maxZ = params.maxZ;
+        let rings = params.rings;
+        let fields = params.fields;
+        if(status === "hide"){
+          showThreeCubeDetail({
+            id:params.id,
+            status:"hide"
+          });
+          currentShowGridId = null;
+          return
+        }
+        showThreeCubeDetail({
+          id:params.lastId,
+          status:"hide"
+        });
+        currentShowGridId = id;
+        getOccupyByPolygon({
+          id,
+          lastId,
+          status,
+          minZ,
+          maxZ,
+          level,
+          fields,
+          rings,
+          scrollId:""
+        });
+      }
+
+      // 获取当前场景-递归获取权重数据
+      function getOccupyByPolygon(params) {
+        getOccupyPointByPolygon({
+          minZ:params.minZ,
+          maxZ:params.maxZ,
+          level: params.level,
+          rings: params.rings,
+          fields: params.fields,
+          scrollId: params.scrollId,
+        }).then(res =>{
+          if(currentShowGridId === params.id){
+            if(res.data.data.list?.length >= 100000 && res.data.data.scrollId){
+
+              let size = {
+                x:res.data.data.list[0].boxSize.latLength,
+                y:res.data.data.list[0].boxSize.lonLength,
+                z:res.data.data.list[0].boxSize.height
+              }
+              showThreeCubeDetail({
+                "id":params.id,
+                "status":params.status,
+                "size":size,
+                "points":res.data.data.list,
+                "depthTest":false
+              })
+              params.scrollId = res.data.data.scrollId;
+              getOccupyByPolygon(params);
+            }else{
+              if(res.data.data.list?.length > 0){
+                let size = {
+                  x:res.data.data.list[0].boxSize.latLength,
+                  y:res.data.data.list[0].boxSize.lonLength,
+                  z:res.data.data.list[0].boxSize.height
+                }
+                showThreeCubeDetail({
+                  "id":params.id,
+                  "status":params.status,
+                  "size":size,
+                  "points":res.data.data.list,
+                  "depthTest":false
+                })
+              }
+            }
+          }
+        })
+      }
+
+      //获取当前场景
+      function getPowerCube(params){
+        let id = params.id;
+        let lastId = params.lastId;
+        let status = params.status;
+        let level = params.level;
+        let minZ = params.minZ;
+        let maxZ = params.maxZ;
+        let rings = params.rings;
         let fields = params.fields;
         if(status === "hide"){
           showThreeCubeDetail({
@@ -2602,6 +2702,7 @@ export default {
           maxZ,
           level,
           fields,
+          rings,
           scrollId:""
         });
       }
@@ -2612,6 +2713,7 @@ export default {
           minZ:params.minZ,
           maxZ:params.maxZ,
           level: params.level,
+          rings: params.rings,
           fields: params.fields,
           scrollId: params.scrollId,
         }).then(res =>{
@@ -2628,6 +2730,7 @@ export default {
                 "status":params.status,
                 "size":size,
                 "points":res.data.data.list,
+                "depthTest":false
               })
               params.scrollId = res.data.data.scrollId;
               getSixPowerByPolygon(params);
@@ -2643,6 +2746,7 @@ export default {
                   "status":params.status,
                   "size":size,
                   "points":res.data.data.list,
+                  "depthTest":false
                 })
               }
             }
@@ -2650,6 +2754,7 @@ export default {
         })
       }
 
+
       function getFunnelCube(params){
         let id = params.id;
         let lastId = params.lastId;
@@ -2930,6 +3035,7 @@ export default {
             "status":params.status,
             "size":size,
             "points":res.data.data.list,
+            "depthTest":false
           })
         })
       }
@@ -2943,14 +3049,6 @@ export default {
         let level = params.level;
         let radius = params.radius;
         let originPaths = params.paths;
-        let paths = [];
-        originPaths[0].forEach((item)=>{
-          paths.push({
-            x:item[0],
-            y:item[1],
-            z:item[2]
-          })
-        })
         if(status === "hide"){
           showThreeCubeDetail({
             id:params.id,
@@ -2959,6 +3057,14 @@ export default {
           currentShowGridId = null;
           return
         }
+        let paths = [];
+        originPaths[0].forEach((item)=>{
+          paths.push({
+            x:item[0],
+            y:item[1],
+            z:item[2]
+          })
+        })
         showThreeCubeDetail({
           id:params.lastId,
           status:"hide"

+ 1 - 0
src/components/mapTest.vue

@@ -76,6 +76,7 @@ export default {
         id:"i_map",
         //url:'https://cimweb.zjw.sh.cegn.cn:2007/map-tool-widget/#/jk_map',
         url:'http://localhost:5173/map-tool-widget/#/jk_map',
+        //url: 'http://58.34.215.19:8095/map-tool-widget/#/jk_map',
         onReady:function (){
           // console.log("地图创建完成");
         }

+ 75 - 2
src/config/basicTool.json

@@ -42,7 +42,7 @@
             "title":"BaseMap",
             "visible": true,
             "opacity": 1,
-            "url": "https://cimweb.zjw.sh.cegn.cn:2008/MapServiceProxy/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDExNDU2MDEsImtleSI6IjkzNDkzMzIxIiwic2VydmljZU5vIjoiRDkwMDEwMDcxMjAyMzA4MDEiLCJ1c2VybmFtZSI6InB0Z2wifQ.q4bnfOXXKkV8hk1kmHiCevo0uM2eoaVISN6ufE-u390",
+            "url": "https://cimweb.zjw.sh.cegn.cn:2008/MapServiceProxy/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDE0MDAyODcsImtleSI6IjkzNDkzMzIxIiwic2VydmljZU5vIjoiRDkwMDEwMDcxMjAyMzA4MDEiLCJ1c2VybmFtZSI6InB0Z2wifQ.vVYiOcHETHfBvEUZznUcCLFFEziKh09QejR4C4GeEbg",
             "token": ""
           }
         }
@@ -2089,7 +2089,7 @@
         }
       },
       {
-        "code": "1-48",
+        "code": "1-48-1",
         "title": "获取占用网格",
         "data": {
           "ActionName": "GetOccupyCube",
@@ -2099,6 +2099,79 @@
             "level" : 23,
             "minZ" : 0,
             "maxZ" : 40,
+            "rings":[
+                     [
+                         [
+                             4510.965178032473,
+                             8630.368364146465,
+                             0
+                         ],
+                         [
+                             5172.681364747654,
+                             6222.235213498214,
+                             0
+                         ],
+                         [
+                             3592.9849815986345,
+                             5788.15954811861,
+                             0
+                         ],
+                         [
+                             2931.26796348097,
+                             8196.293085792775,
+                             0
+                         ],
+                         [
+                             4510.965178032473,
+                             8630.368364146465,
+                             0
+                         ]
+                     ]
+                 ],
+            "token": ""
+          }
+        }
+      },
+      {
+        "code": "1-48-2",
+        "title": "获取权重网格",
+        "data": {
+          "ActionName": "GetPowerCube",
+          "Parameters": {
+            "id" : "1",
+            "status" : "show",
+            "level" : 23,
+            "minZ" : 0,
+            "maxZ" : 40,
+            "rings":[
+              [
+                [
+                  4510.965178032473,
+                  8630.368364146465,
+                  0
+                ],
+                [
+                  5172.681364747654,
+                  6222.235213498214,
+                  0
+                ],
+                [
+                  3592.9849815986345,
+                  5788.15954811861,
+                  0
+                ],
+                [
+                  2931.26796348097,
+                  8196.293085792775,
+                  0
+                ],
+                [
+                  4510.965178032473,
+                  8630.368364146465,
+                  0
+                ]
+              ]
+            ],
             "token": ""
           }
         }

+ 1 - 0
src/main.js

@@ -7,6 +7,7 @@ import router from "./router/index.js";
 import './assets/global.scss'
 import esriConfig from  '@arcgis/core/config.js'
 esriConfig.assetsPath = '/public/assets';
+//esriConfig.assetsPath = '/map-tool-widget/assets';
 import mitt from 'mitt'
 app.use(ElementPlus, {
     locale: zhCn,

+ 108 - 31
src/service/http.js

@@ -70,36 +70,113 @@ export function getPowerPointByPolygon(params){
                 "relation": "intersects",
                 "shape": {
                     "type": "Polygon",
-                    "coordinates":
-                        [
-                            [
-                                [
-                                    4510.965178032473,
-                                    8630.368364146465,
-                                    0
-                                ],
-                                [
-                                    5172.681364747654,
-                                    6222.235213498214,
-                                    0
-                                ],
-                                [
-                                    3592.9849815986345,
-                                    5788.15954811861,
-                                    0
-                                ],
-                                [
-                                    2931.26796348097,
-                                    8196.293085792775,
-                                    0
-                                ],
-                                [
-                                    4510.965178032473,
-                                    8630.368364146465,
-                                    0
-                                ]
-                            ]
-                        ]
+                    "coordinates":params.rings,
+                    // "coordinates": [
+                    //         [
+                    //             [
+                    //                 4510.965178032473,
+                    //                 8630.368364146465,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 5172.681364747654,
+                    //                 6222.235213498214,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 3592.9849815986345,
+                    //                 5788.15954811861,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 2931.26796348097,
+                    //                 8196.293085792775,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 4510.965178032473,
+                    //                 8630.368364146465,
+                    //                 0
+                    //             ]
+                    //         ]
+                    //     ]
+                }
+            },
+            "minZ": params.minZ,
+            "maxZ": params.maxZ,
+            "routes": [
+                //  "G001133223-031112-303001.1|000000000000000000000001"
+            ],
+            "fields":["gridCode","x","y","z","element","boxSize"],
+            "scrollPage": {
+                "pageIndex": 1,
+                "pageSize": 100000,
+                "scrollId": params.scrollId
+            },
+            // "scoreMap": {
+            //     "9.0": -999,
+            //     "12.0": -999,
+            //     "13.0": -999,
+            //     "5.0": -999,
+            //     "7.0": -999
+            // },
+            // "elementCount":{
+            //     "7.0":1, //禁飞区
+            //     "9.0":1,  //建筑物
+            //     "12.0":1,  //起降场
+            //     "13.0":1,  //航线
+            // },
+            "isShowInfo":0,
+            "level":params.level
+        }
+    })
+}
+
+
+
+//范围查询占用网格getOccupyPointByPolygon
+export function getOccupyPointByPolygon(params){
+    return requestNetPost({
+        url:'/DataSearch/grid/search/v3/calculateWeight',
+        // header:{
+        //     'Content-Encoding': 'gzip'
+        // },
+        data:{
+            "geoShapeQuery": {
+                "fieldName": "locationPoint",
+                "relation": "intersects",
+                "shape": {
+                    "type": "Polygon",
+                    "coordinates":params.rings,
+                    // "coordinates": [
+                    //         [
+                    //             [
+                    //                 4510.965178032473,
+                    //                 8630.368364146465,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 5172.681364747654,
+                    //                 6222.235213498214,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 3592.9849815986345,
+                    //                 5788.15954811861,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 2931.26796348097,
+                    //                 8196.293085792775,
+                    //                 0
+                    //             ],
+                    //             [
+                    //                 4510.965178032473,
+                    //                 8630.368364146465,
+                    //                 0
+                    //             ]
+                    //         ]
+                    //     ]
                 }
             },
             "minZ": params.minZ,
@@ -214,7 +291,7 @@ export function getPowerPointByPrism(params){
             ],
             "scrollPage": {
                 "pageIndex": 1,
-                "pageSize": 10000,
+                "pageSize": 100000,
                 "scrollId": ""
             },
             "isShowInfo": 0,

+ 1 - 1
src/units/map/GeometryMeshEffect.js

@@ -35,7 +35,7 @@ class GeometryMeshEffect{
                         "symbolLayers": [
                             {
                                 "type": "extrude",
-                                "size": 300,
+                                "size": item.shape.height,
                                 "material": {
                                     "color": item.shape.color
                                 }

+ 41 - 2
src/units/map/addDrawEvent.js

@@ -232,11 +232,46 @@ class AddDrawEvent {
         const updateOptions = { tool: "reshape", highlightOptions: { enabled: false }};
         this.sketchViewModel.update([this.graphic],updateOptions);
     }
+
+    getBaseCenter(mesh) {
+        // 提取底面顶点
+        const vertices = mesh.vertexAttributes.position;
+        const baseVertices = [];
+        const segments = 30; // 与 createTruncatedCone 中的 segments 一致
+
+        // 底面顶点是前 segments 个顶点
+        for (let i = 0; i < segments; i++) {
+            const x = vertices[i * 3];
+            const y = vertices[i * 3 + 1];
+            const z = vertices[i * 3 + 2];
+            baseVertices.push([x, y, z]);
+        }
+
+        // 计算底面中心点
+        const center = baseVertices.reduce(
+            (acc, vertex) => {
+                return [acc[0] + vertex[0], acc[1] + vertex[1], acc[2] + vertex[2]];
+            },
+            [0, 0, 0]
+        ).map((sum) => sum / segments);
+
+        return new Point({
+            x: center[0],
+            y: center[1],
+            z: center[2],
+            spatialReference: mesh.spatialReference
+        });
+    }
+
     createListenerEvent(callback){
         this.clearCreateListenerEvent()
         this.createListenerEventHander = this.sketchViewModel.on("create", (event) => {
             if (event.state === "complete") {
-                callback(event.graphic.geometry);
+                if(event.graphic.geometry.type == "mesh"){
+                    callback(this.getBaseCenter(event.graphic.geometry));
+                }else{
+                    callback(event.graphic.geometry);
+                }
             }
         });
     }
@@ -244,7 +279,11 @@ class AddDrawEvent {
         this.clearUpdateListenerEvent()
         this.updateListenerEventHander = this.sketchViewModel.on("update", (event) => {
             if (event.state === "complete") {
-                callback(event.graphics[0].geometry);
+                if(event.graphic.geometry.type == "mesh"){
+                    callback(this.getBaseCenter(event.graphic.geometry));
+                }else{
+                    callback(event.graphic.geometry);
+                }
             }
         });
     }