|
|
@ -8,7 +8,7 @@ import {nextTick, ref, watch} from "vue";
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
drawEchartsProfileAnalyse,
|
|
|
|
drawEchartsProfileAnalyse,
|
|
|
|
drawEchartsVisibility, elevationProfile,
|
|
|
|
drawEchartsVisibility, elevationProfile,
|
|
|
|
profileAnalyse
|
|
|
|
profileAnalyse, visibilityAnalyse2
|
|
|
|
} from "@/utils/map/SpatialAnalysis.ts";
|
|
|
|
} from "@/utils/map/SpatialAnalysis.ts";
|
|
|
|
import {useStaticStore} from "@/store/staticOptions";
|
|
|
|
import {useStaticStore} from "@/store/staticOptions";
|
|
|
|
import {useMessage} from "naive-ui";
|
|
|
|
import {useMessage} from "naive-ui";
|
|
|
@ -23,8 +23,9 @@ let formParams = ref({
|
|
|
|
interval: 100,
|
|
|
|
interval: 100,
|
|
|
|
startClearance: 40, //起点离地高度
|
|
|
|
startClearance: 40, //起点离地高度
|
|
|
|
endClearance: 10, //起点离地高度
|
|
|
|
endClearance: 10, //起点离地高度
|
|
|
|
|
|
|
|
curve: true
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
let isVisible = ref(false)
|
|
|
|
// 关闭地形分析结果窗口德回调
|
|
|
|
// 关闭地形分析结果窗口德回调
|
|
|
|
const handleCloseProfile = ()=>{
|
|
|
|
const handleCloseProfile = ()=>{
|
|
|
|
//移除图形元素
|
|
|
|
//移除图形元素
|
|
|
@ -53,12 +54,15 @@ function executeTopographicAnalyse(polyline:Cartesian3[]) {
|
|
|
|
let res = profileAnalyse(window.viewer, polyline,formParams.value.interval)
|
|
|
|
let res = profileAnalyse(window.viewer, polyline,formParams.value.interval)
|
|
|
|
// 计算视线起始点距离和高度
|
|
|
|
// 计算视线起始点距离和高度
|
|
|
|
let eyeRes = elevationProfile(window.viewer,polyline[0],polyline[1],-1)
|
|
|
|
let eyeRes = elevationProfile(window.viewer,polyline[0],polyline[1],-1)
|
|
|
|
eyeRes.elevationArray[0] += Number(formParams.value.startClearance)
|
|
|
|
|
|
|
|
eyeRes.elevationArray[1] += Number(formParams.value.endClearance)
|
|
|
|
|
|
|
|
// 弹出图表窗口
|
|
|
|
// 弹出图表窗口
|
|
|
|
showResultModal.value = true
|
|
|
|
showResultModal.value = true
|
|
|
|
nextTick(()=>{
|
|
|
|
nextTick(()=>{
|
|
|
|
drawEchartsVisibility(res.distanceArray, res.elevationArray, eyeRes.elevationArray[0],eyeRes.elevationArray[1])
|
|
|
|
drawEchartsVisibility(res.distanceArray, res.elevationArray,
|
|
|
|
|
|
|
|
eyeRes.elevationArray[0]+Number(formParams.value.startClearance),
|
|
|
|
|
|
|
|
eyeRes.elevationArray[1]+Number(formParams.value.endClearance))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
isVisible.value = visibilityAnalyse2(res,true, Number(formParams.value.startClearance),Number(formParams.value.endClearance))
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -121,6 +125,11 @@ const afterCoordInput = ()=> {
|
|
|
|
preset="card" draggable :mask-closable="false" :on-after-leave="handleCloseProfile"
|
|
|
|
preset="card" draggable :mask-closable="false" :on-after-leave="handleCloseProfile"
|
|
|
|
:title="store.analysisVars.analysisType==2? '通视分析结果':'剖面分析结果'">
|
|
|
|
:title="store.analysisVars.analysisType==2? '通视分析结果':'剖面分析结果'">
|
|
|
|
<template v-slot:default>
|
|
|
|
<template v-slot:default>
|
|
|
|
|
|
|
|
<n-row justify-content="center" :class="isVisible? 'ResGreen':'ResRed'"
|
|
|
|
|
|
|
|
v-show="store.analysisVars.analysisType==2">
|
|
|
|
|
|
|
|
<span style="font-size: larger;font-weight: bolder">
|
|
|
|
|
|
|
|
{{isVisible? '通视' : '不通视'}}</span>
|
|
|
|
|
|
|
|
</n-row>
|
|
|
|
<div id="profileEChart"></div>
|
|
|
|
<div id="profileEChart"></div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</n-modal>
|
|
|
|
</n-modal>
|
|
|
@ -154,6 +163,10 @@ const afterCoordInput = ()=> {
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</n-input>
|
|
|
|
</n-input>
|
|
|
|
</n-form-item>
|
|
|
|
</n-form-item>
|
|
|
|
|
|
|
|
<n-form-item label="考虑地球曲率" path="numberParam" v-show="store.analysisVars.analysisType==2">
|
|
|
|
|
|
|
|
<n-switch round v-model:value="formParams.curve">
|
|
|
|
|
|
|
|
</n-switch>
|
|
|
|
|
|
|
|
</n-form-item>
|
|
|
|
</n-form>
|
|
|
|
</n-form>
|
|
|
|
</n-space>
|
|
|
|
</n-space>
|
|
|
|
<n-row justify-content="space-around">
|
|
|
|
<n-row justify-content="space-around">
|
|
|
@ -193,4 +206,10 @@ const afterCoordInput = ()=> {
|
|
|
|
position: relative;
|
|
|
|
position: relative;
|
|
|
|
margin-top: -2rem;
|
|
|
|
margin-top: -2rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.ResGreen{
|
|
|
|
|
|
|
|
color: #26c926;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.ResRed{
|
|
|
|
|
|
|
|
color: #FF0000;
|
|
|
|
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|
|
|
|