Visualisiere grib2 auf einer Karte mit Python (matplotlib)

Letztes Mal erklärte, wie eine Umgebung zum Betreiben von grib2-Dateien aus Python erstellt wird. Diesmal die gelesenen Daten. Ich werde die Methode der Visualisierung mit matplotlib + Grundkarte vorstellen. Ich werde Jupyter nicht besonders erklären, aber ich versuche es im Grunde auf Jupyter (ich denke, es ist in Ordnung, Python-Befehle wie gewohnt zu verwenden).

Installation

In Anaconda Umgebung

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

Sie können matplotlib und Basemap mit installieren. Der Ort von apt-get ändert sich je nach Umgebung. Ist dies nicht der Fall, wird libGL.so beim Importieren von matplotlib nicht verwendet. Im Fall von Docker ist es in Ordnung, wenn Sie "RUN" am Anfang jeder Zeile über der vorherigen Docker-Datei hinzufügen.

Dockerfile


...Fügen Sie Folgendes hinzu...
RUN apt-get -y install libgl-dev
RUN conda install matplotlib
RUB conda install basemap

grib2 Daten lesen

Verwenden Sie den zuletzt beschriebenen Pygrib, um die Grib-Daten zu lesen. Verwenden Sie das gleiche Beispiel wie beim letzten Mal.

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

Von hier aus werden wir in Python arbeiten. Wenn Sie mit Docker arbeiten, starten Sie den Container unten und starten Sie Python wie zuvor darin.

cd path_of_Dokcerfile
docker build -t pygrib_ubuntu .
docker run -it -v /somepath:/temp pygrib_ubuntu
import matplotlib
matplotlib.use('Agg') #Wenn auf dem Server keine x-Umgebung vorhanden ist, funktioniert matplotlib ohne diese nicht
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')

#Element, das durch die Auswahlmethode angegeben wird(forecastTime=0)Gibt ein Array übereinstimmender Elemente zurück.
# forecastTime=Es gibt mehrere Elemente von 0, aber den Anfang([0])Ist der Meeresoberflächen-Rehabilitationsdruck(mslp)Ist enthalten
grb = grbs.select(forecastTime=0)[0]

# lats,lons ist eine zweidimensionale Anordnung mit Breiten- und Längengraden
lats, lons = grb.latlons()

#Daten enthalten in(Rehabilitationsdruck auf der Meeresoberfläche)Mit einem zweidimensionalen ndarray
mslp = grb.values

Auf diese Weise konnten wir den Breiten- und Längengrad sowie die Daten an diesem Punkt (Rehabilitationsdruck der Meeresoberfläche) extrahieren, die für die Visualisierung aus dem Grib erforderlich sind.

Visualisierung

Als nächstes werde ich isobare Linien wie eine Wetterkarte zeichnen.

#Listen Sie die Intervalle auf, in denen isobare Linien in Ebenen gezeichnet werden
#Die Einheit von MSLP ist Pa. Wenn Sie also alle 2 hPa eine Linie zeichnen, zeichnen Sie alle 200 eine Linie.
levels = range(math.floor(mslp.min()/100)*100, math.ceil(mslp.max()/100)*100+1,200)

# lat,Konvertieren Sie lon in eine Dimension
#Aus irgendeinem Grund kann es nicht in zwei Dimensionen gezeichnet werden
flat_lats= np.ravel(lats)
flat_lons= np.ravel(lons)

fig = plt.figure()

#Erstellen Sie eine Karte. 4 Parameter geben den zu zeichnenden Bereich an
m = Basemap(llcrnrlat=lats.min(),urcrnrlat=lats.max(), llcrnrlon=lons.min(),urcrnrlon=lons.max())

#Zeichnen Sie isobare Linien
m.contour(flat_lons, flat_lats,mslp,latlon=True,tri=True,levels=levels)

#Zeichnen Sie die Küste
m.drawcoastlines() 

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

mslp.png

Das Bild wird so vervollständigt.

Die folgenden Warnungen werden zum Zeitpunkt der Ausgabe angezeigt, haben jedoch vorerst keine Auswirkungen darauf. Machen wir uns also keine Sorgen.

/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

Visualisiere grib2 auf einer Karte mit Python (matplotlib)
Folium: Visualisieren Sie Daten auf einer Karte mit Python
Kartenmietinformationen auf einer Karte mit Python
Python-Grafikhandbuch mit Matplotlib.
Ein Memo mit Python2.7 und Python3 in CentOS
Ich habe mit Python eine Hex-Map erstellt
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen
Visualisieren Sie Präfekturen mit vielen Routen nach Präfekturen auf einer Karte von Japan
Heatmap von Python + matplotlib
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
Visualisieren und verstehen Sie Japans regionales Netz auf einer Karte
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Zeichnen Sie gewaltsam so etwas wie ein Flussdiagramm mit Python, matplotlib
Hinweise zur Beschleunigung des Python-Codes mit Numba
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?
[Python] Weg zur Schlange (5) Spiele mit Matplotlib
Verwenden Sie matplotlib unter Ubuntu 12 und Python
Erstellen Sie ein Verzeichnis mit Python
Mathematik mit Python studieren: Zeichnen Sie mit matplotlib ein Sympy-Diagramm (Scipy-Diagramm)
[Python] Mit Scheiben umkehren! !! (Es gibt auch einen Kommentar zu Scheiben!)
Lassen Sie uns ein PRML-Diagramm mit Python, Numpy und matplotlib erstellen.
Erstellen einer Python-Umgebung auf einem Mac
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Erstellen Sie eine Plotanimation mit Python + Matplotlib
Bedienen Sie den Belegdrucker mit Python
Erstellen einer Python-Umgebung unter Ubuntu
Löse ABC166 A ~ D mit Python
Zeichne Japanisch mit matplotlib auf Ubuntu
Erstellen Sie eine virtuelle Umgebung mit Python!
Ich habe mit Python eine Lotterie gemacht.
Führen Sie Matplotlib auf einem Docker-Container aus
Visualisieren Sie Python-Paketabhängigkeiten mit graphviz
Erstellen Sie ein Empfehlungssystem mit Python
Erstellen Sie eine Python-Umgebung in Centos
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python
Hinweise zur Verwendung von rstrip mit Python.
Löse ABC167 A ~ C mit Python
Löse ABC158 A ~ C mit Python
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Erste Schritte mit Python 3.8 unter Windows
Erstellen Sie eine Python3-Umgebung unter CentOS7
Zeichne Riapnov Fractal mit Python, matplotlib
Wenn matplotlib nicht mit python2.7 funktioniert
[Python] Erbt eine Klasse mit Klassenvariablen
Führen Sie mit Python, matplotlib, einen logarithmischen Normalwahrscheinlichkeitsplot durch
Schreiben Sie ein gestapeltes Histogramm mit matplotlib
Zeichnen Sie einfach eine Karte mit matplotlib.basemap
Schreiben Sie ein Batch-Skript mit Python3.5 ~
[Memo] Tweet auf Twitter mit Python
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7