From 12d6cdda86f1801793c58c7693bf4664e7826ecd Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期二, 18 七月 2023 17:29:31 +0800
Subject: [PATCH] 阴影分析,坡度破向分析

---
 src/assets/js/Map/menuTool.js |  187 +++++++++++++++++++++++-----------------------
 1 files changed, 94 insertions(+), 93 deletions(-)

diff --git a/src/assets/js/Map/menuTool.js b/src/assets/js/Map/menuTool.js
index 67a5646..9758d87 100644
--- a/src/assets/js/Map/menuTool.js
+++ b/src/assets/js/Map/menuTool.js
@@ -3,7 +3,7 @@
 import rightServer from "./rightServer";
 import config from "./config";
 import CryptoJS from 'crypto-js';
-
+import Canvas2Image from 'canvas2image'
 const menuTool = {
   toolMenu: null,
   toolFlag: null,
@@ -54,15 +54,20 @@
         break;
       case "d2"://绛夐珮绾垮垎鏋�
         this.setcontour();
-        break
+        break;
       case "d3"://鍧″害鍒嗘瀽
+
         this.setSlopeMap();
-        break
+        break;
       case "d4": //鍦熸柟閲忚绠�
         this.Volumetric();
         break;
       case "d5": //褰卞儚瀵规瘮
         this.CurtainContrast();
+        break;
+
+      case "d6"://闃村奖鍒嗘瀽
+        this.shadowAnalysis();
         break;
       case "e1"://蹇収
         this.snapshot();
@@ -74,6 +79,23 @@
         this.Coordposition();
         break;
     }
+  },
+
+
+  shadowAnalysis() {
+
+    if (earthCtrl.shadows) {
+      Viewer.animation.container.style.visibility = "hidden";
+      Viewer.timeline.container.style.visibility = "hidden";
+      Viewer.clock.shouldAnimate = false;
+      return earthCtrl.shadows = false
+    }
+    Viewer.clock.shouldAnimate = true;
+    Viewer.animation.container.style.visibility = "visible";
+    Viewer.timeline.container.style.visibility = "visible";
+    earthCtrl.shadows = true;
+
+
   },
   setLocalPosition(res) {
     if (this.localPoint) {
@@ -103,43 +125,18 @@
       Viewer.scene.globe.enableLighting = false;
       return
     }
-    Viewer.scene.globe.enableLighting = true;
-    let shadingUniforms = {};
-    window.material = Cesium.Material.fromType("ElevationRamp");
-    shadingUniforms = material.uniforms;
-    shadingUniforms.minimumHeight = -10000;
-    shadingUniforms.maximumHeight = 10000;
+    window.material = new Cesium.Material({
+      fabric: {
+        type: 'ElevationRamp',
+        uniforms: {
+          image: config.StaticFileBaseUrl + "/Assets/Images/color.png",
+          minimumHeight: -10000,
+          maximumHeight: 10000
+        }
+      }
+    })
+    Viewer.scene.globe.material = window.material
 
-    shadingUniforms.image = this.getColorRamp();
-
-    globe.material = material;
-  },
-  getColorRamp() {
-    const ramp = document.createElement("canvas");
-    ramp.width = 100;
-    ramp.height = 1;
-    const ctx = ramp.getContext("2d");
-    let values = [0, 0.083, 0.166, 0.25, 0.333, 0.416, 0.5, 0.583, 0.666, 0.75, 0.833, 0.916, 0.999, 1];
-    const grd = ctx.createLinearGradient(0, 0, 100, 0);
-    grd.addColorStop(values[0], "rgb(56,168,0)"); //black
-    grd.addColorStop(values[1], "rgb(77,179,0)"); //blue
-    grd.addColorStop(values[2], "rgb(102,191,0)"); //pink
-    grd.addColorStop(values[3], "rgb(126,204,0)"); //red
-    grd.addColorStop(values[4], "rgb(155,217,0)"); //orange
-    grd.addColorStop(values[5], "rgb(187,230,0)"); //yellow
-    grd.addColorStop(values[6], "rgb(222,242,0)"); //white
-    grd.addColorStop(values[7], "rgb(255,255,0)"); //white
-    grd.addColorStop(values[8], "rgb(255,221,0)"); //white
-    grd.addColorStop(values[9], "rgb(255,183,0)"); //white
-    grd.addColorStop(values[10], "rgb(255,145,0)"); //white
-    grd.addColorStop(values[11], "rgb(255,111,0)"); //white
-    grd.addColorStop(values[12], "rgb(255,72,0)"); //white
-    grd.addColorStop(values[13], "rgb(255,38,0)"); //white
-
-    ctx.fillStyle = grd;
-    ctx.fillRect(0, 0, 100, 1);
-
-    return ramp;
   },
 
   //绛夐珮绾�
