查看原文
其他

【技术】坐标转换源码分享,你能看懂吗?

测绘之家 2022-07-17


大地坐标转换为直角坐标

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 大地坐标转换为直角坐标{ //参心大地坐标转换为参心直角坐标(BLH-->XYZ) class Program { static void Main(string[] args){ //初始化变量 double B, L, H, X, Y, Z; B = Convert.ToDouble(Console.ReadLine()); L = Convert.ToDouble(Console.ReadLine()); H = Convert.ToDouble(Console.ReadLine()); //转化 BLH2XYZ(B, L, H, out X, out Y, out Z); //输出计算结果 Console.WriteLine("X={0,12:F3},Y={1,12:F3},Z={0,12:F3}", X, Y, Z); Console.ReadKey(); } /// <summary> /// 参心大地坐标转换为参心空间直角坐标系(BLH-->XYZ) /// </summary> /// <param name="B">纬度(以度为单位)</param> /// <param name="L">经度(以度为单位)</param> /// <param name="H">大地高(以米为单位)</param> /// <param name="X">X分量(以米为单位)</param> /// <param name="Y">X分量(以米为单位)</param> /// <param name="Z">X分量(以米为单位)</param> private static void BLH2XYZ(double B, double L, double H, out double X, out double Y, out double Z){ //将角度转换为弧度 double deg2rad = Math.PI / 180; B = B * deg2rad; L = L * deg2rad; //计算相关参数 double e2 = GetE2(); double N = GetN(B); //转化计算 X = (N + H) * Math.Cos(B) * Math.Cos(L); Y = (N + H) * Math.Cos(B) * Math.Sin(L); Z = (N * (1 - e2) + H) * Math.Sin(B); } /// <summary> /// 计算第一偏心率的平方 /// </summary> /// <returns>第一偏心率的平方</returns> private static double GetE2(){ double a = 6378137; double f = 1 / 298.257222101; double e2 = 2 * f - f * f; return e2; } /// <summary> /// 计算卯酉圈曲率半径 /// </summary> /// <param name="B">纬度(以弧度为单位)</param> /// <returns>椭球面卯酉圈的曲率半径</returns> private static double GetN(double B){ double e2 = GetE2(); double a = 6378137; double sinB = Math.Sin(B); double N = a / Math.Sqrt(1 - e2 * sinB * sinB); return N; } }}


-----END-----


社群交流 / 原创投稿 / 商务合作

(请添加下方小助手微信)

来源:测绘程序设计 转自:GeomaticsCenter

推荐阅读

【吐槽】工程人的那些难过瞬间,看完你哭了吗??

【技术】从项目合同签订到成果交付,航测各阶段详细流程你了解吗?

【视频】一个完整MapGIS转ArcGIS列子

【论文】测绘在精准扶贫中的应用及实践

年会专题 | 张周平:新型基础测绘与实景三维西安建设探索与思考




推荐关注




温馨提示:近期,微信公众号信息流改版。每个用户可以设置 常读订阅号,这些订阅号将以大卡片的形式展示。因此,如果不想错过“测绘之家”的文章,你一定要进行以下操作:进入“测绘之家”公众号 → 点击右上角的 ··· 菜单 → 选择设为星标


↓↓↓点击下方“阅读原文”查看更多精彩内容...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存