当前位置: 首页 > news >正文

wgs-84高精度空间直角坐标转为CGCS2000坐标程序开发

WGS-84空间直角坐标坐标转CGCS2000空间直角坐标

// 修改后的坐标转换核心方法
private Vector<double> TransformCoordinates(
Vector<double> source,
FrameParams frameParams,
double obsEpoch,
double targetEpoch,
VelocityModel velocityModel)
{
// 1. 计算时间差(年)
double deltaYears = targetEpoch - obsEpoch;

// 2. 计算速度
Vector<double> velocity;
if (velocityModel.ModelType == VelocityType.Euler)
{
velocity = CalculateEulerVelocity(source, velocityModel.EulerValues);
}
else if (velocityModel.ModelType == VelocityType.Linear)
{
velocity = FindGridVelocity(source);
}
else // VelocityType.Custom
{
velocity = velocityModel.CustomValues;
}

// 3. 历元转换:得到目标历元时刻的坐标(仍在原框架下)
Vector<double> coordAtTargetEpoch = source + velocity * deltaYears;

// 4. 将框架转换参数归算到目标历元
FrameParams frameParamsAtTarget = ComputeFrameParamsAtEpoch(frameParams, targetEpoch);

// 5. 框架转换:从原框架(目标历元)转换到目标框架(目标历元)
Vector<double> result = ApplyFrameTransform(coordAtTargetEpoch, frameParamsAtTarget);

return result;
}

// 修复框架参数归算方法
private FrameParams ComputeFrameParamsAtEpoch(FrameParams p, double targetEpoch)
{
double deltaYears = targetEpoch - p.ReferenceEpoch;

return new FrameParams
{
Tx = p.Tx + p.Tx_rate * deltaYears,
Ty = p.Ty + p.Ty_rate * deltaYears,
Tz = p.Tz + p.Tz_rate * deltaYears,
Rx = (p.Rx + p.Rx_rate * deltaYears) * m,
Ry = (p.Ry + p.Ry_rate * deltaYears) * m,
Rz = (p.Rz + p.Rz_rate * deltaYears) * m,
D = p.D + p.D_rate * deltaYears,
// 保留原始速率值(后续不再使用)
Tx_rate = p.Tx_rate,
Ty_rate = p.Ty_rate,
Tz_rate = p.Tz_rate,
Rx_rate = p.Rx_rate,
Ry_rate = p.Ry_rate,
Rz_rate = p.Rz_rate,
D_rate = p.D_rate,
ReferenceEpoch = targetEpoch
};
}
private Vector<double> ApplyFrameTransform(Vector<double> source, FrameParams p)
{
// 实现公式(4)的变换矩阵
var S = Matrix<double>.Build.DenseIdentity(3) * (1 + p.D * 1e-9); // ppb转换为无量纲
var R = Matrix<double>.Build.DenseOfArray(new double[,] {
{ 0, -p.Rz, p.Ry },
{ p.Rz, 0, -p.Rx },
{ -p.Ry, p.Rx, 0 }
});
var T = Vector<double>.Build.Dense(new[] {
p.Tx * 0.001, // mm → m
p.Ty * 0.001,
p.Tz * 0.001
});

return (S + R) * source + T;
}

http://www.rkmt.cn/news/1499745.html

相关文章:

  • 腾讯云Redis与自建方案技术经济性对比 - 领先技术探路人
  • 188数码管新版本,简单易懂
  • 2026北京公司注册代办机构实测排行:合规性+效率双维度对比(附避坑指南) - 互联网科技品牌测评
  • 重力场模型计算的布格重力异常值用于一、二等水准重力异常改正计算
  • 题解:学而思编程 降雨统计
  • 2026年6月最新版贺州第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • Triton Inference Server自动扩缩容与负载均衡:生产环境最佳实践
  • 题解:学而思编程 优秀的排列
  • Sideloader跨平台支持对比:Linux、Windows、macOS三大平台安装与配置指南
  • 2026济南车灯实测|后浪灯改灯光升级,澳兹姆透镜夜间实景效果,后浪灯改实惠,靠谱 - Ayu8888
  • 礼品定制避坑与选型:五大实战服务商深度横评 - 品牌报告
  • Orz与其他压缩库对比:何时选择Orz最合适?
  • Apache 虚拟主机配置指南:从单站点到多站点
  • BRFlabbyTable与FlabbyListView对比:iOS与Android弹性列表实现差异终极指南
  • OpenAI最强编程助手Codex:下载安装、使用指南(含使用方式、提示技巧、趋势)
  • RollToolsApi架构深度解析:构建稳定聚合API接口源的技术实践
  • 2026年6月最新版东营第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • Polyglot-Ko-1.3B应用场景探索:客服机器人、内容创作与教育辅助
  • CAD如何修改快捷键?CAD如何自定义快捷键。
  • 2026年6月最新版大庆第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • 从3D Tiles到I3S:使用loaders.gl实现不同瓦片格式的转换
  • Progenitor客户端高级配置:自定义请求头、超时和认证的实用技巧
  • 5个Claudian插件使用技巧:快速提升AI交互效率的完整指南
  • PVC 橡胶阻燃剂应用分类解析 优质生产厂家甄选指南 - 变量人生001
  • 批量改图片DPI的Python脚本
  • 3个核心场景:从零开始配置yuzu Switch模拟器,让电脑流畅运行任天堂游戏
  • 2026年6月最新版大同第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • 3步掌握LLPlayer:从零开始的语言学习终极指南
  • cann/asc-devkit SinCosCompute性能调优样例
  • 人生第一双高跟鞋品牌排行:轻奢舒适兼具纪念意义 - 起跑123