墨卡托投影的奇怪结果

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

我想在普里兹湾画一个SIC分布,但我发现墨卡托投影的结果很奇怪。

我用

ccrs.SouthPolarStereo
ccrs.Mercator
都画了,想要的是前者的结果,但我需要用墨卡托投影画,请问如何修改?

fig = plt.figure(figsize=[10, 5])
ax1 = fig.add_subplot(1, 2, 1, projection=ccrs.SouthPolarStereo())
fig.subplots_adjust(bottom=0.05, top=0.95,
                    left=0.04, right=0.95, wspace=0.02)

# Limit the map to -60 degrees latitude and below.
ax1.set_extent([-180, 180, -90, -50], ccrs.PlateCarree())

ax1.add_feature(cfeature.LAND)
cf = ax1.contourf(lon, lat, SIC[0] ,levels=np.linspace(0,1,51),cmap=cmaps.WhiteBlueGreenYellowRed,
                    transform=ccrs.PlateCarree(),extend='neither',transform_first=True)
ax1.gridlines()

ax2 = fig.add_subplot(1, 2, 2, projection=ccrs.Mercator())
fig.subplots_adjust(bottom=0.05, top=0.95,
                    left=0.04, right=0.95, wspace=0.02)
# Limit the map to -60 degrees latitude and below.


cf = ax2.contourf(lon, lat, SIC[0] ,levels=np.linspace(0,1,51),cmap=cmaps.WhiteBlueGreenYellowRed,
                    transform=ccrs.PlateCarree(),extend='neither',transform_first=True)
ax2.add_feature(cfeature.LAND)
ax2.gridlines()

plt.show()

plots

python cartopy mercator
1个回答
0
投票

tl;dr:您必须在使用前清理数据集。

我认为您正在使用来自美国国家环境信息中心的海冰浓度 CDR 数据集。

我从那里下载了

seaice_conc_daily_sh_1980_v04r00.nc
并用你的代码得到了这个结果。
图形有点不同,但在经度 ±90° 上出现的是同样奇怪的红色直线。 Two Sea Ice Concentration data plotted map of Antartica, left one in south polar stereo, right one in Mercator. Right one have some weird straight red lines on it.

你能看到两张地图上都画着红色海岸线吗?
不幸的是,它们不是来自地图图像或单独的海岸线数据。它们作为预定义的标志值包含在您的数据集中,有意将其放置在有效数据范围之外。

来自 用户指南:NOAA/NSIDC 被动微波海冰浓度气候数据记录,版本 4

有效范围:0 到 1。 注意:字节值实际上存储在文件中从 0 到 100,但由于缩放因子属性 (scale_factor),大多数(但不是全部)netCDF 阅读器将其呈现为 0 到 1 范围内的值大多数 netCDF 读者都应用这个变量 0.01。标志值范围从 251 到 255。

使用

SIC[SIC > 1.0] = np.nan
从数据集中删除“非数据”后,新地图将如下所示。 Two Sea Ice Concentration data plotted map of Antartica, same as before, but red shoreline and red artifact line got removed.

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