velocity - 用于 ECEF 到 WGS84 速度(地速)的开源 c# 库
问题描述
有谁知道我在哪里可以找到一个开源 c# 库,它可以将 3D 笛卡尔(ECEF、地心、地固定)线速度转换为大地 WGS84 地速?或者一篇告诉我直接计算的文章也会有所帮助。
解决方案
我一直在寻找同样的东西并得出结论,WGS84 速度实际上意味着(至少对我而言)ENU 坐标中的速度;即WGS84 椭球切面速度的东、北和上分量。
我还设法编写代码来根据 ECEF 速度计算这一点。我需要的实际上是 X、Y、Z 位置(在 ECEF 坐标中)和 X、Y、Z 速度(在 ECEF 坐标中)。步骤是
1) 计算Wgs84坐标中的位置(lat, lon, alt)
ECEF (X,Y,Z) 到 Wgs84 (lat, lon, alt) 不是最简单的转换,但我使用了维基百科的“Heikkinen”方程并设法让脚本来回转换坐标而不损失准确性(检查了代码有效)。
2)将速度从ECEF转换为ENU(Wgs84切面)
对于 ECEF 到 ENU(或 NED)坐标转换,有多个 Internet 来源。一个很好的来源是导航百科。步骤很简单
- 使用步骤 1 中计算的 (lat, lon) 形成旋转矩阵
- 将 (X,Y,Z) 坐标与旋转矩阵相乘
以标量形式,上述 ENU 速度分量的矩阵方程为
E = -sin(lon) * x + cos(lon) * y
N = -cos(lon) * sin(lat) * x - sin(lon) * sin(lat) * y + cos(lat) * z
U = cos(lon) * cos(lat) * x + sin(lon) * cos(lat) * y + sin(lat) * z
和是 Wgs84 位置坐标,lat
和是 ECEF 速度坐标。lon
x
y
z
推荐阅读
- java - 通过反射绕过 Java 模块化
- azure - 获取 500 - 重启后 Azure 网站出现内部服务器错误
- java - 如何用“”分隔字符串并将它们存储到2个不同的数组中?
- mysql - SQL查询按列值分组,并将o / p作为单独的列
- hook - 是否可以从 inotify 子系统中转储 inode 信息?
- javascript - 如果使用 jquery 单击结帐时应用折扣按钮,则停止 Woocommerce 重定向
- php - 无法使用 PHP Simple HTML DOM 获取描述内容
- kubernetes - Kubernetes:使用 nfs-client-provisioner 强制“$pvname”的值
- objective-c - 为什么我在实现委托以将值从子 swift 类传递给父目标 C 类时出错?
- r - XGboost 和 XGb.DMatrix