Bereiten Sie eine Umgebung zum Berühren von Dateien im Grib2-Format mit Python vor (Docker Edition).

Kürzlich habe ich einige Artikel gesehen, in denen von der Meteorologischen Agentur veröffentlichte Amedas-Daten als Beispieldaten für maschinelles Lernen verwendet werden. Andererseits gibt es als Oberflächenprognosedaten, die von der Meteorologischen Agentur veröffentlicht wurden, die Ergebnisse numerischer Prognosesimulationen wie GSM und MSM, aber ich habe noch nie einen Artikel gesehen, der diese Daten verwendet. In diesem Artikel werde ich pygrib vorstellen, mit dem Python das grib2-Format verarbeiten kann, eines der Formate für numerische Prognosedaten wie GSM.

Numerische Vorhersage und grib2

Numerische Vorhersagen spielen eine wichtige Rolle in der modernen Wettervorhersagetechnologie. Was ist eine numerische Prognose? Laut Meteorological Agency

Die numerische Vorhersage ist eine Methode zur Vorhersage zukünftiger atmosphärischer Bedingungen durch Berechnung zeitlicher Änderungen wie Wind und Temperatur mit einem Computer unter Verwendung physikalischer Gleichungen.

Kurz gesagt, es ist eine Technologie, die das Wetter vorhersagt, indem sie den Zustand der Erde mit einem Computer simuliert. Am Standort von Wettervorhersagen denke ich, dass Vorhersagen häufig erstellt werden, indem diese numerischen Vorhersagedaten mit hinzugefügter Nachbearbeitung verwendet werden oder indem aus mehreren numerischen Vorhersageergebnissen die plausibelste ausgewählt wird. Ich werde.

Es gibt verschiedene Arten von Simulationsmethoden, aber die meisten Simulationsergebnisse werden in Form von GPV (Grid Point Value) bereitgestellt. GPV unterteilt die Erde in regelmäßigen Abständen in Gitter, und Daten wie Temperatur und Windgeschwindigkeit werden in jedem Gitter gespeichert. [^ Nachbearbeitung] Bei der Wettervorhersage werden häufig GPV-Daten verarbeitet, in denen mehrere gitterartige Daten in Zeitrichtung gespeichert sind. Eines der Speicherformate für dieses GPV ist das grib2-Format, und die meisten Daten der Meteorological Agency werden auch in diesem Format verteilt.

[^ Nachbearbeitung]: Da der gespeicherte Wert der Wert des Rasterpunkts oder der Durchschnittswert ist, wird der Wert selten als Prognose für einen beliebigen Punkt im Rasterpunkt verwendet und die Nachbearbeitung wie oben beschrieben hinzugefügt. Es gibt viele.

Wenn Sie die tatsächlichen Daten von GPV anzeigen möchten, können Sie diese unter GPV-Wettervorhersage anzeigen. Eigentlich sind es die Daten für jedes Gitter, aber in vielen Fällen wird bei der Visualisierung eine geeignete Interpolationsverarbeitung durchgeführt.

Pygrib-Umgebungskonstruktion auf Docker

Es scheint einige Optionen zu geben, wenn es um Grib2-Daten aus Python geht, aber dieses Mal werde ich pygrib verwenden, das Python3 unterstützt. [^ python3] Wenn Sie dies normal tun, kann es sein, dass Sie bei der Installation von grib_api [^ eccodes], die vom EZMW (European Medium-Term Forecast Center) veröffentlicht wurde, nicht weiterkommen. Dieses Mal werde ich es in Anakonda setzen. Da es eine gute Idee ist, wird es außerdem auf Docker aufgebaut. Damit ist die Wahrscheinlichkeit, dass die Installation aufgrund von Umgebungsabhängigkeit ausfällt, erheblich gering.

[^ python3]: Andere Module unterstützten früher nur 2 Serien, als ich es zuvor (Anfang 2016) ausprobiert habe, aber es wird jetzt möglicherweise unterstützt. [^ eccodes]: In letzter Zeit scheint die Verwendung von ecCodes empfohlen zu werden.

