在 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
:
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 ...":
将弹出一个窗口,要求您提供以下信息:
- Centre ID:这是由 WMO 成员指定的机构缩写(小写且无空格),用于标识负责发布数据的数据中心。
- Template:您正在为其创建元数据的数据类型。您可以选择使用预定义模板或选择 other。
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:
点击 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':
检查标题和关键字,根据需要更新,并为您的数据集提供描述。
请注意,您可以将 'WMO Data Policy' 从 'core' 更改为 'recommended',或者修改默认的 Metadata Identifier。请保持数据策略为 'core',并使用默认的 Metadata Identifier。
接下来,检查定义 'Temporal Properties' 和 'Spatial Properties' 的部分。您可以通过更新 'North Latitude'、'South Latitude'、'East Longitude' 和 'West Longitude' 字段来调整边界框:
接下来,填写定义 '数据提供者联系信息' 的部分:
最后,填写定义 '数据质量信息' 的部分:
完成所有部分后,点击 'VALIDATE FORM' 并检查表单是否有任何错误:
如果有任何错误,请更正并再次点击 'VALIDATE FORM'。
确保没有错误,并且您看到一个弹出窗口,指示您的表单已验证成功:
接下来,在提交数据集之前,请检查数据集的数据映射。
配置数据映射
由于您使用模板创建了数据集,因此数据集映射已预先填充了 'weather/surface-based-observations/synop' 模板的默认插件。在 wis2box 中,数据插件用于在数据发布到 WIS2 通知之前对其进行转换。
请注意,您可以点击“Update”按钮更改插件的设置,例如文件扩展名和文件模式。目前可以保留默认设置。
提交您的数据集
最后,您可以点击“submit”按钮发布您的数据集。
您需要提供之前创建的 'processes/wis2box' 的授权令牌。如果尚未创建,可以按照准备部分的说明创建新的令牌。
提交数据集后,请检查是否收到以下消息,表明数据集已成功提交:
点击“OK”后,您将被重定向到数据集编辑器主页。现在,如果您点击“Dataset”标签,应该会看到新创建的数据集:
查看发现元数据的 WIS2 通知
打开 MQTT Explorer。如果您已连接到代理,应该会看到在主题 origin/a/wis2/<your-centre-id>/metadata
上发布的新 WIS2 通知:
检查您发布的 WIS2 通知的内容。您应该会看到一个符合 WIS 通知消息 (WNM) 格式的 JSON 结构。
Question
WIS2 通知发布在哪个主题上?
点击查看答案
WIS2 通知发布在主题 origin/a/wis2/<your-centre-id>/metadata
上。
Question
尝试在 WIS2 通知中找到您在发现元数据中提供的标题、描述和关键字。您能找到它们吗?
点击查看答案
您在发现元数据中提供的标题、描述和关键字并未出现在 WIS2 通知的有效负载中!
相反,请尝试在 WIS2 通知的“links”部分中查找规范链接:
WIS2 通知包含已发布的 WCMP2 记录的规范链接。
将此规范链接复制并粘贴到浏览器中以访问 WCMP2 记录。根据浏览器设置,您可能会被提示下载文件,或者文件可能会直接显示在浏览器中。
您将在 WCMP2 记录中找到您提供的标题、描述和关键字。
wis2box 仅提供有限数量的预定义模板。这些模板是为常见类型的数据集设计的,但可能无法始终匹配专业化数据。对于所有其他类型的数据集,您可以通过选择 Template=other 来创建数据集。
Template=other
接下来,我们将使用 Template=other 创建第二个数据集。
再次点击“Create New ...”以创建新数据集。使用之前使用的相同 centre-id,它应该在下拉列表中可用。对于 Template,选择 other:
点击 continue to form 继续,您将再次看到 Dataset Editor Form。
创建发现元数据
为“Title”和“Description”字段提供您自己的值,并确保用描述性名称替换自动生成的“Local ID”:
请注意,由于您选择了 Template=other,需要您通过下拉列表为“Discipline”和“Sub-Discipline”定义 WIS2 主题层次结构。
在本练习中,请选择子学科主题 "prediction/analysis/medium-range/deterministic/global":
由于您使用了 Template=other,未预定义任何关键字。请确保添加至少 3 个您自己选择的关键字:
在填写必填字段后,完成表单的其余部分,包括“Temporal Properties”、“Spatial Properties”和“Contact Information of the Data Provider”,并确保验证表单。
配置数据映射
当使用 Template=other 时,不会提供默认数据映射。因此,数据集映射编辑器将为空,用户必须根据其特定需求配置映射。
点击“ADD A PLUGIN +”为数据集添加数据插件。
选择名称为 "Universal data without conversion" 的插件。此插件旨在发布数据时不应用任何转换。
添加此插件时,您需要指定 File Extension 和 File 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”的默认值,因为它们与您将在下一个实践环节中导入的数据匹配:
点击“SAVE”保存插件设置,并验证您现在可以在数据集映射编辑器中看到插件:
请注意,当您导入数据时,文件扩展名和文件名模式必须与您在此处提供的设置匹配,否则数据将无法被处理,且 wis2box-management 容器将记录 ERROR 消息。
提交并查看结果
最后,提供之前创建的 'processes/wis2box' 的授权令牌,然后点击“submit”发布您的数据集。
成功提交后,您的新数据集将出现在 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 通知