Visualiser grib2 sur une carte avec python (matplotlib)

Dernière fois a expliqué comment créer un environnement pour faire fonctionner les fichiers grib2 à partir de python. Cette fois, les données lues. Je vais vous présenter la méthode de visualisation avec matplotlib + basemap. Je n'expliquerai pas Jupyter en particulier, mais j'essaye essentiellement sur Jupyter (je pense qu'il est normal d'utiliser les commandes python comme d'habitude).

Installation

Dans l'environnement Anaconda

apt-get -y install libgl-dev
conda install matplotlib
conda install basemap

Vous pouvez installer matplotlib et Basemap avec. La place d'apt-get change en fonction de l'environnement, mais si vous ne l'avez pas, on vous dira que libGL.so n'existe pas lors de l'importation de matplotlib. Dans le cas du docker, c'est OK si vous ajoutez RUN au début de chaque ligne ci-dessus au Dockerfile précédent.

Dockerfile


...Ajoutez ce qui suit...
RUN apt-get -y install libgl-dev
RUN conda install matplotlib
RUB conda install basemap

lecture des données grib2

Utilisez le pygrib décrit la dernière fois pour lire les données grib. Utilisez le même échantillon que la dernière fois.

wget -P somepath/ http://database.rish.kyoto-u.ac.jp/arch/jmadata/data/gpv/original/2017/01/02/Z__C_RJTD_20170102000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin

À partir de là, nous travaillerons avec python. Lorsque vous travaillez avec docker, démarrez le conteneur ci-dessous et démarrez python comme auparavant.

cd path_of_Dokcerfile
docker build -t pygrib_ubuntu .
docker run -it -v /somepath:/temp pygrib_ubuntu
import matplotlib
matplotlib.use('Agg') #S'il n'y a pas d'environnement x sur le serveur, matplotlib ne fonctionnera pas sans cela
import pygrib
import matplotlib.pyplot as plt
import numpy as np
import math
from mpl_toolkits.basemap import Basemap


grbs = pygrib.open('/temp/Z__C_RJTD_20170102000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin')

#Élément spécifié par la méthode de sélection(forecastTime=0)Renvoie un tableau d'éléments qui correspondent.
# forecastTime=Il y a plusieurs éléments de 0, mais le début([0])La pression de réhabilitation de la surface de la mer(mslp)Est inclus
grb = grbs.select(forecastTime=0)[0]

# lats,lons est un tableau à deux dimensions avec latitude et longitude
lats, lons = grb.latlons()

#Données contenues dans(Pression de réhabilitation de la surface de la mer)Avec un ndarray bidimensionnel
mslp = grb.values

Avec cela, nous avons pu extraire la latitude et la longitude et les données à ce point (pression de réhabilitation de la surface de la mer) nécessaires pour la visualisation à partir du grib.

Visualisation

Ensuite, je dessinerai des lignes isobares comme une carte météo.

#Énumérer les intervalles auxquels les lignes isobares sont dessinées en niveaux
#L'unité de MSLP est Pa, donc si vous tracez une ligne tous les 2hPa, vous tracerez une ligne tous les 200.
levels = range(math.floor(mslp.min()/100)*100, math.ceil(mslp.max()/100)*100+1,200)

# lat,Convertir le sol en une dimension
#Pour une raison quelconque, il ne peut pas être dessiné en deux dimensions
flat_lats= np.ravel(lats)
flat_lons= np.ravel(lons)

fig = plt.figure()

#Créez une carte. 4 paramètres spécifient la plage à dessiner
m = Basemap(llcrnrlat=lats.min(),urcrnrlat=lats.max(), llcrnrlon=lons.min(),urcrnrlon=lons.max())

#Tracer des lignes isobares
m.contour(flat_lons, flat_lats,mslp,latlon=True,tri=True,levels=levels)

#Dessinez le littoral
m.drawcoastlines() 

fig.savefig('/temp/mslp.png')

mslp.png

L'image est terminée comme ça.

Les avertissements suivants apparaîtront au moment de la sortie, mais pour le moment, cela ne l'affectera pas, alors ne nous en inquiétons pas.

/root/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/site-packages/mpl_toolkits/basemap/__init__.py:3505: MatplotlibDeprecationWarning: The ishold function was deprecated in version 2.0.

  b = ax.ishold()

/root/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/site-packages/mpl_toolkits/basemap/__init__.py:3572: MatplotlibDeprecationWarning: axes.hold is deprecated.

    See the API Changes document (http://matplotlib.org/api/api_changes.html)

    for more details.

  ax.hold(b)

Recommended Posts

Visualiser grib2 sur une carte avec python (matplotlib)
Folium: Visualisez les données sur une carte avec Python
Carte des informations de location sur une carte avec python
Manuel de graphisme Python avec Matplotlib.
Un mémo contenant Python2.7 et Python3 dans CentOS
J'ai fait une carte hexadécimale avec Python
Essayez de dessiner une carte avec python + cartopy 0.18.0
Visualisez les préfectures avec de nombreux itinéraires par préfecture sur une carte du Japon
Carte thermique par Python + matplotlib
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Visualisez et comprenez le maillage régional du Japon sur une carte
Faire un point d'arrêt sur la couche c avec python
J'ai créé un environnement Python3 sur Ubuntu avec direnv.
Dessinez de force quelque chose comme un organigramme avec Python, matplotlib
Remarques sur l'accélération du code Python avec Numba
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
[Python] Road to the Serpent (5) Jouez avec Matplotlib
Utilisez matplotlib sur Ubuntu 12 et Python
Créer un répertoire avec python
Étudier les mathématiques avec Python: dessiner un graphe sympy (scipy) avec matplotlib
[python] Inversez avec des tranches! !! (Il y a aussi un commentaire sur les tranches!)
Créons un diagramme PRML avec Python, Numpy et matplotlib.
Construire un environnement Python sur Mac
[Python] Qu'est-ce qu'une instruction with?
Résoudre ABC163 A ~ C avec Python
Créer une animation de tracé avec Python + Matplotlib
Faites fonctionner l'imprimante de reçus avec python
Construire un environnement Python sur Ubuntu
Résoudre ABC166 A ~ D avec Python
Dessinez le japonais avec matplotlib sur Ubuntu
Créez un environnement virtuel avec Python!
J'ai fait une loterie avec Python.
Exécutez Matplotlib sur un conteneur Docker
Visualisez les dépendances des packages python avec graphviz
Créer un système de recommandation avec python
Créer un environnement python dans centos
[Python] Générer un mot de passe avec Slackbot
Résoudre ABC162 A ~ C avec Python
Notes sur l'utilisation de rstrip avec python.
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Faisons un graphe avec python! !!
Premiers pas avec Python 3.8 sous Windows
Créer un environnement python3 sur CentOS7
Dessinez Riapnov Fractal avec Python, matplotlib
Quand matplotlib ne fonctionne pas avec python2.7
[Python] Hériter d'une classe avec des variables de classe
Effectuer un tracé de probabilité normale logarithmique avec Python, matplotlib
Écrire un histogramme empilé avec matplotlib
Dessinez facilement une carte avec matplotlib.basemap
Ecrire un script batch avec Python3.5 ~
[Memo] Tweet sur Twitter avec Python
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Notez ce que vous avez fait pour utiliser Flycheck avec Python
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7