将卫星图片改为3D模型

master
qubiaobiao 2024-01-05 17:40:51 +08:00
parent d2cd84dab5
commit bcb9c769c4
32 changed files with 1054 additions and 136 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 MiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,42 +1,69 @@
import { app, globalShortcut, BrowserWindow, dialog } from 'electron'
import { app, globalShortcut, BrowserWindow, ipcMain, dialog } from 'electron'
import { join } from 'path'
const child_process = require('child_process')
const crypto = require('crypto')
function queryKeys(keyPath: string, value: string) {
function queryPass(passPath: string, passValue: string) {
return new Promise(function (resolve, reject) {
try {
child_process.exec(`reg query ${keyPath} /v ${value}`, (error: Error, stdout: string, stderr: string) => {
child_process.exec(`reg query ${passPath} /v ${passValue}`, (error: Error, stdout: string, stderr: string) => {
if (error) {
reject(error);
return;
reject(error)
return
}
resolve({stdout, stderr});
resolve({stdout, stderr})
});
} catch (error) {
reject(error);
reject(error)
}
});
})
}
const keyPath = 'HKEY_CURRENT_USER\\SOFTWARE\\HwaSmart'
const value = 'global-navigation-satellite-system'
function queryKey(keyPath: string, keyValue: string) {
return new Promise(function (resolve, reject) {
try {
child_process.exec(`reg query ${keyPath} /v ${keyValue}`, (error: Error, stdout: string, stderr: string) => {
if (error) {
reject(error)
return
}
resolve({stdout, stderr})
})
} catch (error) {
reject(error)
}
})
}
function cryptMD5(GUID: string) {
let md5 = crypto.createHash('md5')
let ciphertext = md5.update(GUID).digest('hex')
return ciphertext.slice(0,8)+'-'+ciphertext.slice(8,12)+'-'+ciphertext.slice(12,16)+'-'+ciphertext.slice(16,20)+'-'+ciphertext.slice(20,32)
}
const passPath = 'HKEY_CURRENT_USER\\SOFTWARE\\HwaSmart'
const passValue = 'BDAuthorization'
const keyPath = 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography'
const keyValue = 'MachineGuid'
async function checkLaunchEnv() {
try {
const result: any = await queryKeys(keyPath, value);
// console.log('stdout', result.stdout);
const passResult: any = await queryPass(passPath, passValue)
const keyResult: any = await queryKey(keyPath, keyValue)
if(cryptMD5(keyResult.stdout.slice(83,119) + 'BD') == passResult.stdout.slice(72,108)){
return true
}else{
return false
}
// 成功
// 查询到 有这个app启动项
} catch (error) {
// 没有查询到该app启动项目
// console.log('error :>> ', error);
return false
}
}
function createWindow() {
const win = new BrowserWindow({
fullscreen: true,
@ -53,13 +80,33 @@ function createWindow() {
} else {
win.loadFile('dist/render/index.html')
}
ipcMain.on('CLOSE', (event) => {
const res = dialog.showMessageBox({
type: 'warning',
title: '警告',
message: '确定要关闭软件吗?',
detail: '关闭软件',
cancelId: 1, // 按esc默认点击索引按钮
defaultId: 0, // 默认高亮的按钮下标
buttons: ['确认', '取消'], // 按钮按索引从右往左排序
})
res.then((data)=>{
if(data.response == 0){
win.close()
}else{
console.log('not close software')
}
})
})
}
async function main() {
// 异步代码
const checkReault: any = await checkLaunchEnv()
console.log('env right:', checkReault);
console.log('env right:', checkReault)
// 异步代码执行完毕后执行的代码
if (checkReault) {
@ -88,4 +135,4 @@ async function main() {
}
}
main();
main()

View File

@ -1,42 +1,382 @@
<template>
<vc-viewer class="vc-viewer" :animation="true" :showCredit="false" :shouldAnimate="true" :sceneModePicker="true" @ready="onViewerReady">
<vc-viewer
class="vc-viewer"
:animation="true"
:showCredit="false"
:shouldAnimate="true"
:sceneModePicker="true"
@ready="onViewerReady"
>
<vc-layer-imagery>
<vc-provider-imagery-singletile :url="earth" />
</vc-layer-imagery>
<vc-navigation :offset="[10, 40]" :position="'top-left'" :printOpts="false" :locationOpts="false" :otherOpts="false" />
<vc-navigation
:offset="[10, 40]"
:position="'top-left'"
:printOpts="false"
:locationOpts="false"
:otherOpts="false"
/>
<SatelliteSystemView />
</vc-viewer>
</template>
<script lang="ts" setup>
import earth from '../assets/earth.jpg'
import SatelliteSystemView from './SatelliteSystemView.vue';
import { defineAsyncComponent, ref, watch } from "vue";
import earth from "../assets/earth.jpg";
// SatelliteSystemView 使 defineAsyncComponent SatelliteSystemView
const SatelliteSystemView = defineAsyncComponent(
() => import("./SatelliteSystemView.vue")
);
//
const onViewerReady = ({ viewer }) => {
viewer.scene.debugShowFramesPerSecond = false
window.viewer = viewer;
const scene = viewer.scene;
const camera = viewer.camera;
// FPS便
scene.debugShowFramesPerSecond = true;
//
// DirectionalLight
scene.light = new Cesium.DirectionalLight({
direction: new Cesium.Cartesian3(0.354925, -0.890918, -0.283358),
});
//
// minimumPixelSize maximumPixelSize 0 , show false使
//
//
class Model {
constructor(modelUrl) {
const modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
Cesium.Cartesian3.fromDegrees(108.55, 34.32, 0.0)
);
this.model = viewer.scene.primitives.add(
Cesium.Model.fromGltf({
url: `./models/geo/${modelUrl}.glb`,
modelMatrix: modelMatrix,
minimumPixelSize: 0,
maximumPixelSize: 0,
show: false,
})
);
}
}
const GEOModel = new Model("BeidouGEO");
const MEOModel = new Model("BeidouMEO");
const IGSOModel = new Model("BeidouIGSO");
const GPSIIFModel = new Model("GPSII-F");
const GPSIIRModel = new Model("GPSII-R");
const GPSIIIAModel = new Model("GPSIII-A");
const GPSIIRMModel = new Model("GPSIIR-M");
const GLONASSGLOKModel = new Model("GLONASSGLO-K");
const GLONASSGLOMModel = new Model("GLONASSGLO-M");
const GalileoMEOModel = new Model("GalileoMEO");
class CustomPrimitive {
constructor(options) {
this.show = options.show;
this._primitives = options._primitives;
}
update(frameState) {
if (!this.show) {
return;
}
for (var t = this._primitives, i = 0; i < t.length; ++i) {
t[i].update(frameState);
}
}
}
class CustomPolyline {
constructor(options) {
this.show = options.show;
this._polylines = options._polylines;
this.modelMatrix = options.modelMatrix;
this._batchTable = options._batchTable;
this._createBatchTable = options._createBatchTable;
this._createVertexArray = options._createVertexArray;
this._external = options._external;
this._highlightColor = options._highlightColor;
this._mode = options._mode;
this._modelMatrix = options._modelMatrix;
this._opaqueRS = options._opaqueRS;
this._polylineBuckets = options._polylineBuckets;
this._polylinesRemoved = options._polylinesRemoved;
this._polylinesToUpdate = options._polylinesToUpdate;
this._polylinesUpdated = options._polylinesUpdated;
this._positionBuffer = options._positionBuffer;
this._positionBufferUsage = options._positionBufferUsage;
this._propertiesChanged = options._propertiesChanged;
this._texCoordExpandAndBatchIndexBuffer =
options._texCoordExpandAndBatchIndexBuffer;
this._translucentRS = options._translucentRS;
this._uniformMap = options._uniformMap;
this._useHighlightColor = options._useHighlightColor;
this._vertexArrays = options._vertexArrays;
this.mymark = true;
this._colorCommands = [];
options._colorCommands.forEach((element) => {
let adrawcommand = new Cesium.DrawCommand(element);
this._colorCommands.push(adrawcommand);
});
}
update(frameState) {
if (!this.show) {
return;
}
// if(this._mode !== viewer.scene._mode){
// this._colorCommands.forEach(item => {
// if(viewer.scene._mode == 0){
// item.boundingVolume = this._vertexArrays[0].buckets[0].bucket.polylines[0]._boundingVolume
// }
// else if(viewer.scene._mode == 1){
// item.boundingVolume = this._vertexArrays[0].buckets[0].bucket.polylines[0]._boundingVolume2D
// }
// else if(viewer.scene._mode == 3){
// item.boundingVolume = this._vertexArrays[0].buckets[0].bucket.polylines[0]._boundingVolumeWC
// }
// })
// this._mode = viewer.scene._mode
// }
this._colorCommands.forEach((item) => {
frameState.commandList.push(item);
});
}
}
//
viewer.scene.screenSpaceCameraController.minimumZoomDistance = 10000000 // 10000000
scene.screenSpaceCameraController.minimumZoomDistance = 10000000; // 10000000
scene.screenSpaceCameraController.maximumZoomDistance = 200000000; // 200000000
const clickStatus = ref();
const clickName = ref("cesium-sceneModePicker-button3D");
const infoBox = viewer.infoBox.frame;
let initialPosition = "";
let initialDirection = "";
// infobox
const infoBox = viewer.infoBox.frame;
infoBox.setAttribute('sandbox', 'allow-same-origin allow-scripts allow-popups allow-forms')
infoBox.setAttribute('src', '') //src
infoBox.addEventListener('load', function () {
const infoBoxDescriptionElement = infoBox.contentWindow.document.getElementsByClassName('cesium-infoBox-description')[0]
infoBoxDescriptionElement.style.fontSize = 'larger'
infoBoxDescriptionElement.style.paddingLeft = '20px'
infoBoxDescriptionElement.style.paddingRight = '20px'
})
infoBox.setAttribute(
"sandbox",
"allow-same-origin allow-scripts allow-popups allow-forms"
);
infoBox.setAttribute("src", ""); // src
infoBox.addEventListener("load", function () {
clickStatus.value = JSON.stringify(camera.position);
viewer.infoBox.container
.getElementsByClassName("cesium-infoBox-camera")[0]
.addEventListener("click", () => {
//
camera.completeFlight();
//
let removeChanged = camera.moveEnd.addEventListener(() => {
clickStatus.value = JSON.stringify(camera.position);
//
removeChanged();
});
});
const infoBoxDescriptionElement = infoBox.contentWindow.document.getElementsByClassName(
"cesium-infoBox-description"
)[0];
infoBoxDescriptionElement.style.fontSize = "larger";
infoBoxDescriptionElement.style.paddingLeft = "20px";
infoBoxDescriptionElement.style.paddingRight = "20px";
infoBoxDescriptionElement.style.paddingBottom = "10px";
//
const InfoBoxClose = viewer.infoBox.container.getElementsByClassName(
"cesium-infoBox-close"
)[0];
InfoBoxClose.style.padding = 0;
InfoBoxClose.style.width = "30px";
InfoBoxClose.style.height = "30px";
InfoBoxClose.style.position = "absolute";
InfoBoxClose.style.top = 0;
InfoBoxClose.style.left = "30px";
InfoBoxClose.style.zIndex = 99;
});
//
const allfly = (x, y, z, h, p, r) => {
camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(x, y, z),
orientation: {
heading: Cesium.Math.toRadians(h), // ,
pitch: Cesium.Math.toRadians(p), // ,
roll: r,
},
});
};
const waitit = (waitallow, waitTime, x, y, z, h, p, r, buttonName) => {
if (waitallow) {
setTimeout(() => {
allfly(x, y, z, h, p, r);
if (buttonName == "cesium-sceneModePicker-button2D") {
scene.camera.position.z = 63781370;
// scene.mapProjection.ellipsoid.maximumRadiusAPI6,378,137
// 12756274
// z
}
}, waitTime);
} else {
allfly(x, y, z, h, p, r);
}
};
//
// window.document.getElementsByClassName('cesium-toolbar-button')[1].classList[2]
const elementsFly = (waitallow) => {
if (
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2] ==
"cesium-sceneModePicker-button3D"
) {
waitit(
waitallow,
2500,
108.55,
34.32,
100000000,
0,
-90,
0,
"cesium-sceneModePicker-button3D"
);
}
if (
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2] ==
"cesium-sceneModePicker-button2D"
) {
waitit(
waitallow,
3500,
0,
0,
40000000,
0,
-90,
0,
"cesium-sceneModePicker-button2D"
);
}
if (
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2] ==
"cesium-sceneModePicker-buttonColumbusView"
) {
waitit(
waitallow,
4500,
0,
-90,
40000000,
0,
-45,
0,
"cesium-sceneModePicker-buttonColumbusView"
);
}
initialPosition = JSON.stringify(camera.position);
initialDirection = JSON.stringify(camera.direction);
};
//
window.document
.getElementsByClassName("cesium-toolbar-button")[0]
.addEventListener("click", () => {
if (
clickName.value !==
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2]
) {
clickName.value = window.document.getElementsByClassName(
"cesium-toolbar-button"
)[1].classList[2];
elementsFly(true);
// 使 _primitives
setTimeout(() => {
let mypolylines;
mypolylines =
viewer.scene.primitives._primitives[
viewer.scene.primitives._primitives.length - 1
];
// console.log(window.nowModel)
// console.log(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1])
// if(window.nowModel == 'Beidou'){
// mypolylines = window.BeidouPolylines[0]
// console.log(mypolylines)
// }
// else if(window.nowModel == 'GPS'){
// mypolylines = window.GPSPolylines[0]
// console.log(mypolylines)
// }
// else if(window.nowModel == 'Galileo'){
// mypolylines = window.GalileoPolylines[0]
// console.log(mypolylines)
// }
// else if(window.nowModel == 'Glonass'){
// mypolylines = window.GlonassPolylines[0]
// console.log(mypolylines)
// }
// mypolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1].constructor.name == 'PolylineCollection'){
viewer.scene.primitives.show = false;
// viewer.scene.primitives._primitives.pop()
let polylineowner = new CustomPolyline(mypolylines);
let newprimitive = new CustomPrimitive(viewer.scene.primitives._primitives[10]);
// viewer.scene.primitives._primitives.pop()
viewer.scene.primitives._primitives[10] = newprimitive;
viewer.scene.primitives._primitives.forEach((item, index) => {
if (item.mymark !== undefined) {
viewer.scene.primitives._primitives.splice(index, 1);
}
});
// viewer.scene.primitives._primitives.pop()
// viewer.scene.primitives._primitives.push(polylineowner)
viewer.scene.primitives.show = true;
// console.log(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1])
// }
}, 0);
}
});
//
window.document
.getElementsByClassName("vc-viewer")[0]
.addEventListener("dblclick", () => {
if (initialDirection !== "") {
elementsFly(false);
}
});
//
watch(clickStatus, (value) => {
if (value !== initialPosition) {
elementsFly(false);
}
});
};
</script>
<style>
/* 隐藏动画仪表盘中的日期和时间 */
.vc-viewer .cesium-viewer .cesium-viewer-animationContainer svg > g > g text:not(:last-of-type) {
.vc-viewer
.cesium-viewer
.cesium-viewer-animationContainer
svg
> g
> g
text:not(:last-of-type) {
display: none;
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<div v-show="!!src">
<img :src="src">
<img :src="src" @dblclick="close">
</div>
</template>
@ -10,6 +10,10 @@ import { useStore } from 'vuex'
const store = useStore()
const src = computed(() => './image/flag/' + store.getters["satelliteSystem/name"] + '.png')
const close = () => {
window.ipcRenderer.send('CLOSE')
}
</script>
<style scoped>

View File

@ -2,44 +2,325 @@
<vc-datasource-czml v-if="czml" :czml="czml" @ready="onDataSourceReady" />
</template>
<script lang="ts" setup>
import { computed } from 'vue'
import { useStore } from 'vuex'
import entity from '../api/entity'
import { computed } from "vue";
import { useStore } from "vuex";
import entity from "../api/entity";
//
let vcViewerInstance: any = null
const store = useStore()
const czml = computed(() => './CZML/' + store.getters["satelliteSystem/name"] + '.czml')
const onDataSourceReady = ({ viewer, cesiumObject }) => {
if (!vcViewerInstance) vcViewerInstance = viewer
let vcViewerInstance: any = null;
const store = useStore();
const czml = computed(() => "./CZML/" + store.getters["satelliteSystem/name"] + ".czml");
viewer.flyTo(cesiumObject)
entity.load(cesiumObject.entities.values)
const onDataSourceReady = ({ viewer, cesiumObject }) => {
if (!vcViewerInstance) vcViewerInstance = viewer;
//
// minimumPixelSize maximumPixelSize 0 , show false使
//
//
class Model {
constructor(modelUrl) {
const modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
Cesium.Cartesian3.fromDegrees(108.55, 34.32, 0.0)
);
this.model = viewer.scene.primitives.add(
Cesium.Model.fromGltf({
url: `./models/geo/${modelUrl}.glb`,
modelMatrix: modelMatrix,
minimumPixelSize: 0,
maximumPixelSize: 0,
show: false,
})
);
}
}
const GEOModel = new Model("BeidouGEO");
const MEOModel = new Model("BeidouMEO");
const IGSOModel = new Model("BeidouIGSO");
const GPSIIFModel = new Model("GPSII-F");
const GPSIIRModel = new Model("GPSII-R");
const GPSIIIAModel = new Model("GPSIII-A");
const GPSIIRMModel = new Model("GPSIIR-M");
const GLONASSGLOKModel = new Model("GLONASSGLO-K");
const GLONASSGLOMModel = new Model("GLONASSGLO-M");
const GalileoMEOModel = new Model("GalileoMEO");
// cesiumObject.entities.values[i].model.uri._value czml
// model._resource
// cesiumObject.entities.values[i].model.uri._value http://localhost:3000/models/geo/geo.glb
// model._resource ../../../public/models/geo/geo.glb
// model._resource cesiumObject.entities.values[i].model.uri._value
// 使
class CustomPrimitive {
constructor(options) {
this.show = options.show;
this._primitives = options._primitives;
}
update(frameState) {
if (!this.show) {
return;
}
for (var t = this._primitives, i = 0; i < t.length; ++i) {
t[i].update(frameState);
}
}
}
class CustomPolyline {
constructor(options) {
this.show = options.show;
this._polylines = options._polylines;
this.modelMatrix = options.modelMatrix;
this._batchTable = options._batchTable;
this._createBatchTable = options._createBatchTable;
this._createVertexArray = options._createVertexArray;
this._external = options._external;
this._highlightColor = options._highlightColor;
this._mode = options._mode;
this._modelMatrix = options._modelMatrix;
this._opaqueRS = options._opaqueRS;
this._polylineBuckets = options._polylineBuckets;
this._polylinesRemoved = options._polylinesRemoved;
this._polylinesToUpdate = options._polylinesToUpdate;
this._polylinesUpdated = options._polylinesUpdated;
this._positionBuffer = options._positionBuffer;
this._positionBufferUsage = options._positionBufferUsage;
this._propertiesChanged = options._propertiesChanged;
this._texCoordExpandAndBatchIndexBuffer =
options._texCoordExpandAndBatchIndexBuffer;
this._translucentRS = options._translucentRS;
this._uniformMap = options._uniformMap;
this._useHighlightColor = options._useHighlightColor;
this._vertexArrays = options._vertexArrays;
this.mymark = true;
this._colorCommands = [];
options._colorCommands.forEach((element) => {
// console.log(element)
// let adrawcommand = new Cesium.DrawCommand(element)
this._colorCommands.push(element);
});
}
update(frameState) {
if (!this.show) {
return;
}
// if(this._mode !== viewer.scene._mode){
// this._colorCommands.forEach(item => {
// if(viewer.scene._mode == 0){
// item.boundingVolume = this._vertexArrays[0].buckets[0].bucket.polylines[0]._boundingVolume
// }
// else if(viewer.scene._mode == 1){
// item.boundingVolume = this._vertexArrays[0].buckets[0].bucket.polylines[0]._boundingVolume2D
// }
// else if(viewer.scene._mode == 3){
// item.boundingVolume = this._vertexArrays[0].buckets[0].bucket.polylines[0]._boundingVolumeWC
// }
// })
// this._mode = viewer.scene._mode
// }
this._colorCommands.forEach((item) => {
frameState.commandList.push(item);
// console.log(frameState.commandList)
});
// for(let s = 0, l = !0, p = 0; p < this._vertexArrays.length; ++p) {
// for(let q = 0; q < this._vertexArrays[p].buckets.length; ++q) {
// for (let v, C, P = 0, d = 0; d < this._vertexArrays[p].buckets[q].bucket.polylines.length; ++d) {
// // let I = v.isTranslucent();
// // return e.color.alpha>0&&e.color.alpha<1
// s >= this._colorCommands.length ? (C = new Cesium.DrawCommand({ owner: this }), this._colorCommands.push(C)) : C = this._colorCommands[s],
// ++s,
// // T = Cesium.combine$2(d(v._uniforms), this._uniformMap),
// C.boundingVolume = Cesium.BoundingSphere.clone(new Cesium.BoundingSphere, C.boundingVolume),
// C.modelMatrix = Cesium.Matrix4.IDENTITY,
// C.shaderProgram = this._vertexArrays[p].buckets[q].bucket.shaderProgram,
// C.vertexArray = this._vertexArrays[p].buckets.va,
// C.renderState = this._opaqueRS,
// C.pass = Cesium.Pass.OPAQUE,
// C.debugShowBoundingVolume = this.debugShowBoundingVolume,
// C.pickId = "v_pickColor",
// C.uniformMap = this._uniformMap,
// C.count = P,
// C.offset = this._vertexArrays[p].buckets[q].offset,
// this._vertexArrays[p].buckets[q].offset += P,
// P = 0,
// l = !0,
// frameState.commandList.push(C)
// console.log(frameState.commandList)
// for (var R, b = 0; b < this._vertexArrays[p].buckets[q].bucket.polylines[d]._locatorBuckets.length; ++b) {
// this._vertexArrays[p].buckets[q].bucket.polylines[d]._locatorBuckets[b].locator === this._vertexArrays[p].buckets[q] && (P += this._vertexArrays[p].buckets[q].bucket.polylines[d]._locatorBuckets[b].count)
// }
// frameState.mode === 3 ? R = this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolumeWC : frameState.mode === 0 ? R = this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolume2D : frameState.mode === 1 ? defined(this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolume2D) && ((R = BoundingSphere.clone(this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolume2D, boundingSphereScratch2)).center.x = 0) : defined(this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolumeWC) && defined(this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolume2D) && (R = Cesium.BoundingSphere.union(this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolumeWC, this._vertexArrays[p].buckets[q].bucket.polylines[d]._boundingVolume2D, new Cesium.BoundingSphere)),
// l ? (l = !1, Cesium.BoundingSphere.clone(R, new Cesium.BoundingSphere)) : Cesium.BoundingSphere.union(R, new Cesium.BoundingSphere, new Cesium.BoundingSphere)
// }
// }
// }
}
}
// 使 _primitives
setTimeout(() => {
let mypolylines;
mypolylines =
viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length - 1];
// console.log(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]._polylines[0]._id.entityCollection._owner)
// console.log(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1].constructor.name)
// if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]._polylines[0]._id.entityCollection._owner._documentPacket.name == 'BEIDOU CZML Model'){
// window.nowModel = 'Beidou'
// window.BeidouPolylines = [viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]]
// if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1].constructor.name == 'PolylineCollection'){
// mypolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// console.log(mypolylines)
// }
// }
// else if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]._polylines[0]._id.entityCollection._owner._documentPacket.name == 'GPS CZML Model'){
// window.nowModel = 'GPS'
// window.GPSPolylines = [viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]]
// if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1].constructor.name == 'PolylineCollection'){
// mypolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// console.log(mypolylines)
// }
// }
// else if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]._polylines[0]._id.entityCollection._owner._documentPacket.name == 'GALILEO CZML Model'){
// window.nowModel = 'Galileo'
// window.GalileiPolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1].constructor.name == 'PolylineCollection'){
// mypolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// console.log(mypolylines)
// }
// }
// else if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]._polylines[0]._id.entityCollection._owner._documentPacket.name == 'GLONASS CZML Model'){
// window.nowModel = 'Glonass'
// window.GlonassPolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// if(viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1].constructor.name == 'PolylineCollection'){
// mypolylines = viewer.scene.primitives._primitives[viewer.scene.primitives._primitives.length-1]
// console.log(mypolylines)
// }
// }
viewer.scene.primitives.show = false;
let polylineowner = new CustomPolyline(mypolylines);
let newprimitive = new CustomPrimitive(viewer.scene.primitives._primitives[10]);
viewer.scene.primitives._primitives[10] = newprimitive;
viewer.scene.primitives._primitives.forEach((item, index) => {
if (item.mymark) {
viewer.scene.primitives._primitives.splice(index, 1);
}
});
// viewer.scene.primitives._primitives.pop()
// viewer.scene.primitives._primitives.push(polylineowner)
viewer.scene.primitives.show = true;
}, 0);
cesiumObject.entities.values.forEach((element) => {
if (element.model !== undefined) {
//
element.label.pixelOffset._value = new Cesium.Cartesian2(12, 21);
//
if (element.properties.satelliteType._value == "Beidou") {
if (element.description._value.indexOf("GEO") !== -1) {
element.model.uri._value = GEOModel.model._resource;
} else if (element.description._value.indexOf("MEO") !== -1) {
element.model.uri._value = MEOModel.model._resource;
} else if (element.description._value.indexOf("IGSO") !== -1) {
element.model.uri._value = IGSOModel.model._resource;
}
} else if (element.properties.satelliteType._value == "GPS") {
// ,
element.model.imageBasedLightingFactor = new Cesium.Cartesian2(20, 1);
if (element.description._value.indexOf("II-F") !== -1) {
element.model.uri._value = GPSIIFModel.model._resource;
}
if (element.description._value.indexOf("II-R") !== -1) {
element.model.uri._value = GPSIIRModel.model._resource;
}
if (element.description._value.indexOf("III-A") !== -1) {
element.model.uri._value = GPSIIIAModel.model._resource;
}
if (element.description._value.indexOf("IIR-M") !== -1) {
element.model.uri._value = GPSIIRMModel.model._resource;
}
} else if (element.properties.satelliteType._value == "GLONASS") {
// ,
element.model.imageBasedLightingFactor = new Cesium.Cartesian2(10, 1);
if (element.description._value.indexOf("GLO-K") !== -1) {
element.model.uri._value = GLONASSGLOKModel.model._resource;
}
if (element.description._value.indexOf("GLO-M") !== -1) {
element.model.uri._value = GLONASSGLOMModel.model._resource;
}
} else if (element.properties.satelliteType._value == "Galileo") {
// ,
element.model.imageBasedLightingFactor = new Cesium.Cartesian2(20, 1);
if (element.description._value.indexOf("MEO") !== -1) {
element.model.uri._value = GalileoMEOModel.model._resource;
}
}
}
});
entity.load(cesiumObject.entities.values);
//
viewer.selectedEntity = entity.find('Constellation')
viewer.selectedEntity = entity.find("Constellation");
//
const allfly = (x, y, z, h, p, r) => {
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(x, y, z),
orientation: {
heading: Cesium.Math.toRadians(h), // ,
pitch: Cesium.Math.toRadians(p), // ,
roll: r,
},
});
};
if (
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2] ==
"cesium-sceneModePicker-button3D"
) {
allfly(108.55, 34.32, 100000000, 0, -90, 0);
}
if (
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2] ==
"cesium-sceneModePicker-button2D"
) {
allfly(0, 0, 40000000, 0, -90, 0);
viewer.scene.camera.position.z = 63781370;
}
if (
window.document.getElementsByClassName("cesium-toolbar-button")[1].classList[2] ==
"cesium-sceneModePicker-buttonColumbusView"
) {
allfly(0, -90, 40000000, 0, -45, 0);
}
};
// /
store.subscribeAction(({ type, payload }) => {
// /
if (type === 'satelliteSystem/toggleShow') {
const satellite = entity.get(payload)
if (!satellite) return
if (type === "satelliteSystem/toggleShow") {
const satellite = entity.get(payload);
if (!satellite) return;
satellite.show = !satellite.show
satellite.show = !satellite.show;
}
//
if (type === 'satelliteSystem/track') {
const satellite = entity.get(payload)
if (!satellite || !vcViewerInstance) return
if (type === "satelliteSystem/track") {
const satellite = entity.get(payload);
if (!satellite || !vcViewerInstance) return;
vcViewerInstance.selectedEntity = satellite
vcViewerInstance.trackedEntity = satellite
vcViewerInstance.selectedEntity = satellite;
vcViewerInstance.trackedEntity = satellite;
}
})
});
</script>

