R:在银河坐标系中以莫尔韦德投影绘制天空图

ast*_*rsk 1 gis r projection ggplot2

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

在某个阶段,使用以下命令将数据转换为 Mollweide 投影:

constellation_lines_sf_trans<- st_transform(constellation_lines_sf_trans, crs = "+proj=moll")
Run Code Online (Sandbox Code Playgroud)

生成的图像按照链接中所述的方式复制,如下所示:

天空与星座的莫尔韦德投影:赤道坐标

不过没关系,坐标系是赤道的,即基本上与地球上所有坐标系具有相同的旋转轴,例如WGS84(北极向上)。例如,该图显示了银河系,其角度为 60 度。我们需要所谓的银河坐标:这是与我们银河系平面重合的坐标平面。所以,这里的银河只是椭圆轴的一条水平线。例如,在其他地方找到的解决方案似乎使用相同的技术,但那里没有给出代码:

银河系坐标系中天空的莫尔韦德投影

这里银河系是一条水平线,北极位于左上角(记为np;例如,这里可以看到北极周围扭曲的可识别的大熊座/小熊座)。我会拍摄这张图像,但有一个盲点(显示天文台的盲区,无法到达天空中的这个区域),所以我想重现这张图像:星座+莫尔韦德投影+银河系的方向参考范围。

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

nad*_*ieh 5

编辑:实际上,经过进一步的研究,看来这一切都归结为让你的投影进行旋转。这也发生在我下面提到的交互式示例的代码中。要使其成为银河中心的中心,您需要旋转[93.5949, 28.9362, -58.5988],它指定围绕每个球面轴的 [lambda, phi, gamma] 旋转角度(以度为单位)。(当您旋转时,无需再将您的ra或dec坐标转换为银河坐标。)

我对 R 中的映射了解不够,无法判断是否可以在投影上指定旋转,但这里有一个令人惊奇的示例,它使用 d3.js 展示了此过程(对于那些真正感兴趣的人,展示了角度的位置)来自)。如果不可能,也许下面的路线仍然可行。


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

  • 数据集在赤道坐标中有ra&行dec(在我的例子中以度为单位)
  • 使用astrolibReuler包的函数,我计算了银河系的经度和纬度(ps:你也可以使用该函数):glgbglactc
data$gl <- euler(data$ra, data$dec, select=1)$ao
data$gb <- euler(data$ra, data$dec, select=1)$bo
Run Code Online (Sandbox Code Playgroud)
  • 接下来,使用这些新坐标,我应用Aitoff投影(也是astrolibR包的一部分)来获取x坐标y:
data$x <- -aitoff(data$gl, data$gb)$x
data$y <- aitoff(data$gl, data$gb)$y
Run Code Online (Sandbox Code Playgroud)

然后我可以绘制

ggplot(data, aes(x, y)) + geom_point(shape=16, size = 0.1, alpha = 0.2) + coord_fixed()
Run Code Online (Sandbox Code Playgroud)

(下图基于我自己的观测数据集,“深色线”遵循黄道线,右下角的两个斑点是大麦哲伦星云)我发现与此交互式地图进行比较很有用将坐标设置为“银河”,以 0,0 为中心,然后尝试不同类型的投影。 在银河系坐标中绘制观测结果

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