nmc_met_io/examples/retrieve_cassandraDB.ipynb

738 lines
2.0 MiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 直连MICAPS Cassandra 数据库读取数值模式、卫星雷达等数据\n",
"\n",
"#### —— nmc_met_io程序库读取MICAPS分布式数据环境BDIPS使用说明\n",
"\n",
"宜昌市气象局\n",
"longtsing 2022songofsongs@vip.qq.com\n",
"\n",
"\n",
"MICAPS分布式数据环境BDIPS提供了两种访问方式:一种是直接连接读取Cassandra数据库另外一种是基于Cassandra数据库上搭建的WEBService API方式检索读取。\n",
"\n",
"[nmc_met_io](https://github.com/nmcdev/nmc_met_io)程序库的[retrieve_cassandraDB](https://github.com/nmcdev/nmc_met_io/blob/master/nmc_met_io/retrieve_micaps_server.py)模块, 基于Python Cassandra数据库接口包实现了Python语言对BDIPS数据的检索和读取。\n",
"由于WEBService的使用泛滥各省已经限制该接口只能下载三天内的数据为此启用Cassandra读取方式能延长读取数据的时效但各省在Cassandra数据库存储数据时长也有不同一般存储一周以上的数据。\n",
"\n",
"### retrieve_cassandra模块主要功能:\n",
"* 使用Cassandra的python接口, 读取程序库;\n",
"* 接口定义与retrieve_micaps_server一致\n",
"* 引入的本地文件缓存技术, 加快数据的快速读取;\n",
"* 支持模式数据标量场, 矢量场及集合成员数据的读取; \n",
"* 支持模式单点时间序列, 单点廓线及廓线时序的读取;\n",
"* 支持站点, 探空观测数据的读取;\n",
"* 支持awx格式的静止气象卫星等经纬度数据读取;\n",
"* 支持LATLON格式的雷达拼图数据读取;\n",
"* 统一的返回数据类型, 格点数据返回为[xarray](http://xarray.pydata.org/en/stable/)类型, 站点数据返回为[pandas.DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)类型.\n",
"\n",
"### 参考网站\n",
"* https://github.com/nmcdev/nmc_met_io\n",
"* https://github.com/datastax/python-driver\n",
"* https://docs.datastax.com/en/developer/python-driver/3.25/getting_started/\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. 安装和配置nmc_met_io程序库\n",
"\n",
"* 建议安装[Anaconda](https://www.anaconda.com/distribution/)的Python环境.\n",
"* [nmc_met_io](https://github.com/nmcdev/nmc_met_io)有详细安装说明.\n",
"* 需要配置Cassandra集群访问接口具体在C:\\Users\\用户名\\.nmcdev 目录下的config.ini内配置\n",
"```\n",
"[Cassandra]\n",
"ClusterIPAddresses=Cassandra集群IP地址以“,”分隔可以参考MICAPS4的配置文件配置\n",
"ClusterPort=Cassandra集群服务端口\n",
"KeySpace=Cassandra上数据存储的主键名\n",
"```\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"init_cell": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"D:\\ProgramData\\Anaconda3\\envs\\gpu1\\lib\\site-packages\\numpy\\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:\n",
"D:\\ProgramData\\Anaconda3\\envs\\gpu1\\lib\\site-packages\\numpy\\.libs\\libopenblas.EL2C6PLE4ZYW3ECEVIV3OXXGRN2NRFM2.gfortran-win_amd64.dll\n",
"D:\\ProgramData\\Anaconda3\\envs\\gpu1\\lib\\site-packages\\numpy\\.libs\\libopenblas.GK7GX5KEQ4F6UYO3P26ULGBQYHGQO7J4.gfortran-win_amd64.dll\n",
" warnings.warn(\"loaded more than 1 DLL from .libs:\"\n"
]
}
],
"source": [
"# set up things\n",
"%matplotlib inline\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"init_cell": true
},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.core.options.set_options at 0x1b981f8d820>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# load necessary libraries\n",
"# you should install cartopy with 'conda install -c conda-forge cartopy'\n",
"import xarray as xr\n",
"import numpy as np\n",
"\n",
"# load nmc_met_io for retrieving micaps server data\n",
"import sys\n",
"sys.path.append(\"../nmc_met_io\")\n",
"from retrieve_cassandraDB import *\n",
"\n",
"xr.set_options(display_style=\"text\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. 读取数值模式预报数据\n",
"\n",
"模块`retrieve_cassandraDB`提供读取数值模式网格预报数据的函数:\n",
" * `get_model_grid`: 读取单个时次标量, 矢量或集合成员的2D平面预报数据;\n",
" * `get_model_grids`: 读取多个时次标量, 矢量或集合成员的2D平面预报数据;\n",
" * `get_model_points`: 获取指定经纬度点的模式预报数据;\n",
" * `get_model_3D_grid`: 获得单个时次标量, 矢量或集合成员的[lev, lat, lon]3D预报数据;\n",
" * `get_model_3D_grids`: 获得多个时次标量, 矢量或集合成员的[lev, lat, lon]3D预报数据;\n",
" * `get_model_profiles`: 获得制定经纬度单点的模块廓线预报数据.\n",
"\n",
"每个函数都有固定的参数`directory`和`filename`(或`filenames`), 例如\n",
"```Python\n",
"# MICAPS分布式服务器上的数据地址, 可通过MICAPS4的数据源检索界面查找,\n",
"# 如下图, 找到数据存放的目录, 鼠标右键点击\"保存路径到剪切板\", 粘贴去掉\"mdfs:///\"\n",
"directory = 'ECMWF_HR/TMP/850'\n",
"# 指定具体的数据文件, 一般格式为\"起报时间.预报时效\", 若不指定, 则自动获得目录下最新数据的文件名\n",
"filename = '22022408.024'\n",
"# 调用函数读取数据\n",
"data = get_model_grid(directory, filename=filename)\n",
"```\n",
"\n",
"<img src=\"./images/micaps_retrieve_UI.png\" alt=\"image\" style=\"height: 400px;\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1 读取单个时次模式标量预报数据"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<xarray.Dataset>\n",
"Dimensions: (time: 1, level: 1, lat: 241, lon: 361)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2022-02-25T08:00:00\n",
" * level (level) float32 850.0\n",
" * lat (lat) float64 3.815e-06 0.25 0.5 ... 59.75 60.0\n",
" * lon (lon) float64 60.0 60.25 60.5 ... 149.5 149.8 150.0\n",
" forecast_reference_time datetime64[ns] 2022-02-24T08:00:00\n",
" forecast_period (time) float64 24.0\n",
"Data variables:\n",
" data (time, level, lat, lon) float32 19.45 ... -14.65\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB\n"
]
}
],
"source": [
"directory = 'ECMWF_HR/TMP/850'\n",
"filename = '22022408.024'\n",
"data = get_model_grid(directory, filename=filename, cache=False)\n",
"if data is not None:\n",
" print(data)\n",
"else:\n",
" print(\"Retrieve failed.\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-success\">\n",
" <b>返回xarray数据结构</b>:\n",
" <ul>\n",
" <li>返回的数据类型为[xarray](http://xarray.pydata.org/en/stable/)的Dataset结构数据(如下图所示).</li>\n",
" <li>xarray为在numpy数组基础上增加维度, 坐标和属性信息, 其数据模型来自于netCDF文件结构.</li>\n",
" <li>xarray提供直观,简介且可靠的格点数据操作功能, 已成为地球环境科学的标准数据处理程序库, 与很多现有的开源软件兼容.</li>\n",
" <li><em>get_model_grid</em>根据读取数据类型返回不同维度的Dataset数据. 如上对于高空数据, 返回数据的维度分别为(time, level, lat, lon).</li>\n",
" <li>在坐标Coordinate信息中, 除了数组维度的信息, 还给出起报时间forecast_reference_time和预报时效forecast_period</li>\n",
" </ul>\n",
"</div>\n",
"\n",
"<img src=\"./images/xarray_dataset.png\" width=\"600\">"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\u001b[1;31mSignature:\u001b[0m\n",
"\u001b[0mget_model_grid\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mdirectory\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mfilename\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0msuffix\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'*.024'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mvarname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'data'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mvarattrs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'units'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mscale_off\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mlevattrs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'long_name'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m'pressure_level'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'units'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m'hPa'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'_CoordinateAxisType'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m'Pressure'\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m \u001b[0mcache_clear\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mDocstring:\u001b[0m\n",
"Retrieve numeric model grid forecast from MICAPS cassandra service.\n",
"Support ensemble member forecast.\n",
"\n",
":param directory: the data directory on the service\n",
":param filename: the data filename, if none, will be the latest file.\n",
":param suffix: the filename filter pattern which will be used to\n",
" find the specified file.\n",
":param varname: set variable name.\n",
":param varattrs: set variable attributes, dictionary type.\n",
":param scale_off: [scale, offset], return values = values*scale + offset.\n",
":param levattrs: set level coordinate attributes, diectionary type.\n",
":param cache: cache retrieved data to local directory, default is True.\n",
":return: data, xarray type\n",
"\n",
":Examples:\n",
">>> data = get_model_grid(\"ECMWF_HR/TMP/850\")\n",
">>> data_ens = get_model_grid(\"ECMWF_ENSEMBLE/RAW/HGT/500\", filename='18021708.024')\n",
">>> data_ens = get_model_grid('ECMWF_ENSEMBLE/RAW/TMP_2M', '19083008.024')\n",
"\u001b[1;31mFile:\u001b[0m h:\\机器学习在空气污染预报应用的研究\\nmc_met_io\\nmc_met_io\\retrieve_cassandradb.py\n",
"\u001b[1;31mType:\u001b[0m function\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 使用?可以获得函数的帮助信息.\n",
"?get_model_grid"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<xarray.DataArray 'TEM' (time: 1, level: 1, lat: 241, lon: 361)>\n",
"array([[[[ 19.44553 , 19.461155, 19.41428 , ..., 19.773655,\n",
" 19.992405, 19.992405],\n",
" [ 19.00803 , 18.85178 , 18.836155, ..., 19.91428 ,\n",
" 20.03928 , 19.75803 ],\n",
" [ 18.367405, 18.367405, 18.44553 , ..., 20.086155,\n",
" 19.88303 , 19.711155],\n",
" ...,\n",
" [-11.413845, -11.74197 , -11.945095, ..., -14.80447 ,\n",
" -14.788845, -15.038845],\n",
" [-11.49197 , -11.80447 , -12.02322 , ..., -13.86697 ,\n",
" -13.882595, -14.39822 ],\n",
" [-11.507595, -11.71072 , -11.882595, ..., -12.71072 ,\n",
" -13.663845, -14.64822 ]]]], dtype=float32)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2022-02-25T08:00:00\n",
" * level (level) float32 850.0\n",
" * lat (lat) float64 3.815e-06 0.25 0.5 ... 59.75 60.0\n",
" * lon (lon) float64 60.0 60.25 60.5 ... 149.5 149.8 150.0\n",
" forecast_reference_time datetime64[ns] 2022-02-24T08:00:00\n",
" forecast_period (time) float64 24.0\n",
"Attributes:\n",
" long_name: temperature\n",
" units: degree\n"
]
}
],
"source": [
"# 可以指定数据的变量名称, 变量属性等信息\n",
"data = get_model_grid(directory, filename=filename, varname='TEM', varattrs={'long_name':'temperature', 'units':'degree'}, cache=False)\n",
"if data is not None:\n",
" print(data.TEM)\n",
"else:\n",
" print(\"Retrieve failed.\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib as mpl \n",
"import matplotlib.pyplot as plt\n",
"import cartopy.crs as ccrs"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 绘制图像\n",
"fig = plt.figure(figsize=(12,8))\n",
"ax = plt.axes(projection=ccrs.LambertConformal(central_longitude=120))\n",
"data.TEM.plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'shrink': 0.8})\n",
"ax.coastlines()\n",
"ax.gridlines()\n",
"ax.set_extent([80,130,15,54], crs=ccrs.PlateCarree())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.2 读取多个时次的模式预报数据"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 0 ns\n"
]
}
],
"source": [
"%time\n",
"directory = \"ECMWF_HR/TMP/500\"\n",
"fhours = np.arange(0, 132, 12)\n",
"filenames = ['22022208.'+'%03d'%(fhour) for fhour in fhours]\n",
"data = get_model_grids(directory, filenames, varname='HGT', varattrs={'long_name':'geopotential height', 'units':'dagpm'}, cache=False)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.Dataset&gt;\n",
"Dimensions: (lat: 281, time: 11, level: 1, lon: 361)\n",
"Coordinates:\n",
" * lat (lat) float64 -10.0 -9.75 -9.5 ... 59.5 59.75 60.0\n",
" * time (time) datetime64[ns] 2022-02-22T08:00:00 ... 20...\n",
" * level (level) float32 500.0\n",
" * lon (lon) float64 60.0 60.25 60.5 ... 149.5 149.8 150.0\n",
" forecast_reference_time datetime64[ns] 2022-02-22T08:00:00\n",
" forecast_period (time) float64 0.0 12.0 24.0 ... 96.0 108.0 120.0\n",
"Data variables:\n",
" HGT (time, level, lat, lon) float32 nan nan ... -35.82\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB</pre>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (lat: 281, time: 11, level: 1, lon: 361)\n",
"Coordinates:\n",
" * lat (lat) float64 -10.0 -9.75 -9.5 ... 59.5 59.75 60.0\n",
" * time (time) datetime64[ns] 2022-02-22T08:00:00 ... 20...\n",
" * level (level) float32 500.0\n",
" * lon (lon) float64 60.0 60.25 60.5 ... 149.5 149.8 150.0\n",
" forecast_reference_time datetime64[ns] 2022-02-22T08:00:00\n",
" forecast_period (time) float64 0.0 12.0 24.0 ... 96.0 108.0 120.0\n",
"Data variables:\n",
" HGT (time, level, lat, lon) float32 nan nan ... -35.82\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.plot.facetgrid.FacetGrid at 0x1b9b518f490>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 936x648 with 12 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 绘制图像\n",
"data.HGT.isel(level=0).plot.contour(col='time', col_wrap=4, levels=20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.3 读取集合预报数据"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 0 ns\n"
]
},
{
"data": {
"text/html": [
"<pre>&lt;xarray.Dataset&gt;\n",
"Dimensions: (number: 51, time: 3, lat: 121, lon: 261)\n",
"Coordinates:\n",
" * number (number) int32 0 1 2 3 4 5 6 ... 45 46 47 48 49 50\n",
" * time (time) datetime64[ns] 2022-03-06T08:00:00 ... 20...\n",
" * lat (lat) float64 0.0 0.5 1.0 1.5 ... 59.0 59.5 60.0\n",
" * lon (lon) float64 50.0 50.5 51.0 ... 179.0 179.5 180.0\n",
" forecast_reference_time datetime64[ns] 2022-02-23T08:00:00\n",
" forecast_period (time) float64 264.0 288.0 300.0\n",
"Data variables:\n",
" precipitation (number, time, lat, lon) float64 0.0 0.0 ... 1.228\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB</pre>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (number: 51, time: 3, lat: 121, lon: 261)\n",
"Coordinates:\n",
" * number (number) int32 0 1 2 3 4 5 6 ... 45 46 47 48 49 50\n",
" * time (time) datetime64[ns] 2022-03-06T08:00:00 ... 20...\n",
" * lat (lat) float64 0.0 0.5 1.0 1.5 ... 59.0 59.5 60.0\n",
" * lon (lon) float64 50.0 50.5 51.0 ... 179.0 179.5 180.0\n",
" forecast_reference_time datetime64[ns] 2022-02-23T08:00:00\n",
" forecast_period (time) float64 264.0 288.0 300.0\n",
"Data variables:\n",
" precipitation (number, time, lat, lon) float64 0.0 0.0 ... 1.228\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time\n",
"directory = \"ECMWF_ENSEMBLE/RAW/RAIN24\"\n",
"filenames = get_file_list(directory)[:3]\n",
"data = get_model_grids(directory, filenames=filenames, varname='precipitation',\n",
" varattrs={'long_name':'accumulated precipitation', 'units':'mm'},\n",
" cache=False)\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
},
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"<xarray.plot.facetgrid.FacetGrid at 0x1b9b938ae50>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1800x1512 with 57 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# set colors and levels\n",
"clevs = [0.01, 2.5, 5, 10, 20, 40, 60]\n",
"colors = ['#b1f7a3', '#76d870', '#39bb3e', '#318c2f', '#5cb8fc', '#0202fd', '#ef08e9']\n",
"cmap, norm = mpl.colors.from_levels_and_colors(clevs, colors, extend='max')\n",
"\n",
"plt.rcParams['font.size'] = '20'\n",
"subdata = data.sel(lon=slice(105, 110), lat=slice(29, 34))\n",
"fg = subdata.precipitation.isel(time=0).plot(\n",
" col='number', col_wrap=8, cmap=cmap, norm=norm, extend=\"max\", \\\n",
" sharex=True, sharey=True,\n",
" cbar_kwargs={\"aspect\":40, \"shrink\":0.6, \"pad\":0.01})\n",
"fg.set_xlabels(\"Lon\")\n",
"fg.set_ylabels(\"lat\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2.4 读取卫星图像数据"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<pre>&lt;xarray.Dataset&gt;\n",
"Dimensions: (time: 1, channel: 1, lat: 1001, lon: 1751)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2022-02-24T07:15:00\n",
" * channel (channel) int16 5\n",
" * lat (lat) float64 15.0 15.04 15.08 15.12 ... 54.88 54.92 54.96 55.0\n",
" * lon (lon) float64 70.0 70.04 70.08 70.12 ... 139.9 139.9 140.0 140.0\n",
"Data variables:\n",
" image (time, channel, lat, lon) float64 296.8 296.3 296.3 ... 258.7 260.6\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB</pre>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (time: 1, channel: 1, lat: 1001, lon: 1751)\n",
"Coordinates:\n",
" * time (time) datetime64[ns] 2022-02-24T07:15:00\n",
" * channel (channel) int16 5\n",
" * lat (lat) float64 15.0 15.04 15.08 15.12 ... 54.88 54.92 54.96 55.0\n",
" * lon (lon) float64 70.0 70.04 70.08 70.12 ... 139.9 139.9 140.0 140.0\n",
"Data variables:\n",
" image (time, channel, lat, lon) float64 296.8 296.3 296.3 ... 258.7 260.6\n",
"Attributes:\n",
" Conventions: CF-1.6\n",
" Origin: MICAPS Cassandra DB"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 获得风云4A中国区域4通道产品\n",
"directory = \"SATELLITE/FY4A/L1/CHINA/C008\"\n",
"data = get_fy_awx(directory)\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 绘制图像\n",
"fig = plt.figure(figsize=(12,8))\n",
"ax = plt.axes(projection=ccrs.LambertConformal(central_longitude=100))\n",
"data.image[0,0,:,:].plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'shrink': 0.8})\n",
"ax.coastlines()\n",
"ax.gridlines()\n",
"ax.set_extent([80,130,15,54], crs=ccrs.PlateCarree())"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 风云2静止卫星图像\n",
"directory = \"SATELLITE/FY2/L1/IR1/EQUAL\"\n",
"data = get_fy_awx(directory)\n",
"\n",
"# 绘制图像\n",
"fig = plt.figure(figsize=(12,8))\n",
"ax = plt.axes(projection=ccrs.LambertConformal(central_longitude=100))\n",
"data.image[0,0,:,:].plot(ax=ax, transform=ccrs.PlateCarree(), cbar_kwargs={'shrink': 0.8}, cmap=\"gist_ncar\", vmin=310, vmax=327)\n",
"ax.coastlines()\n",
"ax.gridlines()\n",
"ax.set_extent([80,130,15,54], crs=ccrs.PlateCarree())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Initialization Cell",
"hide_input": false,
"interpreter": {
"hash": "6d1028bb80a4212d9c8ea7ef7f49ce40c764d6b67de3d4dacb11bce3aa25f09f"
},
"kernelspec": {
"display_name": "Python [conda env:gpu1]",
"language": "python",
"name": "conda-env-gpu1-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.12"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": true
},
"toc-autonumbering": false,
"toc-showtags": false,
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}