大地坐标与地心坐标相互转换 (WGS84,西安80,北京54, China200)C++

Date 2019/04/09 Add by WJB

我们先了解一下大地坐标系。

地心坐标:地心坐标系(geocentric coordinate system )以地球质心为原点建立的空间直角坐标系,或以球心与地球质心重合的地球椭球面为基准面所建立的大地坐标系;以地球质心(总椭球的几何中心)为原点的大地坐标系。通常分为地心空间直角坐标系(以x,y,z为其坐标元素)。

大地坐标系:大地坐标(Geodetic coordinate)是大地测量中以参考椭球面为基准面的坐标,地面点P的位置用大地经度L、大地纬度B和大地高H表示。大地坐标多应用于大地测量学,测绘学等。

参考椭球体是一个数学上定义的地球表面,它近似于大地水准面。 由于其相对简单,参考椭球是大地控制网计算和显示点坐标(如纬度经度海拔)的首选的地球表面的几何模型。通常所说地球的形状和大小,实际上就是以参考椭球体的长半轴、短半轴和扁率来表示的。

常见椭球体:

北京54:克拉索夫椭球体;西安80:1975国际椭球体,China2000:2000中国大地坐标系。

坐标转换公式:

 

代码:地心转大地

#include<math.h>

double targetH, targetB, targetL;
 void XYZtoBLH(double X, double Y, double Z, double aAxis, double bAxis) {
	double e1 = (pow(aAxis, 2) - pow(bAxis, 2)) / pow(aAxis, 2);
	double e2 = (pow(aAxis, 2) - pow(bAxis, 2)) / pow(bAxis, 2);

	double S = sqrt(pow(X, 2) + pow(Y, 2));
	double cosL = X / S;
	double B = 0;
	double L = 0;

	L = acos(cosL);
	L =fabs(L);

	double tanB = Z / S;
	B = atan(tanB);
	double c = aAxis * aAxis / bAxis;
	double preB0 = 0.0;
	double ll = 0.0;
	double N = 0.0;
	//迭代计算纬度
	do {
		preB0 = B;
		ll =pow(cos(B), 2) * e2;
		N = c / sqrt(1 + ll);

		tanB = (Z + N * e1 *sin(B)) / S;
		B = atan(tanB);
	} while (fabs(preB0 - B) >= 0.0000000001);

	ll = pow(cos(B), 2) * e2;
	N = c /sqrt(1 + ll);

	targetH = s /cos(B) - N * (1 - e1);
	targetB = B * 180 / M_PI;
	targetL = L * 180 / M_PI;
}

代码:地心坐标转大地坐标

 double targetX, targetY, targetZ;
 void BLHtoXYZ(double B, double L, double H, double aAxis, double bAxis) {
	 double dblD2R = M_PI / 180;
	 double e1 = sqrt(pow(aAxis, 2) - pow(bAxis, 2)) / aAxis;

	 double N = aAxis / sqrt(1.0 - pow(e1, 2) * pow(sin(B * dblD2R), 2));
	 targetX = (N + H) * cos(B * dblD2R) * cos(L * dblD2R);
	 targetY = (N + H) * cos(B * dblD2R) * sin(L * dblD2R);
	 targetZ = (N * (1.0 - pow(e1, 2)) + H) * sin(B * dblD2R);
 }

 

 

 

 

