经纬度坐标转化为XYZ坐标的理解

本文探讨了经纬度坐标与XYZ笛卡尔坐标之间的转换方法,重点解析了在全景图研究中如何正确理解和应用坐标转换,包括角度测量和坐标对应关系。

前言

经纬度坐标和XYZ笛卡尔坐标的转换常常应用在有关全景图的研究方面,在看了几篇提案和论文后才理解了坐标的转换方法

正文

通过一张图来说明

按照我们直观的理解,会认为φ角是蓝色实线和y轴的夹角,θ角是XOZ平面的蓝色虚线和z轴的夹角。但实时上并不是这样。

我们先假设P=(φ,θ)对应为地理坐标中的经度和纬度,那么当P点位于球的顶端时,其纬度为90°;当P点位于球的赤道上时,其纬度应该为0°,也就是说,y轴其实是对应φ为90°的时候。(具体参照有图可更好的理解)

按照上面的结论,我们就可以写出下面的对应关系

与第一个图的坐标对应相同。至此我们就完成了经纬度坐标到XYZ坐标的转化。

 

 

 

 

### 将地理坐标转换为笛卡尔坐标系 对于将地理坐标经纬度度)转换为笛卡尔坐标系(XYZ),这一过程涉及到地球椭球模型的应用。由于地球并非完美的球体而是接近于旋转椭球体,因此在进行此类转换时需考虑特定的参考椭球参数。 #### 转换公式 设给定的地理坐标为经度 \( \lambda \),纬度 \( B \),以及大地 \( h \) ,对应的地心直角坐标 (X,Y,Z) 的计算方式如下: \[ X = (N+h)\cos{B}\cos{\lambda} \] \[ Y = (N+h)\cos{B}\sin{\lambda} \] \[ Z = [(1-e^2)N +h]\sin{B} \] 其中, - \( N=\frac{a}{\sqrt{1-e^{2}\sin ^{2}(B)}} \) 是卯酉圈曲率半径; - \( a \) 和 \( e \) 分别代表所选参考椭球的长轴长度及其偏心率[^3]。 上述公式适用于任何基于地心的地固坐标系统,在实际操作中应确保使用的椭球参数与目标区域相匹配。 #### Python 实现代码示例 下面提供了一个简单的Python函数来执行这种转换: ```python import math def geo_to_cartesian(lon, lat, alt, a=6378137.0, f_inv=298.257223563): """ Convert geographic coordinates to Cartesian XYZ. Parameters: lon(float): Longitude in degrees. lat(float): Latitude in degrees. alt(float): Height above ellipsoid in meters. a(float): Semi-major axis of the reference ellipsoid(default WGS84). f_inv(float): Inverse flattening of the reference ellipsoid(default WGS84). Returns: tuple: A tuple containing X, Y and Z values as floats. """ # Constants from parameters b = a * (f_inv - 1) / f_inv # Conversion factors deg_to_rad = math.pi / 180.0 sin_lat = math.sin(lat * deg_to_rad) cos_lat = math.cos(lat * deg_to_rad) # Prime vertical radius of curvature N = a / math.sqrt(1 - (1 - pow(b/a, 2)) * pow(sin_lat, 2)) # Calculate cartesian coordinates X = (N + alt) * cos_lat * math.cos(lon * deg_to_rad) Y = (N + alt) * cos_lat * math.sin(lon * deg_to_rad) Z = ((b*b)/(a*a)*N + alt) * sin_lat return X, Y, Z ``` 此段代码实现了从地理坐标到笛卡尔坐标的转换功能,并默认采用WGS84作为参考椭球体系下的参数设置。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值