View File

@ -2,11 +2,21 @@
<div>
<div id="satellite-table-container" class="text-white absolute bottom-0 text-center">
<button @click="show = !show" class="rounded border-blue-900 bg-blue-900">
<svg v-if="show" xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 13l-7 7-7-7m14-8l-7 7-7-7" />
<svg v-if="show" xmlns="http://www.w3.org/2000/svg" width="600" height="30" fill="none" viewBox="-10 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M -200 8 l 200 10 200 -10 m -400 -6 l 200 10 200 -10">
<animate attributeName="stroke" attributeType="XML"
from="#ffffff" to="#666666"
begin="0s" dur="1.5s"
fill="remove" repeatCount="indefinite"/>
</path>
</svg>
<svg v-else xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 11l7-7 7 7M5 19l7-7 7 7" />
<svg v-else xmlns="http://www.w3.org/2000/svg" width="600" height="30" fill="none" viewBox="-10 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M -200 20 l 200 -10 200 10 m -400 -6 l 200 -10 200 10">
<animate attributeName="stroke" attributeType="XML"
from="#ffffff" to="#666666"
begin="0s" dur="1.5s"
fill="remove" repeatCount="indefinite"/>
</path>
</svg>
</button>
<table ref="satelliteTable" v-show="show" class="text-center">
@ -16,6 +26,7 @@
:key="label"
:style="{width: index == 1 ? '37.5vw' : '12.5vw'}">
{{ label }}
<input v-if="label == '/'" :indeterminate="someshow" :checked="allshow" type="checkbox" class="w-6 h-6 cursor-pointer" @change="allOnShowStateCheckboxChanged" />
</th>
</thead>
<tbody class="text-lg odd:bg-gray-50">
@ -23,7 +34,7 @@
<td class="border border-gray-900"> {{ index + 1 }} </td>
<td class="border border-gray-900"> {{ id }} </td>
<td class="border border-gray-900">
<input :checked="show" type="checkbox" class="w-6 h-6 cursor-pointer" @change="onShowStateCheckboxChanged(id)" />
<input :checked="ashow" type="checkbox" class="w-6 h-6 cursor-pointer" @change="onShowStateCheckboxChanged(id)" />
</td>
<td class="border border-gray-900">
<button @click="onTrackButtonClicked(id)">
@ -45,15 +56,71 @@ import { ref, computed, watch } from 'vue'
const show = ref(false)
const ashow = ref(true)
const someshow = ref(false)
const allshow = ref(true)
const showarr = ref({})
const store = useStore()
const satellites = computed(() => store.getters["satelliteSystem/satellites"])
const onTrackButtonClicked = id => store.dispatch('satelliteSystem/track', id)
const onShowStateCheckboxChanged = id => store.dispatch('satelliteSystem/toggleShow', id)
const onTrackButtonClicked = (id) => {
store.dispatch('satelliteSystem/track', id)
}
const onShowStateCheckboxChanged = (id) => {
// console.log(window.viewer.scene.primitives._primitives[window.viewer.scene.primitives._primitives.length-1])
// window.viewer.scene.primitives._primitives[window.viewer.scene.primitives._primitives.length-1]._polylines.forEach(element => {
// if(element._id._id == id){
// if(element._show){
// element._show == false
// }else{
// element._show == true
// }
// }
// })
someshow.value = true
showarr.value[id] = !showarr.value[id]
store.dispatch('satelliteSystem/toggleShow', id)
let ashowsum = 0
satellites.value.forEach((item,index) => {
if(showarr.value[item.id] == true){
ashowsum = ashowsum + 1
}
})
if(ashowsum == 0){
someshow.value = false
}else if(ashowsum == satellites.value.length){
someshow.value = false
}
}
const allOnShowStateCheckboxChanged = () => {
if(allshow.value){
allshow.value = false
ashow.value = false
}else{
allshow.value = true
ashow.value = true
}
satellites.value.forEach(element => {
if(showarr.value[element.id] !== ashow.value){
onShowStateCheckboxChanged(element.id)
}
onShowStateCheckboxChanged(element.id)
})
someshow.value = false
}
//
const satelliteTable = ref(null)
watch(satellites, () => satelliteTable.value.scrollTop = 0)
watch(satellites, () => {
ashow.value = true
someshow.value = false
allshow.value = true
showarr.value = {}
satellites.value.forEach(item => {
showarr.value[item.id] = false
})
satelliteTable.value.scrollTop = 0
})
</script>
<style scoped>

