· 光绪总督
性能数据(riro.de)
内容提要
瑞士每年都有12场比赛与飞鸽一起举行,通过分析飞行时间和从释放点到每只鸽家阁的距离,可以计算出每只鸽的平均速度,三分之一的参加鸽子('prizes')被列出来,这些比赛的结果(包括速度,分数等)在RIRO上公布(RIRO).http://www.bas-riro.de/).
使用 Python 脚本和正则表达式( S)GitHub 图像),可以将寄存鸽的性能数据导入数据库(这里,MySQL)汇总,然后格式化为HTML。这为育种者提供了它们鸽子 ' 结果的实际概况。
执行情况
数据库
数据模型的设计尽可能简单。 虽然数据可以高度正常化和输入,但对于HTML5/JavaScript / CSS中的结果页的最终目标来说,这太过分了。 因此,在这种情况下,在 MySQL 数据库中只创建了两个表格:
- 2022 Flugsaison (英语).
- 每次飞行的鸽子(等级,分数,速度等)结果,连同汇总信息(饲养者数量,鸽子数量等).
- 2022 Eingesetzte Tauben (英语).
- 在这里,对于鸽子仍然或再次使用的每一次飞行,都应该可见.
以下语句可用于创建表格:
CREATE TABLE `2022_Flugsaison` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`taubennr` varchar(255) NOT NULL,
`mmin` varchar(255) NOT NULL,
`prs_fg` varchar(255) DEFAULT NULL,
`prs_rv` varchar(255) DEFAULT NULL,
`aspkt_fg` varchar(255) DEFAULT NULL,
`aspkt_rv` varchar(255) DEFAULT NULL,
`insert_dttm` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`km` varchar(255) NOT NULL,
`prs` varchar(255) NOT NULL,
`auflassort` varchar(255) NOT NULL,
`prs_zt` varchar(255) NOT NULL,
`flugnummer` varchar(255) NOT NULL,
`prs_tb` varchar(255) DEFAULT NULL,
`flugdatum` date DEFAULT NULL,
`anz_ztr_fg` varchar(255) DEFAULT NULL,
`anz_ztr_rv` varchar(255) DEFAULT NULL,
`anz_tbn_fg` varchar(255) DEFAULT NULL,
`anz_tbn_rv` varchar(255) DEFAULT NULL,
`prs_rg` varchar(255) DEFAULT NULL,
`anz_tbn_rg` varchar(255) DEFAULT NULL,
`anz_ztr_rg` varchar(255) DEFAULT NULL,
`aspkt_rg` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=917 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE `2022_Eingesetzte_Tauben` (
`id` int NOT NULL AUTO_INCREMENT,
`taubennr` varchar(255) NOT NULL,
`flugnummer` varchar(255) NOT NULL,
`insert_dttm` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=297 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
数据来源
这个项目有两个来源可能值得关注:
- 业绩数据来自 http://www.bas-riro.de/
- 来自TIPES设备的数据 https://tipes.de/
不幸的是,排名数据差异很大,因赛车协会,国家,有时甚至因飞行而异。 例如,当某些飞行与其他赛车协会一起进行时,就可能出现这种情况,最终形成了一个全面的排名清单.
来自Tipes设备的数据包括每个鸽子的注册到达时间,并成为创建总体排名的基础. 幸运的是,这个数据总是格式一致.
数据处理
方法
读取有时是多种多样的文本数据时,通常使用正则表达式。通过定义一套从数据中确认和提取的合成规则,单个文本组件可以根据特定的分隔符(例如空格)进行解析。由于某些文本组件可能并不总是存在的,因此可以在合成规则中宣布为“可选的”部分。
网站上 https://regex101.com/,您可以创建、检查、验证和测试这些规则。

单个的色码组件随后可以很容易地用于几乎所有编程语言.
读取 TIPES 数据
Tipes 设备的数据不仅包括抵达时间,而且还列出飞行中输入的每个鸽子。这为统计表明鸽子是否实际进入相应飞行提供了良好依据。以下就是一个例子:

对于这一具体格式,以下正则表达式证明是有用的:
^([0-9][0-9][0-9][0-9])([1-9][0-9])([A-Z][A-Z]?)\s*(0*)([1-9][0-9]*w?)\s*([0-9]*)\s*([0-9A-Z]*)(\*)([0-9]*;)([A-Z][A-Z]?)([0-9]*).([1-9][0-9]).([0-9]*w?);([a-zA-Z0-9.]*)$
详细的处理指令可以在公共的GitHub寄存器中找到.
读取性能数据( riro)

对于这种格式,下列正则表达式已证明是有用的:
^(\s*)([1-9][0-9]*[a-z]?)(\s*)([1-9][0-9]*[a-z]?)?(\s*)([1-9][0-9]*[a-z]?)?(\s*)([0-9][A-Z][0-9]\/)?(\s*)([0-1][0-9]*)?(\s*)([0-9]*)?(\s*)([0-9]*)?(\s*)([a-zA-Z]*)?(\s*)([0-9]*)(\s*)([0-9]*)?(\s*)([0-9]*W?\s)(\s*)([a-zA-Zäöüéèß&]*[.,]?\s*[,]?\s*[a-zA-Zäöüéèß&]*\s*[,+]?[a-zA-Zäöüéèß&]*\s*[+-.\/]*\s*[a-zA-Zäöüéèß&]*.?)(\s*)([0-9][0-9])(\s*)([0-9]*\/\s*[0-9]*)?(\s*)([0-9][0-9]?\s)?(\s*)([0-9][0-9]?\s)?(\s*)([0-9]*.[0-9]*.[0-9]*)(\s*)(-?[0-9]\s)?(\s*)([0-9]*,[0-9]*)(\s*)([0-9]*,[0-9]*)?(\s*)([0-9]*,[0-9]*)?(\s*)([0-9]*,[0-9]*)?(\s*)([A-Z])?(\s*)([0-9]*\/\s*[0-9]*)(\s*)([0-9]*)(\s*)([0-9]*,?[0-9]*)(\s*)([0-9]*)(\s*)([0-9]*)(\s*)$
这使得能够有条理地提取:
- 鸽子数量(包括国籍、性别和出生年份)
- 军衔(区域、团体等)
- Ace点( 区域, 组等)
- 速度
- 育种者的名字
- …
详细的处理指令可以在公共的GitHub寄存器中找到.
数据汇总
现在所有必要的数据都输入了MySQL数据库,重要的是以适当的格式将其直观化. 例如,查询每个鸽子和飞行的结果并将其汇总到一个表格中可以实现如下:
SELECT EING.taubennr,
CAST(EING.flugnummer AS UNSIGNED) AS flugnummer,
RESULTATE.prs_fg,
RESULTATE.prs_rv,
RESULTATE.prs_zt,
IF(RESULTATE.aspkt_fg IS NULL OR RESULTATE.aspkt_fg='',NULL,CAST(REPLACE(RESULTATE.aspkt_fg,',','.') AS DECIMAL(4,2))) AS aspkt_fg,
IF(RESULTATE.aspkt_rv IS NULL OR RESULTATE.aspkt_rv='',NULL,CAST(REPLACE(RESULTATE.aspkt_rv,',','.') AS DECIMAL(4,2))) AS aspkt_rv
FROM brieftauben.`2022_Eingesetzte_Tauben` AS EING
LEFT JOIN brieftauben.`2022_Flugsaison` AS RESULTATE ON RESULTATE.taubennr = EING.taubennr AND RESULTATE.flugnummer = EING.flugnummer
数据可视化
SQL查询的结果可以根据需要进一步转化和汇总,然后输出为HTML/JavaScript/CSS网站等.

为了让这个可以打印, 我还执行了一个“ PDF 导出 ” 按钮。 输出可能并不漂亮, 但功能良好 。

现在所有步骤都已经完成,您可以导入,处理,最后在每次飞行后用MySQL中的相关数据更新网站,只需点击几下即可。这些网站的例子见: https://patrick-hirschi.ch/brieftauben/
存档原始文章 文章中的媒体信用被保留.
← 日志