Die Docker-Datei lautet wie folgt.

Dockerfile


FROM ubuntu:latest
MAINTAINER hangyo

#Paketinstallation und Update
RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install build-essential
RUN apt-get -y install git vim curl wget
RUN apt-get -y install zlib1g-dev \
libssl-dev \
libreadline-dev \
libyaml-dev \
libxml2-dev \
libxslt-dev \
libncurses5-dev \
libncursesw5-dev 

#Installieren Sie pyenv
RUN git clone git://github.com/yyuu/pyenv.git /root/.pyenv
RUN git clone https://github.com/yyuu/pyenv-pip-rehash.git /root/.pyenv/plugins/pyenv-pip-rehash
ENV PYENV_ROOT /root/.pyenv
ENV PATH $PYENV_ROOT/bin:$PATH
RUN echo 'eval "$(pyenv init -)"' >> .bashrc

#Installation von Anakonda
ENV ANACONDA_VER 4.1.1
ENV LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$PYENV_ROOT/versions/anaconda3-$ANACONDA_VER/lib
RUN pyenv install anaconda3-$ANACONDA_VER
RUN pyenv global anaconda3-$ANACONDA_VER
ENV PATH $PYENV_ROOT/versions/anaconda3-$ANACONDA_VER/bin:$PATH

#Bibliothek Update
RUN conda update -y conda
RUN pip install --upgrade pip
RUN conda install -c conda-forge pygrib=2.0.2
RUN conda install -c conda-forge jpeg


RUN mkdir /temp

Bitte ändern Sie die Version von Anaconda entsprechend. Bis zur Installation von anaconda habe ich auf das folgende Repository verwiesen (auch eine vollständige Kopie). https://github.com/iriya-ufo/ml-anaconda

Vorbereitung der Probendaten

Bereiten Sie vor dem Erstellen und Starten eine Beispieldatei für grib2 vor. Dieses Mal werde ich die Daten der Meteorological Agency Data Disclosure Page des Instituts für Überlebensforschung der Universität Kyoto verwenden.

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

Dies sind die Prognosedaten von FT (Prognosezeit: Zeit von der Anfangszeit) 0h bis 15h der Oberfläche der Meteorologischen Agentur MSM, deren Anfangszeit am 2. Januar 2017 00:00 (UTC) ist. Wenn normale Leute mit numerischen Prognoseergebnissen spielen, denke ich, dass Oberflächendaten ausreichend sind.

Als kleine Anmerkung werden die Daten in einem Pfad gespeichert, aber wir speichern sie an einem anderen Ort als in der Docker-Datei. Es ist ein Problem des Verhaltens von Docker, aber Docker überträgt die Daten im Verzeichnis Dockerfile zum Zeitpunkt der Docker-Erstellung an den Docker-Daemon und die Docker-Daemon-Builds. Aus diesem Grund dauert die Übertragung länger als nötig, wenn Sie grib2 unter die Docker-Datei stellen. Sie können auf http://kimh.github.io/blog/jp/docker/gothas-in-writing-dockerfile-jp/ verweisen.

Test lesen

Zuerst bauen und ausführen, um in den Container zu gelangen.

cd path_of_Dokcerfile
docker build -t pygrib_ubuntu .
docker run -it -v /somepath:/temp pygrib_ubuntu

Sie sollten sich jetzt im Docker-Container befinden. Wenn Sie ls / temp versuchen und bestätigen, dass Sie Z__C_RJTD_20170102000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin haben, ist die Bereitstellung erfolgreich.

Zum Schluss der Pygrib-Test

python


import pygrib
grbs = pygrib.open('/temp/Z__C_RJTD_20170102000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin')
for grb in grbs:
    print(grb)

Das Ergebnis von