View File

@ -0,0 +1,134 @@
PolylineCollection.prototype.update = function (e) {
if (removePolylines(this), 0 !== this._polylines.length && this.show) {
updateMode$1(this, e);
var t,
i = e.context,
r = e.mapProjection,
n = this._propertiesChanged;
if (this._createBatchTable) {
if (0 === ContextLimits.maximumVertexTextureImageUnits)
throw new RuntimeError("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");
createBatchTable(this, i),
this._createBatchTable = !1
}
if (this._createVertexArray || computeNewBuffersUsage(this))
createVertexArrays(this, i, r);
else if (this._polylinesUpdated) {
var a = this._polylinesToUpdate;
if (this._mode !== SceneMode$1.SCENE3D)
for (var o = a.length, s = 0; s < o; ++s)
(t = a[s]).update();
if (n[POSITION_SIZE_INDEX] || n[MATERIAL_INDEX])
createVertexArrays(this, i, r);
else for (var l = a.length, c = this._polylineBuckets, u = 0; u < l; ++u) {
n = (t = a[u])._propertiesChanged;
var d = t._bucket,
h = 0;
for (var p in c)
if (c.hasOwnProperty(p)) {
if (c[p] === d) {
n[POSITION_INDEX$4] && d.writeUpdate(h, t, this._positionBuffer, r);
break
}
h += c[p].lengthOfPositions
}
if ((n[SHOW_INDEX$4] || n[WIDTH_INDEX]) && this._batchTable.setBatchedAttribute(t._index, 0, new Cartesian2(t._width, t._show)), this._batchTable.attributes.length > 2) {
if (n[POSITION_INDEX$4] || n[POSITION_SIZE_INDEX]) {
var f = e.mode === SceneMode$1.SCENE2D ? t._boundingVolume2D : t._boundingVolumeWC,
m = EncodedCartesian3.fromCartesian(f.center, scratchUpdatePolylineEncodedCartesian),
g = Cartesian4.fromElements(m.low.x, m.low.y, m.low.z, f.radius, scratchUpdatePolylineCartesian4);
this._batchTable.setBatchedAttribute(t._index, 2, m.high),
this._batchTable.setBatchedAttribute(t._index, 3, g)
}
if (n[DISTANCE_DISPLAY_CONDITION]) {
var _ = scratchNearFarCartesian2;
_.x = 0,
_.y = Number.MAX_VALUE;
var y = t.distanceDisplayCondition;
defined(y) && (_.x = y.near, _.y = y.far),
this._batchTable.setBatchedAttribute(t._index, 4, _)
}
} t._clean()
}
a.length = 0,
this._polylinesUpdated = !1
}
n = this._propertiesChanged;
for (var v = 0; v < NUMBER_OF_PROPERTIES$2; ++v)
n[v] = 0;
var C = Matrix4.IDENTITY;
e.mode === SceneMode$1.SCENE3D && (C = this.modelMatrix);
var T = e.passes,
S = 0 !== e.morphTime;
if (defined(this._opaqueRS) && this._opaqueRS.depthTest.enabled === S || (this._opaqueRS = RenderState.fromCache({ depthMask: S, depthTest: { enabled: S } })), defined(this._translucentRS) && this._translucentRS.depthTest.enabled === S || (this._translucentRS = RenderState.fromCache({ blending: BlendingState$1.ALPHA_BLEND, depthMask: !S, depthTest: { enabled: S } })), this._batchTable.update(e), T.render || T.pick)
createCommandLists(this, e, this._colorCommands, C)
}
};
var boundingSphereScratch$2 = new BoundingSphere,
boundingSphereScratch2 = new BoundingSphere;
function createCommandLists(e, t, i, r) {
for (var n = t.context, a = t.commandList, o = i.length, s = 0, l = !0, c = e._vertexArrays, u = e.debugShowBoundingVolume, d = e._batchTable.getUniformMapCallback(), h = c.length, p = 0; p < h; ++p)
for (var f = c[p], m = f.buckets, g = m.length, _ = 0; _ < g; ++_) {
for (var y, v, C, T, S = m[_], A = S.offset, x = S.bucket.shaderProgram, E = S.bucket.polylines, b = E.length, P = 0, D = 0; D < b; ++D) {
var w = E[D],
M = createMaterialId(w._material);
if (M !== y) {
if (defined(y) && P > 0) {
var I = v.isTranslucent();
s >= o ? (C = new DrawCommand({ owner: e }), i.push(C)) : C = i[s],
++s,
T = combine$2(d(v._uniforms), e._uniformMap),
C.boundingVolume = BoundingSphere.clone(boundingSphereScratch$2, C.boundingVolume),
C.modelMatrix = r,
C.shaderProgram = x,
C.vertexArray = f.va,
C.renderState = I ? e._translucentRS : e._opaqueRS,
C.pass = I ? Pass$1.TRANSLUCENT : Pass$1.OPAQUE,
C.debugShowBoundingVolume = u,
C.pickId = "v_pickColor",
C.uniformMap = T,
C.count = P,
C.offset = A,
A += P,
P = 0,
l = !0,
a.push(C)
}
(v = w._material).update(n),
y = M
}
for (var R, O = w._locatorBuckets, B = O.length, L = 0; L < B; ++L) {
var F = O[L];
F.locator === S && (P += F.count)
}
t.mode === SceneMode$1.SCENE3D ? R = w._boundingVolumeWC : t.mode === SceneMode$1.COLUMBUS_VIEW ? R = w._boundingVolume2D : t.mode === SceneMode$1.SCENE2D ? defined(w._boundingVolume2D) && ((R = BoundingSphere.clone(w._boundingVolume2D, boundingSphereScratch2)).center.x = 0) : defined(w._boundingVolumeWC) && defined(w._boundingVolume2D) && (R = BoundingSphere.union(w._boundingVolumeWC, w._boundingVolume2D, boundingSphereScratch2)),
l ? (l = !1, BoundingSphere.clone(R, boundingSphereScratch$2)) : BoundingSphere.union(R, boundingSphereScratch$2, boundingSphereScratch$2)
} defined(y) && P > 0 && (
s >= o ? (C = new DrawCommand({ owner: e }), i.push(C)) : C = i[s],
++s,
T = combine$2(d(v._uniforms), e._uniformMap),
C.boundingVolume = BoundingSphere.clone(boundingSphereScratch$2, C.boundingVolume),
C.modelMatrix = r,
C.shaderProgram = x,
C.vertexArray = f.va,
C.renderState = v.isTranslucent() ? e._translucentRS : e._opaqueRS,
C.pass = v.isTranslucent() ? Pass$1.TRANSLUCENT : Pass$1.OPAQUE,
C.debugShowBoundingVolume = u,
C.pickId = "v_pickColor",
C.uniformMap = T,
C.count = P,
C.offset = A,
l = !0,
a.push(C)
),
y = void 0
}
i.length = s
}
function computeNewBuffersUsage(e) {
var t = !1,
i = e._propertiesChanged,
r = e._positionBufferUsage;
return i[POSITION_INDEX$4] ? r.bufferUsage !== BufferUsage$1.STREAM_DRAW ? (t = !0, r.bufferUsage = BufferUsage$1.STREAM_DRAW, r.frameCount = 100) : r.frameCount = 100 : r.bufferUsage !== BufferUsage$1.STATIC_DRAW && (0 === r.frameCount ? (t = !0, r.bufferUsage = BufferUsage$1.STATIC_DRAW) : r.frameCount--),
t
}

