Lesen Sie die Big-Endian-Binärdatei in Python und konvertieren Sie sie in ndarray

Ich werde Ihnen zeigen, wie Sie ein binär ausgegebenes zweidimensionales Array mit echtem Wert aus Python lesen. Lesen Sie insbesondere die Geländedaten in hier. Dieses Mal sind die für MSM verwendeten Geländedaten das Ziel. In Bezug auf die Anzahl der Gitter und den Breiten- / Längengrad sind die Daten von diesem Verzeichnis der aktuelle Status. Es scheint mit MSM kompatibel zu sein.

Laut README

4.Datei Format
 (1)Datenformular
4-Byte-reelle Zahl(IEEE754)Es ist eine zweidimensionale Anordnung von.
Die Folge von Bytes ist Big Endian.
 (2)Koordinatensystem
Gleiches Längen- und Breitengrad-Gitterkoordinatensystem.

    (a)Meso Numerical Forecast Model GPV
Anzahl der Gitter: Ost-West 481 Nord-Süd 505
Gitterabstand: Ost-West-Richtung 0.0625 Grad Nord-Süd-Richtung 0.05 Grad
Führender Gitterpunkt: 47 nördlicher Breite.6 Grad östlicher Längengrad 120 Grad
(Unterlassung)
(3)Datenspeicherreihenfolge
Speichert Gitterpunkte mit demselben Breitengrad vom ersten Gitterpunkt in Längsrichtung nach Osten.
Es wird auch wiederholt auf dem Breitengrad südlich davon gespeichert.

... anscheinend ...

Im folgenden Beispiel

Daten zur geopotentialen Oberflächenhöhe
    (a) "TOPO.MSM_5K_20071121"Meso numerisches Prognosemodell für GPV

Nehmen wir diese Daten als Beispiel. Laden Sie zunächst die Daten herunter.

$ wget http://database.rish.kyoto-u.ac.jp/arch/jmadata/data/gpv/original/etc/200709/TOPO.MSM_5K_20071121

Der Rest arbeitet mit Python. Es wird angenommen, dass "numpy" installiert ist.

import numpy as np
f = open("TOPO.MSM_5K_20071121",mode='rb')
topo = np.fromfile(f, dtype='>f',sep='').reshape(505,481)

Sie können jetzt topografische Höhendaten in derselben Größe wie das MSM 505 x 481 laden. Ich lese die Daten als Bigendian-4-Byte-Gleitkommazahl mit "dtype ="> f "in fromfile, speichere sie in einem eindimensionalen Array und" forme "sie um. Durch Angabe von dtype kann eine andere Datei als ein eindimensionales Array erhalten werden, aber dt = np.dtype (('> f', (505,481))) Selbst wenn es so angegeben wird, `topo.shape = Es wird ein dreidimensionales Array wie (1.505.481) sein. Ich habe auch das dtype-Dokument überprüft, aber es scheint, dass es nicht auf einmal zu einem zweidimensionalen Array gemacht werden kann.

Lassen Sie es uns visualisieren, um zu sehen, ob es richtig geladen ist. Weitere Informationen finden Sie in diesem Artikel.

%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import pygrib

grbs = pygrib.open('/temp/Z__C_RJTD_20170102000000_MSM_GPV_Rjp_Lsurf_FH00-15_grib2.bin')
grb = grbs.select(forecastTime=0)[0]
lats, lons = grb.latlons()
flat_lats= np.ravel(lats)
flat_lons= np.ravel(lons)
m = Basemap(llcrnrlat=lats.min(),urcrnrlat=lats.max(), llcrnrlon=lons.min(),urcrnrlon=lons.max())
m.drawcoastlines()
m.contourf(flat_lons, flat_lats, b, latlon=True, tri=True)
plt.colorbar()
plt.show()

image.png

Die Land- und Seeverteilungsdaten lauten übrigens wie folgt. image.png

Recommended Posts

Lesen Sie die Big-Endian-Binärdatei in Python und konvertieren Sie sie in ndarray
Konvertieren Sie die FBX-Datei in Python in ASCII <-> BINARY
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
Konvertieren Sie Datum und Uhrzeit in Zeitzonen in Unixtime in Python2.7
[Python] Konvertieren Sie Dezimalzahlen in Binär-, Oktal- und Hexadezimalzahlen
Konvertieren Sie das NumPy-Array "ndarray" in Python [tolist ()]
So konvertieren Sie Gleitkommazahlen in Python in Binärzahlen
Versuchen Sie es mit GUI, PyQt in Python
Tipps zum Codieren kurz und einfach in Python zu lesen
Wie man Youtube in MP3 konvertiert und es super sicher herunterlädt [Python]
Lesen Sie json mit C # und konvertieren Sie es in den Wörterbuchtyp (erzwungen)
Objektorientiert in C-Sprache: "○ ✕ game" wurde überarbeitet und nach Python portiert
Konvertieren Sie Markdown in Python in PDF
Erstellen und lesen Sie Messagepacks in Python
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden
Lesen Sie Python csv und exportieren Sie es nach txt
Lesen und schreiben Sie JSON-Dateien mit Python
In Python von Markdown in HTML konvertieren
Verwendung ist und == in Python
Konvertieren Sie die absolute URL in eine relative URL in Python
So generieren Sie eine Sequenz in Python und C ++
Konvertieren Sie PDFs mit Python in Massenbilder
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Konvertieren Sie UTF-8-CSV-Dateien in Excel
POST JSON mit Python und empfange mit PHP
Konvertieren Sie den exponentiellen Float in Python in str
Zur Darstellung von Datum, Uhrzeit, Uhrzeit und Sekunden in Python
Wie man Autokorrelation und partielle Autokorrelation mit Python zeichnet
Konvertieren Sie kubischen Netzcode in Python in WKT
[Python] So benennen Sie Tabellendaten und geben sie mit csv aus (to_csv-Methode)
So lesen Sie Seriennummerndateien in einer Schleife, verarbeiten sie und zeichnen sie grafisch auf
Unterschiede beim Schreiben von externem Quellcode zwischen Ruby und Python
So generieren Sie QR-Code und Barcode in Python und lesen ihn normal oder in Echtzeit mit OpenCV
Ich las "Quantencomputer beschleunigt künstliche Intelligenz" und versuchte, es in Python ohne mathematische Formeln zu skizzieren.
Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Lesen Sie DXF mit Python
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Konvertieren Sie Allzweckcontainer und Klasse ineinander
Konvertieren Sie die Netzmaske der CIDR-Notation in Python in eine gepunktete Dezimalschreibweise
Dichotomie mit Python
Lesen Sie die CSV-Datei und zeigen Sie sie im Browser an
Konvertieren Sie das Bild in .zip mit Python in PDF
Lesen und Schreiben von Gleitkommazahlen mit einfacher Genauigkeit in Python
Schreiben Sie Tests in Python, um die Abdeckung zu profilieren und zu überprüfen
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
[Python] So sortieren Sie Diktate in Listen und Instanzen in Listen
Konvertieren Sie die asynchrone API im Callback-Stil in async / await in Python
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
Lesen und schreiben Sie NFC-Tags mit Python mit PaSoRi
[Python] Erstellt eine Methode zum Konvertieren von Radix in 1 Sekunde
Wie man Decorator in Django benutzt und wie man es macht
Konvertieren Sie den Webpay-Entitätstyp in den Dict-Typ (rekursiv in Python).
Python: Kann in Lambda wiederholt werden
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Binäre Suche in Python