当前位置: 首页 > 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.jsqmd.com/news/988000/

相关文章:

  • AnimeGAN2-Pytorch图像动漫化指南:三步实现照片转动漫风格
  • Eventuate Local API参考手册:核心接口与配置参数详解
  • 2026年全国氦气检测仪品牌排行 附避坑指南及FAQ - 互联网科技品牌测评
  • 项目三简易计算器 任务3-6六位密码锁2
  • RK3566-OS11自动更新时区
  • 2026年6月最新版黑河第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • 2026年6月最新版湖州第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • 腾讯云Redis与自建方案技术经济性对比 - 领先技术探路人
  • Unity毛发系统常见问题解决:10个常见错误与修复方法
  • CodeX Docs配置指南:轻松自定义你的免费文档系统
  • 188数码管新版本,简单易懂
  • 2026北京公司注册代办机构专业度排行:5家主流机构实测对比(附精准选型指南) - 互联网科技品牌测评
  • 2026年 内蒙建筑膜/家具贴膜/居家隔热防晒膜TOP5推荐:专业防晒隔热与隐私保护膜品牌实力精选! - 品牌发掘
  • LLM Cursor Rules开源项目贡献指南:如何参与这个AI编程规则库
  • 如何快速掌握QMK固件:机械键盘爱好者的完整入门指南
  • 3分钟快速上手RollToolsApi:免费API接口的完整使用指南
  • 2026北京公司注册代办机构实测排行:合规性+效率双维度对比(附避坑指南) - 互联网科技品牌测评
  • Pixelle-Video终极指南:5个简单步骤让AI自动生成专业短视频
  • Lune测试与调试:单元测试、集成测试与性能分析完全指南
  • 重力场模型计算的布格重力异常值用于一、二等水准重力异常改正计算
  • pinche_xcx商业变现模式分析:拼车小程序的7大盈利策略
  • 2026年 男士衬衫推荐榜:纯棉短袖衬衫/休闲商务衬衫,质感与版型俱佳之选 - 品牌发掘
  • 为什么选择Step-Audio-EditX?解析3B参数RL模型的核心技术优势
  • MediaManager元数据集成终极指南:3步完成TMDB与TVDB自动化配置
  • 题解:学而思编程 降雨统计
  • LLPlayer语言学习播放器终极指南:从零到精通掌握AI学习工具
  • 2026年6月最新版合肥第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询
  • 2026澳洲本地留学移民机构口碑排行 附避坑指南及FAQ - 互联网科技品牌测评
  • 2026深圳同城搬家服务推荐:当日达、响应快、不加价的5家正规搬家机构 - 从来都是英雄出少年
  • 2026年6月最新版贺州第三方CMACNAS甲醛检测治理机构口碑名单:万清CMA检测中心等5家公司深度测评万清CMA检测中心TOP1推荐 - 一修哥咨询