跳转至

在 wis2box 中配置数据集

学习目标

完成本次实践课程后,您将能够:

  • 使用 wis2box-webapp 数据集编辑器
  • 使用 Template=weather/surface-based-observations/synop 和 Template=other 创建新数据集
  • 定义您的发现元数据
  • 审核您的数据映射
  • 为您的发现元数据发布 WIS2 通知

简介

wis2box 使用与发现元数据数据映射相关联的数据集

发现元数据用于创建一个 WMO Core Metadata Profile (WCMP2) 记录,该记录通过在您的 wis2box broker 上发布的 WIS2 通知进行共享。

数据映射用于将数据插件与您的输入数据关联,以便在数据发布到 WIS2 之前对其进行转换。

在本次实践课程中,您将学习如何使用 wis2box-webapp 数据集编辑器 创建和配置数据集。

不使用 wis2box-webapp 配置数据集

wis2box 还支持使用 metadata control file (MCF) 格式配置数据集,该格式由 pygeometa 工具定义。

使用 MCF 提供了更多的灵活性和控制,但需要精确编写,以确保 MCF 格式和缩进正确,并符合所需的模式。

MCF 文件可以通过 wis2box-management 容器中的命令行发布。有关更多信息,请参阅 wis2box 文档

准备工作

使用 MQTT Explorer 连接到您的 broker。

不要使用内部 broker 凭据,而是使用公共凭据 everyone/everyone

MQTT Explorer: Connect to broker

Note

您永远不需要与外部用户共享内部 broker 的凭据。'everyone' 用户是一个公共用户,用于共享 WIS2 通知。

everyone/everyone 凭据对主题 'origin/a/wis2/#' 具有只读访问权限。WIS2 通知会发布到该主题。Global Broker 可以使用这些公共凭据订阅以接收通知。

'everyone' 用户无法查看内部主题或发布消息。

打开浏览器并访问 http://YOUR-HOST/wis2box-webapp。确保您已登录并可以访问 'dataset editor' 页面。

如果您需要回忆如何连接到 broker 或访问 wis2box-webapp,请参阅 初始化 wis2box 部分。

为 processes/wis2box 创建授权令牌

您需要为 'processes/wis2box' 端点创建一个授权令牌,以便发布您的数据集。

通过 SSH 访问您的培训虚拟机,并使用以下命令创建授权令牌:

cd ~/wis2box
python3 wis2box-ctl.py login

然后运行以下命令,为 'processes/wis2box' 端点生成一个随机的授权令牌:

wis2box auth add-token --path processes/wis2box

您还可以通过在命令中提供令牌值来创建一个特定值的令牌:

wis2box auth add-token --path processes/wis2box MyS3cretToken

确保复制令牌值并将其存储在本地计算机上,因为稍后您将需要它。

获得令牌后,您可以退出 wis2box-management 容器:

exit

wis2box-webapp 数据集编辑器

通过访问 http://YOUR-HOST/wis2box-webapp 并从左侧菜单中选择 'dataset editor',导航到您的 wis2box 实例中的 'dataset editor' 页面。

在 'dataset editor' 页面中,点击 'Datasets' 标签下的 "Create New ...":

Create New Dataset

将弹出一个窗口,要求您提供以下信息:

  • Centre ID:这是由 WMO 成员指定的机构缩写(小写且无空格),用于标识负责发布数据的数据中心。
  • Template:您正在为其创建元数据的数据类型。您可以选择使用预定义模板或选择 other

Create New Dataset pop up

Centre ID

您的 Centre ID 应以您国家的顶级域名(TLD)开头,后跟一个短横线 (-) 和您组织的缩写名称(例如 fr-meteofrance)。Centre ID 必须为小写,并且仅使用字母数字字符。下拉列表显示了 WIS2 上当前注册的所有 Centre ID 以及您已在 wis2box 中创建的任何 Centre ID。请选择适合您组织的 Centre ID。

Template

Template 字段允许您从 wis2box-webapp 数据集编辑器中提供的模板列表中进行选择。模板会根据数据类型预填充表单中的建议默认值。这包括元数据的建议标题和关键字以及预配置的数据插件。

主题会自动设置为与所选模板关联的默认主题,除非您选择 other。如果您选择 other,则可以从基于 WIS2 Topic Hierarchy 的下拉列表中定义主题。

在本次培训中,您将创建两个数据集:

  • 使用 Template=weather/surface-based-observations/synop 的数据集,其中包括将数据转换为 BUFR 格式后发布的数据插件。
  • 使用 Template=other 的数据集,您需要定义 WIS2 Topic,并使用 "Universal" 插件直接发布数据而无需转换。

Template=weather/surface-based-observations/synop

