R:在银河系中以Mollweide投影绘制天空图

问题描述 投票:0回答:1

我需要在Mollweide投影(椭圆投影提供360°视角的椭圆投影,用于绘制夜空)中生成具有星座等特征的星图。我使用sf包在https://kimnewzealand.github.io/2019/02/21/celestial-maps/找到了一个配方,并将天空对象的默认EPSG:4326数据转换为Mollweide投影。

在某些时候,使用命令将数据转换为Mollweide投影:

constellation_lines_sf_trans<- st_transform(constellation_lines_sf_trans, crs = "+proj=moll")

按照链接中的描述沿线复制的结果图像看起来像:

Mollweide projection of the sky with constellations: equatorial coordinates

但是很好,坐标系是赤道的,基本上与地球上所有坐标系具有相同的旋转轴,例如WGS84(北极向上)。例如,此图上显示了银河系,以60度角移动。我们需要所谓的galactic坐标:这是与银河系平面重合的坐标平面。因此,这里的银河系只是椭圆轴的一条水平线。例如,在其他地方找到的解决方案似乎使用了相同的技术,但是此处未提供代码:

Mollweide projection of the sky in galactic coordinates

[这里银河系为水平线,北极位于左上角(表示为np;例如,在这里,您可以看到北极附近大熊/次要小熊星座的可辨认星座)。我将拍摄此图像,但是有一个盲点(显示天文台的盲区,该盲区无法到达天空中的该区域),因此我想重现此图像:星座+ Mollweide投影+星系的“银河”方向参考框架。

我们能够在R包中的各种坐标系之间进行转换。似乎大多数GIS工具都根据地球所需的旋转(北极向上)来使用各种与地球相关的坐标系和投影,这是GIS所需的大多数应用程序。问题是,是否有可能加载并转换为预定义的银河坐标系(或例如转换为黄道系),或者是否可以在脚本中通过手动转换星空数据即时执行此转换

r ggplot2 gis projection
1个回答
1
投票

编辑:实际上,在进一步研究之后,似乎所有归结为让您的投影进行旋转。这在我下面进一步提到的interactive example上的代码中也会发生。要使其以银河系中心为中心,您需要旋转[93.5949, 28.9362, -58.5988],它指定围绕每个球面轴的[lambda,phi,γ]旋转角度(以度为单位)。 (旋转时,不再需要将radec坐标转换为银河坐标。)

我对R中的映射了解不多,无法说出是否可以在投影上指定旋转,但是here's an amazing example使用d3.js显示了此过程(对于真正感兴趣的人,显示了在哪里角度来自)。如果不可能,下面的路线也许仍然可行。


我正在调查同一件事,可能发现了一些东西。我认为您首先需要将赤道ra(右升)和dec(赤纬)坐标转换为银河坐标。然后then应用一个(Mollweide)投影。我不确定这是否完全正确,因为我的情况略有不同,但这至少对我有用:

  • 数据集在赤道坐标中有radec行(在我的情况下以度为单位)
  • 使用euler程序包的astrolibR函数,计算银河经度gl和纬度gb(ps:您也可以使用glactc函数):
data$gl <- euler(data$ra, data$dec, select=1)$ao
data$gb <- euler(data$ra, data$dec, select=1)$bo
  • 接下来,使用这些新坐标,我应用Aitoff投影,它也是astrolibR包的一部分,以获取xy坐标:
data$x <- -aitoff(data$gl, data$gb)$x
data$y <- aitoff(data$gl, data$gb)$y

然后可以绘图

ggplot(data, aes(x, y)) + geom_point(shape=16, size = 0.1, alpha = 0.2) + coord_fixed()

((下面的图像基于我自己的观测数据集,“暗线”跟随黄道线,右下角的两个斑点是麦哲伦星云)我发现将其与this interactive map比较并将坐标设置为“银河”,以0,0为中心,然后尝试不同种类的投影很有用。Plotting observations in galactic coordinates

也许您可以尝试使用glgb坐标应用Mollweide投影?

© www.soinside.com 2019 - 2024. All rights reserved.