ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

healpy初步教程:绘制Mollweide投影图

healpy初步教程:绘制Mollweide投影图 文章目录简介Mollweide 投影图绘图代码简介healpy是Python的天图数据处理模块其核心是HEALPixHierarchical Equal Area isoLatitude Pixelization算法。HEALPix是一种均匀像素化算法可以将连续的天空离散成均匀的像素网格。Healpy支持conda和pip安装但由于healpy 包含 C 扩展代码pip安装的时候需要编译可能会失败所以更推荐用conda安装因为conda会自动下载预编译的二进制包。conda install -c conda-forge healpy安装完成后就可以在python中import了。Mollweide 投影图基于healpy可以很便捷地绘制出下面这样的Mollweide 投影图。Mollweide是德国数学家他在1805年的时候发明了这种等面积伪圆柱投影其特点是将整个天球以椭圆形的形式展现长轴赤道是短轴中央经线的 2 倍。为了保持面积不变其比例尺仅在南北纬 40°44’纬线上是真实的。具体来说对于给定的经度λ \lambdaλ和纬度ϕ \phiϕ投影坐标( x , y ) (x,y)(x,y)为x 2 2 π ( λ − λ 0 ) cos ⁡ θ y 2 sin ⁡ θ \begin{aligned} x\frac{2\sqrt{2}}{\pi}(\lambda-\lambda_0)\cos\theta\\ y\sqrt{2}\sin\theta \end{aligned}xy​π22​​(λ−λ0​)cosθ2​sinθ​式中λ 0 \lambda_0λ0​是中央经线θ \thetaθ是通过迭代求解的辅助角满足2 θ sin ⁡ ( 2 θ ) π sin ⁡ ϕ 2\theta\sin(2\theta)\pi\sin\phi2θsin(2θ)πsinϕ。绘图代码绘图代码如下importmatplotlib.pyplotasplt plt.rcParams[font.sans-serif]Times New Romanimportnumpyasnpimporthealpyashp NSIDE32NPIXhp.nside2npix(NSIDE)mnp.arange(NPIX)hp.mollview(m,titleMollview image RING)hp.graticule()plt.show()【NSIDE】是HEALPix算法中的分辨率参数必须是2的整数幂NSIDE越大像素越多分辨率越高。【nside2npix】将NSIDE转换为总像素数换算关系为N P I X 12 × N S I D E 2 \mathrm{NPIX}12\times\mathrm{NSIDE}^2NPIX12×NSIDE2根据代码中的设置其结果为12 × 32 2 12288 12\times32^21228812×32212288对应图像中的伪彩映射0 00到12287 1228712287。【mollview】使用 Mollweide 投影将球面数据展开为 2D 平面图。这步有个理解上的难点即根据我们对arange的理解m不过是个一维数组怎么最后就变成二维图了这里就涉及到mollview函数的映射规则具体来说就是遍历已经画好的mollview空白图并根据图上的坐标向输入数组中查找对应的值。【graticule】在图上叠加经纬度网格线方便定位球面上的坐标。
返回列表