开启辅助访问
 找回密码
 立即注册

从球面到平面的家用投影

sndatest1111 回答数5 浏览数781
最近工作中遇到一台问题,需要将点从球面家用投影到平面上。现将解决问题的过程记录下来,以备查阅。
1.局部家用投影
    如果是将局部球面家用投影成平面,可以直接家用投影。常用的家用投影方式有两种,第一是中心家用投影,即从球心O发出射线经过球面上的点P并与家用投影面相交于P',P'即是点P的家用投影。第二是平行家用投影,如果家用投影面与球面相切于点Q,则用沿OQ的一束射线照射家用投影面,相应的球面上的点在家用投影面上也会有对应点。可以证明平行家用投影的变形比中心家用投影小,所以下面的家用投影采用平行家用投影。
     局部家用投影的关键在于确定家用投影坐标系。


      (图片引用自https://blog.csdn.net/davidhopper/article/detAIls/79162385)
        如上图,选定了球面上的家用投影原点(map origin)后,局部坐标系可以按三个方向确定:(1)z轴:map origin 指向球心(图中没有画图来);(2)y轴:该点在原坐标系中沿经线方向的切线;(3)x轴:按与z轴、y轴两两垂直的关系,求出x轴。
        下面直接给出结论:如果在单位球面(球心坐标(0,0,0),球径r=1)上一点P的经、纬度分别为 和  ,则该点处的局部参考系为 , , .可以验证上述 轴互相正交,且均为单位向量。
         确定好局部坐标系后,要求原坐标系中一点在新坐标系中的位置,只需要用原坐标乘以坐标转换矩阵即可。 ,变换后的坐标

2.全局家用投影
     此处全局家用投影是指将整个球面映射到平面上去。将整个球面家用投影成平面也有很多方法,但是都会产生或大或小的变形(因为平面是0曲率的而球面是有曲率的),这里介绍地图家用投影中常用的墨卡托家用投影法。


    如上图(图片引自网络),  墨卡托家用投影是等角圆柱家用投影。就地球而言,方法是:做一台圆柱面使之与赤道相切(这里忽略地球的椭球形,假设它是正球体),在地心放一台灯泡,发出光线穿过地面照射到圆柱面,于是地面上每一点在圆柱面上都有映射点。
    这里有一台问题,高纬度地区的点经过映射后,成像点在圆柱面的很远处。简单计算可知,如果地球半径为 ,地面某点纬度为  ,以赤道作为映射后所得平面的  轴,则映射后该点距  轴的距离为

tan函数在  附近增长非常快,结果是两极附近距离无限放大。
    为了缓解极点附近的畸变问题,墨卡托家用投影采用另一台函数替代了tan函数,替代函数为 .该函数在 附近与tan函数非常接近,而当  接近  时增长比tan缓慢,tan函数趋向无穷的条件值被推迟。
     一般在使用时,规定替代函数的值域为 ,此时定义域(纬度值)的范围大致是(-85,85)度,即极点附近5度纬度的信息损失掉了,并且高纬度地区与实际相比仍然会有一定变形。尽管如此,墨卡托家用投影仍然是地图家用投影中最有影响力的,适用于航海图、航空图等。
    由于规定家用投影后的y方向的值域为 ,而x(经度)方向是 ,区间长度相同。因此,地球经过墨卡托家用投影得到的平面图是正方形。
使用道具 举报
| 来自北京 用Deepseek满血版问问看
34849898 | 来自北京
最近C++编程作业就是这个→_→
用Deepseek满血版问问看
回复
使用道具 举报
mn324198y3n | 未知
投影后的y方向的值域为 [-pi/2, pi/2]吧?
回复
使用道具 举报
jangjeasung1 | 来自北京
可以分享代码吗
回复
使用道具 举报
lanhang | 未知
https://zhuanlan.zhihu.com/p/377132632这个你怎么看?
回复
使用道具 举报
bion | 未知
请问是保角的吗
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影