2017-04-27 82 views
0

我想绘制一些以矩阵形式存在的数据例如温度。这些数据是区域性的,所以我不需要全球地图。为墨盒上的墨卡托投影定义纵向范围

我有:

  1. 矩阵数据(MXN)的
  2. 矢量限定纬度(MX1)和经度(NX1)

我想它使用cartopy用积墨卡托投影。但是,mercator只允许我定义最小和最大经度,而不是最小和最大离线。这最终给了我一大片土地。

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

我该如何去设置沿海地图的最小和最大经度?最终,我只想将我的数据与覆盖它的国家边界一起绘制出来,就像使用ncview看起来一样。

回答

2

在选择投影时,通常不会设置地图的范围,您可以稍后使用您创建的轴的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() 
+0

为什么投影定义为ax.set_extent ccrs.PlateCaree()?它应该是墨卡托吗? – user2118915

+1

不,它应该是您提供数值范围的坐标系。在这种情况下,我想在纬度/经度坐标中指定地图范围,因此“PlateCarree”是合适的选择。如果我使用“墨卡托”,我必须在墨卡托投影的原生坐标中指定范围。 – ajdawson

+0

@ user2118915如果它适合您,请“接受”答案。谢谢。 – pelson