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