cartopy - 使用lon和lat的AlbersEqualArea限制区域

时间:2017-04-18 04:36:24

标签: python cartopy

我的数据是-100o - 30o lon和0o - 80o lat。

我想使用投影来显示此区域。

在我脑海中,我想展示一个这样的情节:

regional map

但是,当我按照以下方式尝试AlbersEqualArea投影时:

plt.figure(figsize=(5.12985642927, 3))
ax = plt.axes(projection=ccrs.AlbersEqualArea(central_longitude=-35, central_latitude=40, standard_parallels=(0, 80)))    
ax.set_extent([lon180[0], lon180[-1], lat[0], lat[-1]], ccrs.Geodetic())

我得到一张地图显示:

regional AEA map

显示我有数据的区域的最佳方法是什么?

干杯, 射线

2 个答案:

答案 0 :(得分:5)

如果你想要一个非矩形边界,你必须自己定义它。以下内容可能对您有用:

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

proj = ccrs.AlbersEqualArea(central_longitude=-35,
                            central_latitude=40,
                            standard_parallels=(0, 80))
ax = plt.axes(projection=proj)    
ax.set_extent([-100, 30, 0, 80], crs=ccrs.PlateCarree())
ax.coastlines()

# Make a boundary path in PlateCarree projection, I choose to start in
# the bottom left and go round anticlockwise, creating a boundary point
# every 1 degree so that the result is smooth:
vertices = [(lon, 0) for lon in range(-100, 31, 1)] + \
           [(lon, 80) for lon in range(30, -101, -1)]
boundary = mpath.Path(vertices)
ax.set_boundary(boundary, transform=ccrs.PlateCarree())

plt.show()

enter image description here

答案 1 :(得分:-1)

我想也许你需要添加AlbersEqualArea作为情节的变换,可能更像是this