对于 Template,选择 weather/surface-based-observations/synop

Create New Dataset Form: Initial information

点击 continue to form 继续。您现在将看到 Dataset Editor Form

由于您选择了 weather/surface-based-observations/synop 模板,表单将预填充与此数据类型相关的一些初始值。

创建发现元数据

Dataset Editor Form 允许您为数据集提供发现元数据,wis2box-management 容器将使用这些元数据发布 WCMP2 记录。

由于您选择了 'weather/surface-based-observations/synop' 模板,表单将预填充一些默认值。

请确保将自动生成的 'Local ID' 替换为数据集的描述性名称,例如 'synop-dataset-wis2training':

Metadata Editor: title, description, keywords

检查标题和关键字,根据需要更新,并为您的数据集提供描述。

请注意,您可以将 'WMO Data Policy' 从 'core' 更改为 'recommended',或者修改默认的 Metadata Identifier。请保持数据策略为 'core',并使用默认的 Metadata Identifier。

接下来,检查定义 'Temporal Properties' 和 'Spatial Properties' 的部分。您可以通过更新 'North Latitude'、'South Latitude'、'East Longitude' 和 'West Longitude' 字段来调整边界框:

Metadata Editor: temporal properties, spatial properties

接下来,填写定义 '数据提供者联系信息' 的部分:

Metadata Editor: contact information

最后,填写定义 '数据质量信息' 的部分:

完成所有部分后,点击 'VALIDATE FORM' 并检查表单是否有任何错误:

Metadata Editor: validation

如果有任何错误,请更正并再次点击 'VALIDATE FORM'。

确保没有错误,并且您看到一个弹出窗口,指示您的表单已验证成功:

Metadata Editor: validation success

接下来,在提交数据集之前,请检查数据集的数据映射。

配置数据映射

由于您使用模板创建了数据集,因此数据集映射已预先填充了 'weather/surface-based-observations/synop' 模板的默认插件。在 wis2box 中,数据插件用于在数据发布到 WIS2 通知之前对其进行转换。

Data Mappings: update plugin

请注意,您可以点击“Update”按钮更改插件的设置,例如文件扩展名和文件模式。目前可以保留默认设置。

提交您的数据集

最后,您可以点击“submit”按钮发布您的数据集。

您需要提供之前创建的 'processes/wis2box' 的授权令牌。如果尚未创建,可以按照准备部分的说明创建新的令牌。

提交数据集后,请检查是否收到以下消息,表明数据集已成功提交:

Submit Dataset Success

点击“OK”后,您将被重定向到数据集编辑器主页。现在,如果您点击“Dataset”标签,应该会看到新创建的数据集:

Dataset Editor: new dataset

查看发现元数据的 WIS2 通知

打开 MQTT Explorer。如果您已连接到代理,应该会看到在主题 origin/a/wis2/<your-centre-id>/metadata 上发布的新 WIS2 通知:

MQTT Explorer: WIS2 notification

检查您发布的 WIS2 通知的内容。您应该会看到一个符合 WIS 通知消息 (WNM) 格式的 JSON 结构。

Question

WIS2 通知发布在哪个主题上?

点击查看答案

WIS2 通知发布在主题 origin/a/wis2/<your-centre-id>/metadata 上。

Question

尝试在 WIS2 通知中找到您在发现元数据中提供的标题、描述和关键字。您能找到它们吗?

点击查看答案

您在发现元数据中提供的标题、描述和关键字并未出现在 WIS2 通知的有效负载中!

相反,请尝试在 WIS2 通知的“links”部分中查找规范链接:

WIS2 notification for metadata, links sections

WIS2 通知包含已发布的 WCMP2 记录的规范链接。

将此规范链接复制并粘贴到浏览器中以访问 WCMP2 记录。根据浏览器设置,您可能会被提示下载文件,或者文件可能会直接显示在浏览器中。

您将在 WCMP2 记录中找到您提供的标题、描述和关键字。

wis2box 仅提供有限数量的预定义模板。这些模板是为常见类型的数据集设计的,但可能无法始终匹配专业化数据。对于所有其他类型的数据集,您可以通过选择 Template=other 来创建数据集。

Template=other

接下来,我们将使用 Template=other 创建第二个数据集。

再次点击“Create New ...”以创建新数据集。使用之前使用的相同 centre-id,它应该在下拉列表中可用。对于 Template,选择 other

Create New Dataset Form: Initial information

点击 continue to form 继续,您将再次看到 Dataset Editor Form

创建发现元数据

为“Title”和“Description”字段提供您自己的值,并确保用描述性名称替换自动生成的“Local ID”:

Metadata Editor: title, description, keywords

请注意,由于您选择了 Template=other,需要您通过下拉列表为“Discipline”和“Sub-Discipline”定义 WIS2 主题层次结构。

在本练习中,请选择子学科主题 "prediction/analysis/medium-range/deterministic/global":

Metadata Editor: title, description, keywords

由于您使用了 Template=other,未预定义任何关键字。请确保添加至少 3 个您自己选择的关键字:

Metadata Editor: title, description, keywords

在填写必填字段后,完成表单的其余部分,包括“Temporal Properties”、“Spatial Properties”和“Contact Information of the Data Provider”,并确保验证表单。

配置数据映射

当使用 Template=other 时,不会提供默认数据映射。因此,数据集映射编辑器将为空,用户必须根据其特定需求配置映射。

Data Mappings: update plugin

点击“ADD A PLUGIN +”为数据集添加数据插件。

选择名称为 "Universal data without conversion" 的插件。此插件旨在发布数据时不应用任何转换。

添加此插件时,您需要指定 File ExtensionFile Pattern(由正则表达式定义),以匹配数据文件的命名模式。对于 "Universal"-plugin,File Pattern 还用于确定数据的 "datetime"-属性。

从文件名解析日期时间

"Universal"-plugin 假定正则表达式中的第一个分组对应于数据的日期时间。

默认 File Pattern 是 ^.*?_(\d{8}).*?\..*$,它匹配以下模式:下划线后跟 8 位数字,再跟随任意字符和文件扩展名前的点。例如:

  • mydata_20250101.txt 将匹配并提取 2025 年 1 月 25 日作为数据的日期时间属性
  • mydata_2025010112.txt 不匹配,因为有 10 位数字而不是 8 位
  • mydata-20250101.txt 不匹配,因为日期前是连字符而不是下划线

使用 "Universal"-plugin 导入数据时,可以将文件重命名为匹配默认模式,或者更新 File Pattern,确保正则表达式中的第一个分组对应于日期时间。

目前保留“File Name”的默认值,因为它们与您将在下一个实践环节中导入的数据匹配:

Data Mappings: update plugin

点击“SAVE”保存插件设置,并验证您现在可以在数据集映射编辑器中看到插件:

Data Mappings: update plugin

请注意,当您导入数据时,文件扩展名和文件名模式必须与您在此处提供的设置匹配,否则数据将无法被处理,且 wis2box-management 容器将记录 ERROR 消息。

提交并查看结果

最后,提供之前创建的 'processes/wis2box' 的授权令牌,然后点击“submit”发布您的数据集。

成功提交后,您的新数据集将出现在 Dataset 标签中:

Dataset Editor: new dataset

打开 MQTT Explorer,如果您已连接到代理,应该会看到另一个新的 WIS2 通知发布在主题 origin/a/wis2/<your-centre-id>/metadata 上。

Question

访问 wis2box-UI,地址为 http://YOUR-HOST

您看到列出了多少个数据集?如何查看每个数据集使用的 WIS2 主题层次结构,以及如何查看每个数据集的描述?

点击查看答案

打开 http://YOUR-HOST 上的 wis2box UI,您应该会看到列出了 2 个数据集及其 WIS2 主题层次结构。要查看每个数据集的描述,您可以点击“metadata”,这将重定向到 wis2box-api 提供的相应“discovery-metadata”项。

Question

尝试更新您最后创建的数据集的描述。更新描述后,您是否看到在主题 origin/a/wis2/<your-centre-id>/metadata 上发布了新的 WIS2 通知?新通知与之前的通知有什么区别?

点击查看答案

更新数据集后,您应该会看到在主题 origin/a/wis2/<your-centre-id>/metadata 上发送了新的数据通知消息。

在消息中,"rel": "canonical" 的值将更改为 "rel": "update",表示之前发布的数据已被修改。要查看更新后的描述,将 URL 复制粘贴到浏览器中,您应该能够看到更新后的描述。

Question

尝试通过更改“子学科主题”中的选择,更新您最后创建的数据集的主题层级。您是否看到在主题 origin/a/wis2/<your-centre-id>/metadata 上发布了新的 WIS2 通知?

点击查看答案

无法更新现有数据集的主题层级。在数据集创建后,数据集编辑表单中的主题层级字段将被禁用。如果您想使用不同的主题层级,请先删除现有数据集,然后使用所需的主题层级创建一个新数据集。

结论

恭喜!

在本次实践课程中,您学习了如何:

  • 使用 wis2box-webapp 数据集编辑器
  • 使用 Template=weather/surface-based-observations/synop 和 Template=other 创建新数据集
  • 定义您的发现元数据
  • 审核您的数据映射
  • 发布发现元数据并查看 WIS2 通知