Я пытаюсь построить квадратную сетку данных с одинаковым интервалом (в широте и долготе), используя cartopy, matplotlib и imshow. Данные пересекают линию дат, и у меня возникли проблемы с правильной работой карты.
Вот пример моей проблемы:
import numpy as np
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
lat = np.arange(6000)*0.02 + (-59.99)
lon = np.arange(6000)*0.02 + (85.01)
dat = np.reshape(np.arange(6000*6000),[6000,6000])
tran = ccrs.PlateCarree()
proj = tran
plt.figure(figsize=(8,8))
ax = plt.axes(projection=proj)
print([lon[0],lon[-1],lat[0],lat[-1]])
ax.imshow(dat, extent=[lon[0],lon[-1],lat[0],lat[-1]],transform=tran,interpolation='nearest')
ax.coastlines(resolution='50m', color='black', linewidth=2)
ax.gridlines(crs=proj,draw_labels=True)
plt.show()
tran = ccrs.PlateCarree(central_longitude=180)
proj = tran
plt.figure(figsize=(8,8))
ax = plt.axes(projection=proj)
print([lon[0]-180,lon[-1]-180,lat[0],lat[-1]])
ax.imshow(dat, extent=[lon[0]-180,lon[-1]-180,lat[0],lat[-1]],transform=tran,interpolation='nearest')
ax.coastlines(resolution='50m', color='black', linewidth=2)
ax.gridlines(crs=tran,draw_labels=True)
plt.show()
Первый график дает это изображение с обрывом на 180E:
Второй способ устраняет проблему с картой, но теперь отметки сетки неверны:
Думаю, я пробовал перепроецировать (где tran! = Proj), но, похоже, он либо зависал, либо занимал слишком много времени.
Я в основном хочу нижнее изображение, но с соответствующими ярлыками. У меня будет больше геолокационных данных для перекрытия, поэтому я хотел бы сделать это правильно, а не то, что сейчас кажется хакерским.
ax.set_xticklabels
? - person Andrey Sobolev   schedule 16.11.2017