1:Pressure reduced to MSL:Pa (instant):regular_ll:meanSea:level 0:fcst time 0 hrs:from 201701020000
2:Surface pressure:Pa (instant):regular_ll:surface:level 0:fcst time 0 hrs:from 201701020000
3:10 metre U wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201701020000
4:10 metre V wind component:m s**-1 (instant):regular_ll:heightAboveGround:level 10 m:fcst time 0 hrs:from 201701020000
...
172:Medium cloud cover:% (instant):regular_ll:surface:level 0:fcst time 15 hrs:from 201701020000
173:High cloud cover:% (instant):regular_ll:surface:level 0:fcst time 15 hrs:from 201701020000
174:Total cloud cover:% (instant):regular_ll:surface:level 0:fcst time 15 hrs:from 201701020000
175:Total precipitation:kg m-2 (accum):regular_ll:surface:level 0:fcst time 14-15 hrs (accum):from 201701020000

Es ist in Ordnung, wenn es so wird.

Ich möchte einen weiteren Artikel über die spezifische Verwendung von Pygrib schreiben.

Recommended Posts

Bereiten Sie eine Umgebung zum Berühren von Dateien im Grib2-Format mit Python vor (Docker Edition).
Bereiten Sie die Python3-Umgebung mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Erstellen Sie eine MySQL + Python-Umgebung mit Docker
Richten Sie mit Atom eine Python-Entwicklungsumgebung ein
[Python] Erklärt anhand eines Beispiels, wie die Formatierungsfunktion verwendet wird
Bereiten Sie eine Umgebung für die Verwendung von OpenCV und Pillow mit AWS Lambda vor
[Python] Erstellen einer Umgebung mit Anaconda [Mac]
Erstellen Sie mit Docker eine Jupyter Lab (Python) -Umgebung
So erstellen Sie eine NVIDIA Docker-Umgebung
Hinweise beim Erstellen einer Umgebung mit Python
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
Erstellen Sie mit Docker eine Python + uWSGI + Nginx-Umgebung
Starten Sie die Umgebung mit LineBot + Heroku + Docker + Python
So installieren Sie Python3 mit Docker Centos
Mit Docker durchgeführte Umgebungswartung (Ich möchte GrADS in Python nachbearbeiten
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Hinweise von der Installation von Homebrew bis zum Erstellen einer Anaconda-Umgebung für Python mit pyenv
Erstellen einer Anaconda-Umgebung für Python mit pyenv
So beschneiden Sie ein Bild mit Python + OpenCV
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Docker eine Umgebung aus Nginx + uWSGI + Python (Django)
Erstellen einer Umgebung zur Einhaltung des Python-Codierungsstandards (PEP8) mit Eclipse + PyDev
Einführung in Python "Re" 1 Erstellen einer Ausführungsumgebung
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Von der Python-Umgebungskonstruktion zur virtuellen Umgebungskonstruktion mit Anaconda
So bereiten Sie mit pyenv-virtualenv unter Amazon Linux eine Umgebung mit unterschiedlichen Python-Versionen und -Paketen für jedes Projekt vor
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Eine Geschichte darüber, wie Windows 10-Benutzer eine Umgebung für die Verwendung von OpenCV3 mit Python 3.5 erstellt haben
[Cloud 9] Versuchen Sie, eine Umgebung mit Django 1.11 von Python 3.4 zu erstellen, ohne auch nur 1 mm zu verstehen
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Aufbau einer virtuellen Umgebung mit Docker + Flask (Python) + Jupyter-Notebook
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
[Python] OpenCV-Umgebungskonstruktion mit Docker (cv2.imshow () funktioniert auch)
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Einführung in die verteilte Parallelverarbeitung von Python durch Ray
Lesehinweis: Einführung in die Datenanalyse mit Python
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Beispiel einer Pytest-Umgebung zum Reparieren der Datenbank mit Docker
Entfernen Sie Überschriften aus CSV-Dateien mit mehreren Formaten mit Python
Erstellen einer Umgebung für die Verwendung von CaboCha mit Google Colaboratory
Verwenden Sie Python mit Docker
Python-Umgebung mit Docker-Compose
Virtuelle Umgebung mit Python 3.6
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Minimales Makefile und buildout.cfg, um eine Umgebung mit buildout zu erstellen
Einführung in Kaggles Docker Image unter Windows zum Erstellen einer Umgebung
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Hochladen von Dateien in den Cloud-Speicher mit dem Python-SDK von Firebase