Commit 9948174a by yzh

update:更新了经纬高与地固xyz坐标的转换

parent 6d207b02
...@@ -51,7 +51,8 @@ import vueCodeWaterSurface from '@/examples/weather/waterSurface/waterSurface.vu ...@@ -51,7 +51,8 @@ import vueCodeWaterSurface from '@/examples/weather/waterSurface/waterSurface.vu
// 内置算法 // 内置算法
import vueCodeDistanceTwoPoints from '@/examples/builtInAlgorithm/distanceTwoPoints/distanceTwoPoints.vue?raw' import vueCodeDistanceTwoPoints from '@/examples/builtInAlgorithm/distanceTwoPoints/distanceTwoPoints.vue?raw'
import vueCodeConvertECEFtoWGS84 from '@/examples/builtInAlgorithm/convertECEFtoWGS84/convertECEFtoWGS84.vue?raw'
import vueCodeConvertWGS84toECEF from '@/examples/builtInAlgorithm/convertWGS84toECEF/convertWGS84toECEF.vue?raw'
const vueCodeMap = { const vueCodeMap = {
// 太空任务 // 太空任务
...@@ -106,6 +107,8 @@ const vueCodeMap = { ...@@ -106,6 +107,8 @@ const vueCodeMap = {
水面: vueCodeWaterSurface, 水面: vueCodeWaterSurface,
// 内置算法 // 内置算法
经纬高转地固XYZ: vueCodeConvertWGS84toECEF,
地固XYZ转经纬高: vueCodeConvertECEFtoWGS84,
计算两点间距离: vueCodeDistanceTwoPoints, 计算两点间距离: vueCodeDistanceTwoPoints,
} }
......
...@@ -50,9 +50,10 @@ import functionCodeFog from '@/examples/weather/fog/fog-function.js?raw' ...@@ -50,9 +50,10 @@ import functionCodeFog from '@/examples/weather/fog/fog-function.js?raw'
import functionCodeWaterSurface from '@/examples/weather/waterSurface/waterSurface-function.js?raw' import functionCodeWaterSurface from '@/examples/weather/waterSurface/waterSurface-function.js?raw'
// 内置算法 // 内置算法
import functiionCodeConvertWGS84toECEF from '@/examples/builtInAlgorithm/convertWGS84toECEF/convertWGS84toECEF-function.js?raw'
import functiionCodeConvertECEFtoWGS84 from '@/examples/builtInAlgorithm/convertECEFtoWGS84/convertECEFtoWGS84-function.js?raw'
import functionCodeDistanceTwoPoints from '@/examples/builtInAlgorithm/distanceTwoPoints/distanceTwoPoints-function.js?raw' import functionCodeDistanceTwoPoints from '@/examples/builtInAlgorithm/distanceTwoPoints/distanceTwoPoints-function.js?raw'
const functionCodeMap = { const functionCodeMap = {
// 太空任务 // 太空任务
月球轨道: functionCodeMoonTrack, 月球轨道: functionCodeMoonTrack,
...@@ -106,6 +107,8 @@ const functionCodeMap = { ...@@ -106,6 +107,8 @@ const functionCodeMap = {
水面: functionCodeWaterSurface, 水面: functionCodeWaterSurface,
// 内置算法 // 内置算法
经纬高转地固XYZ: functiionCodeConvertWGS84toECEF,
地固XYZ转经纬高: functiionCodeConvertECEFtoWGS84,
计算两点间距离: functionCodeDistanceTwoPoints, 计算两点间距离: functionCodeDistanceTwoPoints,
} }
......
export function changeCoordinate(viewer, x, y, z) {
// 创建Cesium.Cartesian3对象
let cartesian3 = new Cesium.Cartesian3(x, y, z);
// 转换为WGS84弧度坐标
let cartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian3);
// 转换弧度为度数
let longitudeDegrees = Cesium.Math.toDegrees(cartographic.longitude);
let latitudeDegrees = Cesium.Math.toDegrees(cartographic.latitude);
let degreesLongitude = longitudeDegrees.toFixed(4);
let degreesLatitude = latitudeDegrees.toFixed(4);
let Height = cartographic.height.toFixed(4);
// 输出WGS84坐标
console.log("经度: " + degreesLongitude + "度");
console.log("纬度: " + degreesLatitude + "度");
console.log("海拔: " + Height + "米");
}
\ No newline at end of file
<template>
<div id="cesiumContainer" style="width: 100vw; height: 100vh"></div>
<div class="itemClass">
<div>
<input type="string" class="inputClass" v-model="X" placeholder="X:" />
<input type="string" class="inputClass" v-model="Y" placeholder="Y:" />
<input type="string" class="inputClass" v-model="Z" placeholder="Z:" />
</div>
<div>
<button @click="changeCoordinate(viewer, X, Y, Z)" style="margin: 1px">转换坐标</button>
</div>
</div>
</template>
<script setup>
import { onMounted, ref } from "vue";
import { changeCoordinate } from './function'
let viewer;
const X = ref();
const Y = ref();
const Z = ref();
onMounted(() => {
const script = document.createElement('script');
script.src = 'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js';
script.onload = () => {
window.Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3Njg4ZWU5Yi1iZDhiLTRhYmUtOTRiYS04YjM5NmUwNjVmMDMiLCJpZCI6MjI3MzQ3LCJpYXQiOjE3MjA1MjA4Mjh9.E5XW4LnwgfVAaBC-znaYr61m4yK0-j2qEQhi9qwFFPE'
viewer = new window.Cesium.Viewer('cesiumContainer', {
infoBox: false,
});
};
document.head.appendChild(script);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css';
document.head.appendChild(link);
});
</script>
<style scoped>
.itemClass {
position: absolute;
top: 10px;
left: 10px;
}
</style>
\ No newline at end of file
export function changeCoordinate(viewer, longitude, latitude, height) {
// let nums = []; //定义一个数组
// nums = input.value.split(","); //将输入框的字符串数据取出来放入数组中 在数组中的input数据做个分隔
let longitude2 = Cesium.Math.toRadians(longitude); //将经纬度转换为弧度
let latitude2 = Cesium.Math.toRadians(latitude); //将经纬度转换为弧度
let height2 = Number(height);
let cartesianPosition = Cesium.Cartesian3.fromRadians(
longitude2,
latitude2,
height2
);
let x = cartesianPosition.x.toFixed(4); //将需要输出的xyz坐标保留四位小数
let y = cartesianPosition.y.toFixed(4);
let z = cartesianPosition.z.toFixed(4);
let Position = "X: " + x + ", Y: " + y + ", Z: " + z;
console.log(Position);
}
\ No newline at end of file
<template>
<div id="cesiumContainer" style="width: 100vw; height: 100vh"></div>
<div class="itemClass">
<div>
<input type="string" class="inputClass" v-model="longitude" placeholder="经度:" />
<input type="string" class="inputClass" v-model="latitude" placeholder="纬度:" />
<input type="string" class="inputClass" v-model="height" placeholder="高度:" />
</div>
<div>
<button @click="changeCoordinate(viewer, longitude, latitude, height)" style="margin: 1px">转换坐标</button>
</div>
</div>
</template>
<script setup>
import { onMounted, ref } from "vue";
import { changeCoordinate } from './function.js'
const longitude = ref();
const latitude = ref();
const height = ref();
let viewer;
onMounted(() => {
const script = document.createElement('script');
script.src = 'https://cesium.com/downloads/cesiumjs/releases/1.99/Build/Cesium/Cesium.js';
script.onload = () => {
window.Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI3Njg4ZWU5Yi1iZDhiLTRhYmUtOTRiYS04YjM5NmUwNjVmMDMiLCJpZCI6MjI3MzQ3LCJpYXQiOjE3MjA1MjA4Mjh9.E5XW4LnwgfVAaBC-znaYr61m4yK0-j2qEQhi9qwFFPE'
viewer = new window.Cesium.Viewer('cesiumContainer', {
infoBox: false,
});
};
document.head.appendChild(script);
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cesium.com/downloads/cesiumjs/releases/1.119/Build/Cesium/Widgets/widgets.css';
document.head.appendChild(link);
});
</script>
<style scoped>
.itemClass {
position: absolute;
top: 10px;
left: 10px;
}
</style>
...@@ -176,8 +176,17 @@ export const elementWeatherMap = { ...@@ -176,8 +176,17 @@ export const elementWeatherMap = {
// 内置算法 // 内置算法
export const elementAlgorithmMap = { export const elementAlgorithmMap = {
经纬高转地固XYZ: {
title: '经纬高转地固XYZ',
pngUrl: '/src/assets/DistanceTwoPoints.png'
},
地固XYZ转经纬高: {
title: '地固XYZ转经纬高',
pngUrl: '/src/assets/DistanceTwoPoints.png'
},
计算两点间距离: { 计算两点间距离: {
title: '计算两点间距离', title: '计算两点间距离',
pngUrl: '/src/assets/DistanceTwoPoints.png' pngUrl: '/src/assets/DistanceTwoPoints.png'
} },
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment