跳过导航

UK Met Office Global Weather Data for COVID-19 Analysis

COVID-19 coronavirus Met Office environment Weather AIforEarth

此数据可供 COVID-19 研究人员探索 COVID-19 与环境因素之间的关系。

有关详细信息,请参阅我们的博客文章。 如需计算资源来处理此数据,我们可提供帮助

许可证

用户必须在所有最终产品、出版物或应用程序中包含以下归属声明,确认这些数据来源于英国气象局:“包含根据 Open Government 许可证 v3.0 获准使用的英国气象局数据”。

此数据根据 Open Government 许可证提供。

关于数据

英国气象局提供的全球和高分辨率英国数值天气模型输出。 数据来自数据同化后模型的早期阶段,因此近似于整个地球的观察数据集。

可用变量如下:

  • t1o5m = 1.5 m 处的空气温度,单位为 K$$
  • sh = 1.5 m 处的比湿度,单位为 kg/kg$$(每千克空气中所含水蒸气)
  • sw = 短波辐射,单位为 W m^{-2}$$(评估阳光的指标)
  • precip = 降水通量,单位为 kg m^{-2} s^{-1}3600mm/hr 为单位的结果)
  • rain = 雨通量,单位为 kg m^{-2} s^{-1}3600mm/hr 为单位的结果)
  • pmsl = 平均海平面气压,单位为 Pa$$

此数据通过 NetCDF 文件提供。

提供了自 2020 年 1 月 1 日起全球和英国模型数据更新。 数据集针对前一天每日更新。

要详细了解此数据的生成方式以及参数详情,请查看技术参考

还以 CSV 文件的形式提供了英国和美国新冠肺炎报告区域中一些其他经过后期处理的数据聚合。 请参阅以下详细信息。

存储位置

此数据集存储在美国东部 2 Azure 区域。 建议将计算资源分配到美国东部 2 区域,以实现相关性。

快速链接

数据卷、保留和更新频率

网格数据针对前一天每日更新。

截至 2020 年 4 月 18 日,数据集总大小约为 352 G。 每周增加的大小约为 22 G。

只要这些数据对于应对新冠肺炎疫情有用,我们就将一直保留和提供这些数据。

快速入门

数据通过 AI for Earth 计划托管在 Microsoft Azure 中。 可通过多种方式访问数据,例如:

点击

在浏览器中打开索引文件。 数据文件链接列表随即显示,可通过在浏览器中单击这些链接下载文件。

Azure Blob 库

有多种使用各种语言的库可用于Azure Blob。 有关详细信息,请参阅 Azure Blob 文档

使用 AzCopy 下载

文件数量众多,因此我们建议安装 azcopy 命令行工具,可在此处下载该工具。 凭借此工具,可使用通配符下载整个目录或多个文件。

例如…

将文件 global_daily_precip_max_20200101.nc 下载到当前目录:
azcopy cp https://metdatasa.blob.core.windows.net/covid19-response/metoffice_global_daily/precip_max/global_daily_precip_max_20200101.nc .

将 /metoffice_ukv_daily/snow_mean/ 的内容下载到 ukv_daily_snow_mean/:
azcopy cp 'https://metdatasa.blob.core.windows.net/covid19-response/metoffice_ukv_daily/snow_mean/*' ukv_daily_snow_mean/

下载与模式 us_55*.csv 匹配的所有美国州县平均气象数据:
azcopy cp --recursive --include-pattern 'us_55*.csv' https://metdatasa.blob.core.windows.net/covid19-response/regional_subset_data/us_data/ .

数据的整理方式

metoffice_global_daily/

…包含英国气象局的网格化每日全球数据文件。 每个变量都有一个目录。

每个文件均包含一个描述性名称 global_daily_{variable}_{statistic}_{YYYYMMDD}.nc

  • .../t1o5m_mean/ = 每日平均空气温度文件
  • .../t1o5m_max/ = 每日最高空气温度文件
  • .../t1o5m_min/ = 每日最低空气温度文件
  • .../sh_mean/ = 每日平均比湿度文件
  • .../sh_max/ = 每日最高比湿度文件
  • .../sh_min/ = 每日最低比湿度文件
  • .../sw_mean/ = 每日平均短波辐射文件
  • .../sw_max/ = 每日最高短波辐射文件
  • .../precip_mean/ = 每日平均降水通量文件
  • .../precip_max/ = 每日最大降水通量文件
metoffice_global_hourly/

…包含英国气象局的网格化每小时全球数据文件。

每个文件均包含一个描述性名称 global_hourly_{variable}_global_{YYYYMMDD}.nc

  • .../t1o5m/ = 每小时空气温度文件
  • .../sh/ = 每小时比湿度文件
  • .../sw/ = 每小时短波辐射文件
  • .../precip/ = 每小时降水通量文件
  • .../precip3hr/ = 三小时降水通量文件
  • .../pmsl/ = 每小时平均海平面气压文件
metoffice_ukv_daily/

…包含英国气象局的网格化每日 UKV 数据文件。

每个文件均包含一个描述性名称 ukv_daily_{variable}_{statistic}_{YYYYMMDD}.nc

  • .../t1o5m_mean/ = 每日平均空气温度文件
  • .../t1o5m_max/ = 每日最高空气温度文件
  • .../t1o5m_min/ = 每日最低空气温度文件
  • .../sh_mean/ = 每日平均比湿度文件
  • .../sh_max/ = 每日最高比湿度文件
  • .../sh_min/ = 每日最低比湿度文件
  • .../sw_mean/ = 每日平均短波辐射文件
  • .../sw_max/ = 每日最高短波辐射文件
metoffice_ukv_hourly/

…包含英国气象局的网格化每小时 UKV 数据文件。

每个文件均包含一个描述性名称 ukv_hourly_{variable}_{YYYYMMDD}.nc

  • .../t1o5m_ukv/ = 每小时空气温度文件
  • .../sh_ukv/ = 每小时比湿度文件
  • .../sw_ukv/ = 每小时短波辐射文件
  • .../pmsl_ukv/ = 每小时平均海平面气压文件
regional_subset_data/

…以 .csv 文件的形式包含英国和美国已处理的每日区域值。

文件的处理方法是:使用形状文件为每个区域设置网格化气象局每日全球文件的子集,获取每个区域中每天每个变量的经纬度平均值,并将这些值保存为 .csv 文件中的表*。

  • .../uk_daily_meteodata_2020jan-mar_v03.csv = 英国所有报告区域的每日 t1o5mshswprecip 值(所有文件合并在 /uk_data//uk_data_precip 中)
  • .../us_daily_meteodata_2020jan-mar_v03.csv = 美国每个郡县的每日 t1o5mshswprecip 值(所有文件合并在 /us_data//us_data_precip 中)
  • .../uk_data/ = 英国每个报告区域的每日 t1o5mshsw 值(每个区域一个 .csv 文件)
  • .../uk_data_precip/ = 英国每个报告区域的每日 precip 值(每个区域一个 .csv 文件)
  • .../us_data/ = 美国每个郡县的每日 t1o5mshsw 值(每个郡县一个 .csv 文件)
  • .../us_data_precip/ = 美国每个郡县的每日 precip 值(每个郡县一个 .csv 文件)
shapefiles/

包含用于英国、美国、意大利、巴西、乌干达和越南的形状文件。

  • .../UK/ = 英国 COVID-19 报告区域
  • .../USA/ = 美国州县
  • .../Italy/ = GADM v3.6 管理级别 2(意大利)
  • .../Brazil/ = GADM v3.6 管理级别 2(巴西)
  • .../Uganda/ = GADM v3.6 管理级别 2(乌干达)
  • .../Vietnam/ = GADM v3.6 管理级别 2(越南)

如有可能,文件名如前所述。 但是,鉴于提供此数据的时间很短,文件名描述可能会发生细微变化。 文件名仍应准确地描述数据。 如果发现任何文件名或数据本身存在问题,请通过 covid19@informaticslab.co.uk 联系我们。

获取帮助和联系我们

如需帮助或需要请求获取其他数据,请通过 covid19@informaticslab.co.uk 联系我们。

通知

Microsoft 以“原样”为基础提供 AZURE 开放数据集。 Microsoft 对数据集的使用不提供任何担保(明示或暗示)、保证或条件。 在当地法律允许的范围内,Microsoft 对使用数据集而导致的任何损害或损失不承担任何责任,包括直接、必然、特殊、间接、偶发或惩罚。

Access

Available inWhen to use
Azure Notebooks

Quickly explore the dataset with Jupyter notebooks hosted on Azure or your local machine.

Select your preferred service:

Azure Notebooks

Azure Notebooks

Package: Language: Python

Met Office COVID-19 response dataset

This dataset is created, curated and updated for researchers looking to understand links between COVID-19 and environmental factors.

For more information check out our blog post and the data readme.

We are constantly updating the available data; subscribe to our news group to stay up to date or contact us if you have any requests or questions.

Imports and globals

Import the required modules, set up the default plot size and set some constants

In [1]:
import matplotlib.pyplot as plt 
import datetime

from azure.storage.blob import BlobClient, ContainerClient
from IPython.display import Markdown
from collections import namedtuple

%matplotlib inline
plt.rcParams['figure.figsize'] = (20.0, 10.0)

Set up the blob client with the connection details

In [2]:
account_url  = 'https://metdatasa.blob.core.windows.net/'
container_name = 'covid19-response'

# Create the ContainerClient object which will be used to enumerate blobs
container_client = ContainerClient(account_url=account_url,
                                   container_name=container_name,
                                   credential=None)

List the files under metoffice_global_daily/t1o5m_max

In [3]:
max_blobs = 10
for i_blob,blob in enumerate(container_client.list_blobs(
    name_starts_with='metoffice_global_daily/t1o5m_max')):
    print(f'{blob.name}')
    if i_blob >= max_blobs:
        break
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200101.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200102.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200103.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200104.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200105.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200106.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200107.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200108.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200109.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200110.nc
metoffice_global_daily/t1o5m_max/global_daily_t1o5m_max_20200111.nc

Get a particular file based on the data required

In [4]:
data_end = (datetime.datetime.now() - datetime.timedelta(days=9)).date()
data_start = datetime.date(2020,1,1)

def url_from_properties(model, param, freq, stat=None, day=None, hour=None):
    
    assert model in ["global","ukv"]
    assert param in ["rain", "sh", "snow", "t1o5m", "pmsl","precip","sw"]
    assert freq in ["daily","hourly"]
    if freq == 'daily':
        assert stat in ['max', 'min', 'mean']
    else:
        assert stat is None  
    assert data_start <= day <= data_end
    
    stat = '_'+stat if stat else ''

    filepath = f'metoffice_{model}_{freq}/{param}{stat}/{model}_{freq}_{param}{stat}_{day:%Y%m%d}.nc'
    return f"{account_url}/{container_name}/{filepath}"

Properties = namedtuple('Properties',["model","param","freq","stat","day"])

files = [
    Properties("global","precip","daily","mean",datetime.date(2020,3,3)),
    Properties("ukv","t1o5m","daily","min",datetime.date(2020,4,1)),
    Properties("ukv","snow","hourly",None,datetime.date(2020,2,2)),
]

for file in files:
    path = url_from_properties(*file)
    print(path.replace(account_url,''))
/covid19-response/metoffice_global_daily/precip_mean/global_daily_precip_mean_20200303.nc
/covid19-response/metoffice_ukv_daily/t1o5m_min/ukv_daily_t1o5m_min_20200401.nc
/covid19-response/metoffice_ukv_hourly/snow/ukv_hourly_snow_20200202.nc

xarray and iris are useful tools for interacting with this sort of data

In [5]:
import xarray as xr
import iris
from io import BytesIO

Stream blob into memory and load dataset in xarray

In [6]:
data_description = Properties("global","precip","daily","mean",datetime.date(2020,1,30))
file_data = BytesIO(BlobClient.from_blob_url(
    url_from_properties(*data_description)).download_blob().readall())
ds = xr.open_dataset(file_data)
ds
Out[6]:
Show/Hide data repr Show/Hide attributes
xarray.Dataset
    • bnds: 2
    • latitude: 1920
    • longitude: 2560
    • latitude
      (latitude)
      float32
      -89.953125 -89.859375 ... 89.953125
    • longitude
      (longitude)
      float32
      0.0703125 0.2109375 ... 359.9297
    • forecast_period
      ()
      timedelta64[ns]
      ...
    • forecast_reference_time
      ()
      datetime64[ns]
      ...
    • time
      ()
      datetime64[ns]
      ...
    • precipitation_flux
      (latitude, longitude)
      float32
      ...
    • latitude_longitude
      ()
      int32
      ...
    • forecast_period_bnds
      (bnds)
      float64
      ...
    • forecast_reference_time_bnds
      (bnds)
      datetime64[ns]
      ...
    • time_bnds
      (bnds)
      datetime64[ns]
      ...
  • source :
    Data from Met Office Unified Model
    um_version :
    11.2
    Conventions :
    CF-1.5

Plot it with iris

In [ ]:
import tempfile

ds.precipitation_flux.plot()

tmp = tempfile.NamedTemporaryFile(delete=False)
data_description = Properties("ukv","sw","hourly",None,datetime.date(2020,1,30))
tmp.write(BlobClient.from_blob_url(
    url_from_properties(*data_description)).download_blob().readall())
local_path = tmp.name
tmp.close()

sw = iris.load_cube(local_path)
sw
Out[ ]:
M01S01I202 (1) forecast_period forecast_reference_time grid_latitude grid_longitude
Shape 6 4 808 621
Dimension coordinates
forecast_period x - - -
forecast_reference_time - x - -
grid_latitude - - x -
grid_longitude - - - x
Auxiliary coordinates
time x x - -
Attributes
Conventions CF-1.5
STASH m01s01i202
source Data from Met Office Unified Model
um_version 11.2