在 cartopy 上定义墨卡托投影的纵向范围

Defining longitudinal extent for mercator projection on cartopy

我正在尝试绘制一些以矩阵形式存在的数据 e.g.temperature。此数据是区域性的,因此我不需要全球地图。

我有:

  1. 数据矩阵 (mxn)
  2. 定义纬度 (mx1) 和经度 (nx1) 的向量

我想使用带有墨卡托投影的 cartopy 绘制它。然而,墨卡托只允许我定义最小和最大纬度,而不是最小和最大经度。这最终给了我一大片土地。

Mercator(central_longitude=103.0,min_latitude=gridlat[0],max_latitude=gridlat[-1])

如何设置沿海地图的最小和最大经度? 最终,我只想绘制出我的数据,并在其上覆盖国家边界,就像使用 ncview 时的外观一样。

通常在选择投影时不设置地图的范围,稍后可以使用创建的坐标区的 set_extent 方法进行设置。事实上,cartopy 中的默认行为是使范围适合所绘制的数据,因此您想要的应该是使用正常墨卡托投影绘制绘图时发生的情况。以下是在地理坐标中明确设置范围的示例:

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

# Create Mercator projection with dateline in the middle:
ax = plt.axes(projection=ccrs.Mercator(central_longitude=180))
# Draw coastlines so we know where we are:
ax.coastlines()
# Set the map extent, making sure to specify the correct coordinate system
# for geographical coordinates:
ax.set_extent([90, 270, -40, 40], crs=ccrs.PlateCarree())
plt.show()