Как представить скалярные переменные на географической карте в Jupyter Notebook - PullRequest
1 голос
/ 02 мая 2019

Я представляю некоторые географические данные в записной книжке Jupyter: температуру, высоту океанской волны и т. Д. У меня есть несколько массивов, которые имеют широту, долготу и значение для этих переменных.Я хотел бы отобразить эти переменные на географической карте, желательно с помощью ipyleaflet (потому что это то, что я уже использую).Я пытаюсь получить результат, аналогичный тепловой карте.

Я пытался использовать тепловую карту ipyleaflet, но мне кажется, что она предназначена для представления агрегации точек, а не скалярных равномерных массивов, потому что я не могу заставить ее правильно показывать результаты.Я думаю, что ipyleaflet может не иметь функции для представления данных такого типа, но кажется странным, поскольку у него очень хорошая функция скорости для представления векторных переменных.

Единственный способ, которым я могу придумать, это создатьизображение с помощью matplotlib, а затем добавить его на карту в слое изображения, но я чувствую, что это неправильный способ сделать это.

1 Ответ

1 голос
/ 02 мая 2019

Для представления тепловой карты я бы рекомендовал использовать Cartopy в сочетании с Matplotlib.Вот готовый скрипт, который я сделал для проекции на мир с береговой линией:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.util import add_cyclic_point


# Set x y z variables
x = longitude_data
y = latitude_data
z = heat_map_data

# Set up figure and projection
z, x = add_cyclic_point(z, coord=x) 
fig = plt.figure()
ax = fig.add_subplot(1,1,1, projection=ccrs.PlateCarree() )

# Set data range and colourmap
levels = np.arange(min,max,steps) 
plt.contourf(x, y, z,levels = levels,transform=ccrs.PlateCarree(),cmap="rainbow")

# Set axes, extent (world) and labels 
ax.set_xticks(np.linspace(-180,180,num=7), crs=ccrs.PlateCarree()) 
ax.set_yticks(np.linspace(-60,60,num=5), crs=ccrs.PlateCarree())
ax.add_feature(cfeature.COASTLINE) #Add coastline
ax.set_global()
ax.set_title('Heatmap')
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')

# Add colorbar 
plt.colorbar(ax=ax,shrink=0.7,orientation="vertical")

fig.show()

С документацией Cartopy и Matplotlib вы теперь сможете создавать несколько карт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...