View File

@ -19,9 +19,11 @@ const actions = {
commit('setSatellites', satellites)
},
track () {},
track () {
},
toggleShow () {},
toggleShow () {
},
}
// mutations

145
yarn.lock
View File

@ -433,6 +433,11 @@ acorn@^7.0.0:
resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1618212583807&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=
adler-32@, adler-32@~1.3.0:
version "1.3.1"
resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2"
integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==
agent-base@6, agent-base@^6.0.2:
version "6.0.2"
resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@ -820,6 +825,14 @@ cesium@^1.88.0:
resolved "https://registry.npmmirror.com/cesium/download/cesium-1.88.0.tgz#d2780ffca93968766feedb676fccb58493ce97d4"
integrity sha512-Tu/U5noy+jTejtaPav5G9SAXss8I9MmR7Ug46ny2NnKQsmW7slO0MUlL3lxo0po7VSmI/E0dDU7Jo+WiRbooRQ==
cfb@>=0.10.0:
version "1.2.2"
resolved "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44"
integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==
dependencies:
adler-32 "~1.3.0"
crc-32 "~1.2.0"
chalk@^2.4.1:
version "2.4.2"
resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
@ -921,6 +934,15 @@ clone@^1.0.2:
resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
codepage@~1.3.6:
version "1.3.8"
resolved "https://registry.npmmirror.com/codepage/-/codepage-1.3.8.tgz#4f2e5d7c0975de28f88498058dcb5afcab6a5f71"
integrity sha512-cjAoQW5L/TCKWRbzt/xGBvhwJKQFhcIVO0jWQtpKQx4gr9qvXNkpRfq6gSmjjA8dB2Is/DPOb7gNwqQXP7UgTQ==
dependencies:
commander ""
concat-stream ""
voc ""
color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.3"
resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@ -976,6 +998,11 @@ colorette@^1.2.2:
resolved "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
integrity sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=
colors@0.6.2:
version "0.6.2"
resolved "https://registry.npmmirror.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc"
integrity sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@ -983,6 +1010,11 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
commander@:
version "11.1.0"
resolved "https://registry.npmmirror.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906"
integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==
commander@^5.0.0:
version "5.1.0"
resolved "https://registry.npm.taobao.org/commander/download/commander-5.1.0.tgz?cache=0&sync_timestamp=1613374024216&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
@ -1003,6 +1035,16 @@ concat-map@0.0.1:
resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
concat-stream@:
version "2.0.0"
resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1"
integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==
dependencies:
buffer-from "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.0.2"
typedarray "^0.0.6"
concat-stream@^1.6.2:
version "1.6.2"
resolved "https://registry.nlark.com/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
@ -1044,6 +1086,11 @@ core-util-is@~1.0.0:
resolved "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz?cache=0&sync_timestamp=1630420570787&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-util-is%2Fdownload%2Fcore-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=
crc-32@, crc-32@~1.2.0:
version "1.2.2"
resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff"
integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==
crc@^3.8.0:
version "3.8.0"
resolved "https://registry.npm.taobao.org/crc/download/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6"
@ -1496,6 +1543,11 @@ form-data@^4.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
frac@0.3.1:
version "0.3.1"
resolved "https://registry.npmmirror.com/frac/-/frac-0.3.1.tgz#577677b7fdcbe6faf7c461f1801d34137cda4354"
integrity sha512-1Lzf2jOjhIkRaa013KlxNOn2D9FemmQNeYUDpEIyPeFXmpLvbZXJOlaayMBT6JKXx+afQFgQ1QJ4kaF7Z07QFQ==
fraction.js@^4.0.13:
version "4.0.13"
resolved "https://registry.npm.taobao.org/fraction.js/download/fraction.js-4.0.13.tgz#3c1c315fa16b35c85fffa95725a36fa729c69dfe"
@ -1831,11 +1883,6 @@ ieee754@^1.1.13:
resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838209136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=
if-async@^3.7.4:
version "3.7.4"
resolved "https://registry.npmmirror.com/if-async/-/if-async-3.7.4.tgz#55868deb0093d3c67bf7166e745353fb9bcb21a2"
integrity sha512-BFEH2mZyeF6KZKaKLVPZ0wMjIiWOdjvZ7zbx8ENec0qfZhJwKFbX/4jKM5LTKyJEc/GOqUKiiJ2IFKT9yWrZqA==
ignore@^5.1.1:
version "5.2.0"
resolved "https://registry.npmmirror.com/ignore/download/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
@ -1864,7 +1911,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.nlark.com/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
@ -1964,11 +2011,6 @@ is-unicode-supported@^0.1.0:
resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@ -2008,6 +2050,19 @@ jake@^10.8.5:
filelist "^1.0.4"
minimatch "^3.1.2"
js-xlsx@^0.8.22:
version "0.8.22"
resolved "https://registry.npmmirror.com/js-xlsx/-/js-xlsx-0.8.22.tgz#eb503f55f9325836eedbaa8be49da0fb0f6df3c0"
integrity sha512-3N4a9RBHTr777rxxlvwJVpC+er/neRC+40sm2M/g3RIpWiCJG0iyaGJa8Za1K3NvjhZcKn9Sz5n36TY9ti5RMQ==
dependencies:
adler-32 ""
cfb ">=0.10.0"
codepage "~1.3.6"
commander ""
crc-32 ""
jszip "2.4.0"
ssf "~0.8.1"
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
@ -2056,6 +2111,13 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
jszip@2.4.0:
version "2.4.0"
resolved "https://registry.npmmirror.com/jszip/-/jszip-2.4.0.tgz#487a93b76c3bffa6cb085cd61eb934eabe2d294f"
integrity sha512-m+yvNmYfRCaf1gr5YFT5e3fnSqLnE9McbNyRd0fNycsT0HltS19NKc18fh3Lvl/AIW/ovL6/MQ1JnfFg4G3o4A==
dependencies:
pako "~0.2.5"
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/keyv/download/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
@ -2523,6 +2585,11 @@ p-map@^4.0.0:
dependencies:
aggregate-error "^3.0.0"
pako@~0.2.5:
version "0.2.9"
resolved "https://registry.npmmirror.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
parse-glob@^3.0.4:
version "3.0.4"
resolved "https://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
@ -2743,16 +2810,6 @@ read-config-file@6.3.2:
json5 "^2.2.0"
lazy-val "^1.0.4"
"readable-stream@>=1.0.33-1 <1.1.0-0":
version "1.0.34"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "0.0.1"
string_decoder "~0.10.x"
readable-stream@^2.2.2:
version "2.3.7"
resolved "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@ -2766,7 +2823,7 @@ readable-stream@^2.2.2:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.4.0, readable-stream@^3.6.0:
readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.2"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@ -2790,16 +2847,6 @@ reduce-css-calc@^2.1.8:
css-unit-converter "^1.1.1"
postcss-value-parser "^3.3.0"
regedit@^5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/regedit/-/regedit-5.1.2.tgz#51728e0cfd7bbba95d7ab09c227aeb1174abb4e1"
integrity sha512-pQpWqO/I40bMNoMO9kTQx3e5iK542kYcB/Z8X3Y7Hcri6ydc4KZ9ByUsEWFkBRMcwo+2irHuNK5s+pMGPr6VPw==
dependencies:
debug "^4.1.0"
if-async "^3.7.4"
stream-slicer "0.0.6"
through2 "^0.6.3"
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@ -3067,6 +3114,15 @@ sprintf-js@^1.1.2:
resolved "https://registry.nlark.com/sprintf-js/download/sprintf-js-1.1.2.tgz?cache=0&sync_timestamp=1618847174560&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
integrity sha1-2hdlJiv4wPVxdJ8q1sJjACB65nM=
ssf@~0.8.1:
version "0.8.2"
resolved "https://registry.npmmirror.com/ssf/-/ssf-0.8.2.tgz#b9d4dc6a1c1bcf76f8abfa96d7d7656fb2abecd6"
integrity sha512-+ZkFDAG+ImJ48DcZvabx6YTrZ67DKkM0kbyOOtH73mbUEvNhQWWgRZrHC8+k7GuGKWQnACYLi7bj0eCt1jmosQ==
dependencies:
colors "0.6.2"
frac "0.3.1"
voc ""
ssri@^10.0.0:
version "10.0.4"
resolved "https://registry.npmmirror.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6"
@ -3079,11 +3135,6 @@ stat-mode@^1.0.0:
resolved "https://registry.npm.taobao.org/stat-mode/download/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465"
integrity sha1-aLVcth6mOf9XE282shaikYANFGU=
stream-slicer@0.0.6:
version "0.0.6"
resolved "https://registry.npmmirror.com/stream-slicer/-/stream-slicer-0.0.6.tgz#f86b2ac5c2440b7a0a87b71f33665c0788046138"
integrity sha512-QsY0LbweYE5L+e+iBQgtkM5WUIf7+kCMA/m2VULv8rEEDDnlDPsPvOHH4nli6uaZOKQEt64u65h0l/eeZo7lCw==
"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@ -3118,11 +3169,6 @@ string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@ -3225,14 +3271,6 @@ temp-file@^3.4.0:
async-exit-hook "^2.0.1"
fs-extra "^10.0.0"
through2@^0.6.3:
version "0.6.5"
resolved "https://registry.npmmirror.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
integrity sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==
dependencies:
readable-stream ">=1.0.33-1 <1.1.0-0"
xtend ">=4.0.0 <4.1.0-0"
tmp-promise@^3.0.2:
version "3.0.3"
resolved "https://registry.npmmirror.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
@ -3382,6 +3420,11 @@ vite@^2.0.5:
optionalDependencies:
fsevents "~2.3.1"
voc@:
version "1.2.0"
resolved "https://registry.npmmirror.com/voc/-/voc-1.2.0.tgz#c459024531d71067c09e2c0c2bda6c2b13af32d8"
integrity sha512-BOuDjFFYvJdZO6e/N65AlaDItXo2TgyLjeyRYcqgAPkXpp5yTJcvkL2n+syO1r9Qc5g96tfBD2tuiMhYDmaGcA==
vue-cesium@^3.0.4:
version "3.0.4"
resolved "https://registry.npmmirror.com/vue-cesium/download/vue-cesium-3.0.4.tgz#3f33b6d31104efe8037cf833c28f773d703eab16"
@ -3476,7 +3519,7 @@ xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1:
resolved "https://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-15.1.1.tgz?cache=0&sync_timestamp=1600349105009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxmlbuilder%2Fdownload%2Fxmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
integrity sha1-nc3OSe6mbY0QtCyulKecPI0MLsU=
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.2:
xtend@^4.0.2:
version "4.0.2"
resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=