どのようにPythonを使ってHDMフォーマットのデータと可視化の問題を処理しますか?


原文のリンク:https://blog.csdn.net/Fairy_Nan/articale/detail/10914203
HDCFはまた、主に科学データを保存し配布するための自己記述形式ファイルである。気象分野では、衛星データはよくこのフォーマットを使います。例えば、MODIS、OMI、LIS/OTDなどの衛星製品です。HDCFフォーマットの詳細に興味があるなら、Googleで調べてもいいです。
今回はPythonを中心としたHDM形式のデータの扱い方を紹介します。Pythonの中には多くのライブラリがHDMフォーマットのデータを処理するために使用できます。例えば、h 5 pyはHF 5フォーマットを処理できます。hdf関数)は、HDF 4フォーマットを処理するためにpyhdfを使用することができます。また、gdalは、HDCF(NetCDF、GRIBなど)フォーマットデータを処理しても良い。
インストール
まず関連ライブラリをインストールします。
在这里插入图片描述
これらのライブラリは、condaパッケージマネージャを介してインストールすることができますが、もしcondaパッケージマネージャがインストールできないなら、windowsシステムについては、パッケージされたインストールパッケージがあるかどうかを調べることができますが、unixシステムはソースコンパイルでインストールすることができます。
データ処理と可視化
LIS/OTD衛星の電光イメージングデータを例にとって、HF 4フォーマットのデータを処理し、描画する。

import numpy as np
 
import matplotlib.pyplot as plt
from matplotlib import cm, colors
 
import seaborn as sns
import cartopy.crs as ccrs
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
 
from pyhdf.SD import SD, SDC
 
sns.set_context('talk', font_scale=1.3)
 
data = SD('LISOTD_LRMTS_V2.3.2014.hdf', SDC.READ)
lon = data.select('Longitude')
lat = data.select('Latitude')
flash = data.select('LRMTS_COM_FR')
 
#   colormap
collev= ['#ffffff', '#ab18b0', '#07048f', '#1ba01f', '#dfdf18', '#e88f14', '#c87d23', '#d30001', '#383838']
levels = [0, 0.01, 0.02, 0.04, 0.06, 0.1, 0.12, 0.15, 0.18, 0.2]
cmaps = colors.ListedColormap(collev, 'indexed')
norm = colors.BoundaryNorm(levels, cmaps.N)
 
proj = ccrs.PlateCarree()
 
fig, ax = plt.subplots(figsize=(16, 9), subplot_kw=dict(projection=proj))
 
LON, LAT= np.meshgrid(lon[:], lat[:])
 
con = ax.contourf(LON, LAT, flash[:, :, 150], cmap=cmaps, norm=norm, levels=levels, extend='max')
 
cb = fig.colorbar(con, shrink=0.75, pad=0.02)
cb.cmap.set_over('#000000')
cb.ax.tick_params(direction='in', length=5)
 
ax.coastlines()
 
ax.set_xticks(np.linspace(-180, 180, 5), crs=proj)
ax.set_yticks(np.linspace(-90, 90, 5), crs=proj)
 
lon_formatter= LongitudeFormatter(zero_direction_label=True)
lat_formatter= LatitudeFormatter()
 
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)
在这里插入图片描述
月の全世界の稲妻の密度の分布
上記の例はpyhdfに基づいて、HDCF 4フォーマットのデータ処理と可視化を行い、HF 4ファイルに含まれる変数と属性の取得方式は文末のNotebookに参照してください。ここで、より詳細な例が示されています。
以下、H 5 pyに基づいて、HF 5フォーマットのデータを読み取り、OMI衛星O 3データを例に挙げます。

import h5py
 
data = h5py.File('TES-Aura_L3-O3-M2005m07_F01_10.he5')
lon = data.get('/HDFEOS/GRIDS/NadirGrid/Data Fields/Longitude').value
lat = data.get('/HDFEOS/GRIDS/NadirGrid/Data Fields/Latitude').value
o3 = data.get('/HDFEOS/GRIDS/NadirGrid/Data Fields/O3').value
 
proj = ccrs.PlateCarree()
 
fig, ax = plt.subplots(figsize=(16, 9), subplot_kw=dict(projection=proj))
LON, LAT = np.meshgrid(lon[:], lat[:])
con = ax.contourf(LON, LAT, o3[10, :, :]*1e6, np.arange(0, 8.01, 0.1), vmin=0, vmax=8, cmap=cm.RdGy_r)
 
ax.coastlines()
ax.set_xticks(np.linspace(-180, 180, 5), crs=proj)
ax.set_yticks(np.linspace(-90, 90, 5), crs=proj)
 
lon_formatter = LongitudeFormatter(zero_direction_label=True)
lat_formatter = LatitudeFormatter()
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)
 
cb = fig.colorbar(con, shrink=0.75, pad=0.02)
cb.set_ticks(np.arange(0, 8.01, 1))
cb.ax.tick_params(direction='in', length=5)
上記の例では、HDCFフォーマットデータにおいてGroupsと呼ばれる、unixのような経路を用いて関連変数を取得する。異なるグループは、サブグループを含み、同様の入れ子の形態を形成することができる。詳細な紹介はGoogleで分かります。
在这里插入图片描述
締め括りをつける
ここでは、どのようにPythonを使ってHDCF形式のデータを処理するかという問題と可視化問題についての文章を紹介します。PythonがHDCF形式のデータを処理するかについては、以前の文章を検索したり、下記の関連記事を引き続き閲覧したりしてください。これからもよろしくお願いします。