gpt4 book ai didi

javascript - 如何将x、y、z转换为Cesium中的经度、纬度、高度?

转载 作者:行者123 更新时间:2023-11-29 14:49:19 25 4
gpt4 key购买 nike

我使用 three.js 库组装了一个设计(植物)。该设计包含许多较小的模型,这些模型具有从原点 (0,0,0) 到 (x, y, z) 的位置引用。在以下链接中附上示例屏幕截图

Assembled Model Ref Image

现在我想将具有自己位置的单个模型加载到 Cesium 中。当我尝试加载直接将位置 (x, y, z) 转换为 (north, east, up) 时,结果与预期不符。所有的模型都是分散的。

我想要实现的功能是,基于一些原点(lon、lat、alt),我应该将模型定位到铯中,引用相对于铯坐标(lon,纬度、高度)

例如

  • 原点地理坐标 (ori_lon, ori_lat, ori_alt) => (-106.690647, 36.806761, 0)

  • 模型坐标 (m_x, m_y, m_z) => (-150.9, 126.26, 217.7)

  • 预期铯的坐标:(ori_lon + m_x, ori_lat + m_y, ori_alt + m_z)

或一些算法来实现这一点。

我尝试使用以下文章将 (x, y, z) 转换为具有某些来源 (long, lat, alt) 的 (long, lat, alt),但没有成功:(

(x, y, z) coordinates >> geo-coordinates

建议/帮助解决问题。

最佳答案

编辑:由于搜索引擎似乎将人们派往此处寻找笛卡尔到制图的转换,因此我将在此处提供一个答案。

Cartographic.fromCartesian函数是执行此转换的最简单方法。请注意,它将返回以弧度而非度数表示的 Cartographic。高度以米为单位返回。

var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
console.log(
'lon ' + Cesium.Math.toDegrees(cartographic.longitude) + ', ' +
'lat ' + Cesium.Math.toDegrees(cartographic.latitude) + ', ' +
'alt ' + cartographic.height);

原始答案:如果您在此处阅读原始问题的详细信息,提问者试图在 LLA 空间中将坐标加在一起,这是不正确的。我在这里的原始答案解释了如何将它们都转换为笛卡尔空间并将结果添加到那里。

这可以通过 Cesium.Cartesian3.fromDegrees 来完成.

var position = Cesium.Cartesian3.fromDegrees(-106.690647, 36.806761, 0);
var offset = new Cesium.Cartesian3(-150.9, 126.26, 217.7);
Cesium.Cartesian3.add(position, offset, position);

根据 offset 所在的坐标系,它可能需要旋转才能应用于全局笛卡尔空间。例如,如果它是东西北向上,您将使用 the corresponding function创建并应用该转换。

关于javascript - 如何将x、y、z转换为Cesium中的经度、纬度、高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com