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 所需的大多数应用程序。问题是是否可以加载并转换为预定义的银河坐标系(或者例如黄道系统),或者通过手动转换恒星数据在脚本中动态执行此转换
编辑:实际上,经过进一步的研究,看来这一切都归结为让你的投影进行旋转。这也发生在我下面提到的交互式示例的代码中。要使其成为银河中心的中心,您需要旋转[93.5949, 28.9362, -58.5988],它指定围绕每个球面轴的 [lambda, phi, gamma] 旋转角度(以度为单位)。(当您旋转时,无需再将您的ra或dec坐标转换为银河坐标。)
我对 R 中的映射了解不够,无法判断是否可以在投影上指定旋转,但这里有一个令人惊奇的示例,它使用 d3.js 展示了此过程(对于那些真正感兴趣的人,展示了角度的位置)来自)。如果不可能,也许下面的路线仍然可行。
我正在调查同样的事情,我可能已经发现了一些东西。我认为您首先需要将赤道ra(赤经)和dec(赤纬)坐标转换为银河坐标。然后应用 (Mollweide )投影。我不确定这是否完全正确,因为我的情况略有不同,但至少这对我有用:
ra&行dec(在我的例子中以度为单位)euler包的函数,我计算了银河系的经度和纬度(ps:你也可以使用该函数):glgbglactcdata$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)
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 投影?