如何在Python中使用旋转坐标网格在Mollweide投影中绘制地图?

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

在Python中,我尝试在Mollweide投影中绘制全天空地图。我希望能够显示具有任意旋转坐标和坐标网格的地图。请参阅以下通用网格图像(在 IDL 中生成)进行说明:地图中心首先旋转到 -105 度经度,然后旋转到 +35 度纬度,网格线相应地进行变换。 enter image description here [通用网格图像]

有没有办法用Python实现这个?

我尝试过使用

matplotlib.pyplot
mpl_toolkits.Basemap
包或
cartopy
包。

虽然所有这些都提供了 Mollweide 投影中的绘图,并具有特定的定制功能,但它们都没有提供将 Mollweide 地图的中心旋转远离赤道平面的工具。

python rotation grid map-projections
1个回答
0
投票

您可以使用 cartopy 来执行此操作。这是一个入门代码。

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# Target case
pole_lat = 35
pole_lon = 0
cent_lon = -105
rotated_pole2 = ccrs.RotatedPole( pole_latitude = pole_lat, 
                                pole_longitude = pole_lon,
                                central_rotated_longitude = cent_lon)
# Create plot figure and axes
ax = plt.axes(projection=ccrs.Mollweide())
ax.set_global()

# Plot the graticule
ax.gridlines(crs=rotated_pole2, draw_labels=False, 
             xlocs=range(-180,180,30), 
             ylocs=range(-90,90,30)) #draw_labels=True NOT allowed

# Plot some texts at various locations
lonlats = [ [0,0, '(0,0)'], [0,45, '(0,45)'], [0,90, '(0,90)'],
             [-150,0, '(-150,0)'], [60,0, '(60,0)'], [90,0, '(90,0)']]
for ea in lonlats:
    ax.text(ea[0], ea[1], ea[2], fontsize=8, fontweight='ultralight', color="k", transform=rotated_pole2)

plt.show()

fig1

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