<think>好的,用户需要寻找晶晨(Amlogic)芯片相关的线刷工具,包括下载和使用教程以及固件刷新步骤。首先,我需要整理提供的引用信息,看看有哪些相关资源。 引用[1]、[3]、[4]都提到了晶晨的固件刷新工具,特别是Amlogic USB Burning Tool,版本v2.2。引用[2]提到了Armbian固件的GitHub仓库,可能和刷机步骤有关。引用[5]虽然关于手机CPU,但可能芯片信息相关,但可能用处不大。 用户需求明确是下载工具、使用教程和固件刷新步骤。根据引用,首先需要推荐正确的工具,即Amlogic USB Burning Tool,并提供下载链接。不过引用中没有直接给出下载链接,可能需要指导用户到官网或可靠来源下载,但引用[3]提到使用的版本是v2.2,引用[4]提到工具让烧录快捷,所以需要指出版本和获取方式。 然后,使用教程方面,引用[1]、[3]详细描述了步骤,比如取消右侧选项,短接C125,连接USB线等。需要将这些步骤整理成清晰的流程,包括准备工具、安装驱动、配置软件、连接设备、开始刷机等部分。 固件方面,引用[1]提到安卓6.0固件,引用[2]是Armbian固件,引用[3]是小米盒子的IMG固件包。需要说明不同固件的来源,比如GitHub或官方渠道,并提醒用户选择适合自己设备的固件。 同时,需要注意用户可能遇到的问题,比如驱动安装失败、短接点找不到、刷机失败等,根据引用中的信息提供解决方法,比如更换USB口,使用正确短接点,检查固件兼容性等。 最后,生成相关问题,可能涉及工具版本差异、固件选择、短接方法、救砖方法等,确保覆盖用户可能进一步询问的方向。 需要确保回答结构清晰,分步骤说明,引用来源正确标注,比如引用[1]、[3]、[4]对应不同的步骤部分。同时,提醒用户注意备份数据,避免擦除key等风险操作。</think>### Amlogic晶晨线刷工具下载使用教程 #### 一、线刷工具下载 晶晨芯片设备常用**Amlogic USB Burning Tool**进行固件烧录。根据引用信息,推荐以下版本和获取方式: - **工具版本**:v2.2(稳定版,支持擦除Flash和密钥操作)[^3] - **下载渠道**: 1. 官方或第三方开发者社区(如XDA、GitHub) 2. 部分固件包自带工具(如安卓6.0固件包)[^1] 3. 通过搜索引擎查找"Amlogic USB Burning Tool v2.2"(注意安全验证) #### 二、使用教程(以小米盒子3为例) 1. **准备工作**: - USB双公头线(可自制:剪断两根USB线,按颜色对接线芯)[^3] - 设备拆机工具(用于短接触点) - 固件文件(.img格式,需匹配设备型号) 2. **驱动安装**: - 首次运行烧录工具时自动安装驱动 - 若连接失败,尝试更换USB接口或手动安装`WorldCup Device`驱动 3. **软件配置**: ```python # 操作流程伪代码 打开Amlogic USB Burning Tool → 文件→导入固件 → 设置→勾选"擦除所有(包括KEY)"[^3] ``` - 右侧选项说明: - 取消勾选"覆盖DDR/UBOOT"(避免变砖) - 必须勾选"擦除Flash"以确保完全初始化 4. **设备连接**: - 拆机后短接**C125触点**(部分机型为CLK或GND触点) - 保持短接状态插入USB线(靠近网口的USB口优先)[^1] - 通电后工具显示"连接成功"(若失败需检查短接点) 5. **开始刷机**: - 点击"开始"按钮,进度条达到100%后先点"停止"再拔线 - 首次启动可能需5-10分钟初始化 #### 三、固件获取建议 | 固件类型 | 来源渠道 | 适用场景 | |----------------|---------------------------|-------------------| | 安卓TV系统 | 官方固件/开发者修改版 | 日常使用 | | Armbian | GitHub开源仓库[^2] | Linux开发/服务器 | | 救砖专用包 | 设备对应论坛 | 修复启动故障 | #### 四、常见问题解决 1. **连接超时**: - 尝试不同USB端口(建议使用主板原生USB3.0接口) - 检查短接点是否准确(参考设备拆机图) 2. **密钥验证失败**: - 在工具设置中开启"允许擦除KEY"选项[^3] - 使用对应品牌的特殊固件(如小米盒子专用包) 3. **刷机后无法启动**: - 确认固件芯片型号完全匹配(如S905X/S912差异) - 尝试擦除bootloader后重新烧录[^4]
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值