@@ -280,6 +277,7 @@
   },
   // 鐭╁舰姝f柟褰�
   createRectangle(entity) {
+    sgworld.Creator.SimpleGraphic.clear();
     this.delRectangle();
     var west = Cesium.Math.toDegrees(
       entity.rectangle._coordinates.getValue().west
@@ -300,6 +298,9 @@
     var north1 = ss[3];
     var south1 = ss[1];
     var geometry = Cesium.Rectangle.fromDegrees(west1, south1, east1, north1);
+    Viewer.camera.setView({
+      destination: Cesium.Rectangle.fromDegrees(west, south, east, north)
+    })
 
     // var e = Viewer.entities.add({
     //   name: "姝f柟",
@@ -311,29 +312,31 @@
     //     outlineColor: Cesium.Color.RED,
     //   },
     // });
-    const stripeMaterial = new Cesium.StripeMaterialProperty({
-      evenColor: Cesium.Color.WHITE.withAlpha(0.5),
-      oddColor: Cesium.Color.BLUE.withAlpha(0.5),
-      repeat: 5.0,
-    });
-    var e = Viewer.entities.add({
-      rectangle: {
-        coordinates: geometry,
-        outline: true,
-        outlineColor: Cesium.Color.WHITE,
-        outlineWidth: 4,
-        stRotation: Cesium.Math.toRadians(45),
-        material: stripeMaterial,
-      },
-    });
-    this.squareOjb.push(e);
-    // earthCtrl.Creator.SimpleGraphic.clear();
-    Viewer.entities.remove(entity);
+    // const stripeMaterial = new Cesium.StripeMaterialProperty({
+    //   evenColor: Cesium.Color.WHITE.withAlpha(0.5),
+    //   oddColor: Cesium.Color.BLUE.withAlpha(0.5),
+    //   repeat: 5.0,
+    // });
+    // var e = Viewer.entities.add({
+    //   rectangle: {
+    //     coordinates: geometry,
+    //     outline: true,
+    //     outlineColor: Cesium.Color.WHITE,
+    //     outlineWidth: 4,
+    //     stRotation: Cesium.Math.toRadians(45),
+    //     material: stripeMaterial,
+    //   },
+    // });
+    // this.squareOjb.push(e);
+    // // earthCtrl.Creator.SimpleGraphic.clear();
+    // Viewer.entities.remove(entity);
 
-    window.functionForJs({
-      type: 'exportMap',
-      value: true
-    })
+    setTimeout(() => {
+      window.functionForJs({
+        type: 'exportMap',
+        value: true
+      })
+    }, 1000);
   },
   // 鍒涘缓鍥惧舰
   createSimpleGraphic(type, scene) {
@@ -387,8 +390,12 @@
   },
   //鍦熸柟閲忚绠�
   Volumetric() {
-    const Volumetric = earthCtrl.analysis.createVolumetricMeasure({});
-    Volumetric.startDrawing();
+    if (window.Volumetric) {
+      window.Volumetric.deleteObject()
+      window.Volumetric = null
+    }
+    window.Volumetric = earthCtrl.analysis.createVolumetricMeasure({});
+    window.Volumetric.startDrawing();
   },
   //鍨傜洿楂樺害
   verticalHeight() {
@@ -401,12 +408,20 @@
 
     earthCtrl.Analysis.altitude(this.colorAll, () => { });
   },
-  //骞抽潰闈㈢Н
+  //琛ㄩ潰闈㈢Н
   planeDistance() {
     // earthCtrl.analysis.getPlaneArea(function (e) { });
+    // var colorAll = this.colorAll
+    // sgworld.Analysis.surfaceArea({
+    //   colorAll,
+    //   tin: false, // 鏄惁鏄剧ずtin涓夎缃�
+    //   onlyTerrain: false // 鏄惁鍙祴閲忕簿缁嗗湴褰�
+    // }, () => {
 
-    sgworld.Analysis.planeArea(this.colorAll, () => {
-    });
+    // });
+    earthCtrl.analysis.getSurfaceArea3d(function (e) {
+      console.info(e);
+    })
 
   },
   //琛ㄩ潰璺濈
@@ -452,32 +467,17 @@
   },
   //娓呴櫎鏂规硶
   clearTopTools(id) {
-    // if (id) {
-    // switch (id) {
-    //   case "a2":
-    //     break;
-    //   case "a3":
-    //     break;
-    //   case "b2"://璺濈娴嬮噺
-    //   case "b3"://闈㈢Н娴嬮噺
-    //   case "b4"://楂樼▼娴嬮噺
-    //   case "b5"://楂樺害娴嬮噺
+    if (earthCtrl.shadows) {
+      Viewer.animation.container.style.visibility = "hidden";
+      Viewer.timeline.container.style.visibility = "hidden";
+      Viewer.clock.shouldAnimate = false;
+      return earthCtrl.shadows = false
+    }
+    if (window.Volumetric) {
 
-    //     break;
-    //   case "c2": //鐐�
-    //   case "c3": //鏂囧瓧
-    //   case "c4": //绾�
-    //   case "c5": //鐭╁舰
-    //   case "c6": //澶氳竟褰�
-
-    //     break;
-    //   case "d5":
-
-    //     break;
-    //   case 'f1':
-
-    //     break;
-    // }
+      window.Volumetric.deleteObject()
+      window.Volumetric = null
+    }
     if (this.localPoint) {
 
       this.localPoint.deleteObject();
@@ -498,11 +498,12 @@
     }
     sgworld.Analysis.clearMeasure()
     sgworld.Creator.SimpleGraphic.clear();
-    this.toolMenu.removeFromMap();
+    // this.toolMenu.removeFromMap();
     sgworld.Creator.SimpleGraphic.clear();
     // this.toolFlag = null;
-    this.toolMenu = null;
+    // this.toolMenu = null;
     // }
+    earthCtrl.analysis.deleteObject();
   },
   clearLeftTools(res) { },
 };

--
Gitblit v1.9.3