Как сопоставить размер фигурки картошки с размером моего массива? (хочу сюжет в полном разрешении)

У меня есть массив размером 1648 x 2608 (из образа GOES-16, часть полного образа диска).

При использовании cartopy я не могу создать PNG размером 1648 x 2608 с размером моего массива.

Вместо этого он создает белое поле размером 1648 x 2608 со спутниковым изображением внутри (меньше, чем 1648 x 2608).

Без использования cartopy я могу легко получить PNG с полным разрешением 1648 x 2608 пикселей с помощью кода ниже:

dpi = 150
fig = plt.figure(figsize=(data1.shape[1]/float(dpi), data1.shape[0]/float(dpi)), dpi=dpi)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax = plt.axis('off')

img = plt.imshow(data1, vmin=0, vmax=1, origin='upper', cmap='gray')

plt.savefig('Test.png', pad_inches=0, dpi=dpi)

Вот результат, который я получаю: Полное разрешение (1648 x 2608) PNG без Cartopy

Однако при использовании cartopy я не получаю изображение в полном разрешении, как раньше:

# Globe parameters
semi_major = file1.variables['goes_imager_projection'].semi_major_axis
semi_minor = file1.variables['goes_imager_projection'].semi_minor_axis
globe = ccrs.Globe(semimajor_axis=semi_major, semiminor_axis=semi_minor)

# Define the Geostationary projection for GOES-16
geos  = ccrs.Geostationary(central_longitude=-75.0, satellite_height=35786023.0, globe=globe)

# Image extent
img_extent = (x.min(), x.max(), y.min(), y.max())

# Figure with the size of the array
dpi = 150
fig = plt.figure(figsize=(data1.shape[1]/float(dpi), data1.shape[0]/float(dpi)), dpi=dpi)

# Define the plot
ax = plt.axes(projection=geos)

# Image Extent
ax.set_extent(img_extent,crs=geos)

# Read a shapefile
shapefile = list(shpreader.Reader('ne_10m_admin_0_countries.shp').geometries())
ax.add_geometries(shapefile, ccrs.PlateCarree(), edgecolor='red',facecolor='none', linewidth=1.5)

# Add gridlines
ax.gridlines(color='white', alpha=0.5, linestyle='--', linewidth=0.5)

# Create the image
img = ax.imshow(data1, vmin=0, vmax=1, origin='upper', extent=img_extent, cmap='gray', transform=geos)

# Save the image
plt.savefig('Teste_Diego.png', pad_inches=0, dpi=dpi)

Вот результат, который я получаю с помощью cartopy: Изображение с разрешением 1648 x 2608 пикселей, однако с белой ограничивающей рамкой< /а>

Как я могу сохранить PNG с картографией с размером моего массива, чтобы получить график с полным разрешением?

Примечание. Я мог бы без проблем создать его с помощью Basemap, однако я пытаюсь перейти на Cartopy.

Спасибо!


person Diego Souza    schedule 27.08.2019    source источник


Ответы (1)


Для полноты картины, поскольку на этот вопрос был дан ответ в системе отслеживания проблем CartoPy, решение состоит в том, чтобы запросить Axes, который охватывает фигуру:

ax = plt.axes([0, 0, 1, 1], projection=geos)
person DopplerShift    schedule 27.08.2019