l-four / notam
解析ICAO格式的NOTAM消息。
1.0.0
2023-02-15 10:47 UTC
This package is not auto-updated.
Last update: 2024-09-25 18:29:30 UTC
README
演示
https://notam-reader.kyahrindlisbacher.com/
安装
composer require l-four/notam
用法
首先我们将NOTAM字符串分词成一个标记数组。然后可以将标记解析成一个NOTAM对象。
这是基本用法
require __DIR__ . '\vendor\autoload.php';
$notam_string = 'J2187/22 NOTAMN' .
'Q) YBBB/QMXLC/IV/M/A/000/999/2738S15243E005' .
'A) YAMB' .
'B) 2207062200 C) 2207070400' .
'E) TWY Z NOT AVBL DUE PARKED ACFT';
$tokens = \LFour\notam\NotamFunctions::tokenize_notam($notam_string);
print_r($tokens);
这将输出一个标记数组
Array
(
[0] => LFour\notam\TOKEN Object
(
[type] => LFour\notam\NotamToken Enum
(
[name] => IDENT_SERIES
)
[start] => 0
[end] => 1
)
... etc
)
每个标记代表NOTAM字符串的一部分。
使用类型枚举来识别标记类型。
可以通过使用 substr()
函数来检索标记的值。
$token = $tokens[0];
$value = substr($notam_string, $token->start, $token->end - $token->start);
print_r($value);
输出: J
为了更便捷的使用,可以将标记解析成一个NOTAM对象。
$notam = \LFour\notam\NotamFunctions::object_from_tokens($tokens, $notam_string);
print_r($notam->ident->series);
输出: J
标记类型参考表
标记 | 含义 |
---|---|
WHITE_SPACE | 空白字符 |
SLASH | 斜杠 |
IDENT_SERIES | 标识系列 |
IDENT_NUMBER | 标识号码 |
IDENT_YEAR | 标识年份 |
IDENT_TYPE | 标识类型 |
IDENT_REF_YEAR | 标识参考年份 |
IDENT_REF_NUMBER | 标识参考号码 |
IDENT_REF_SERIES | 标识参考系列 |
UNKNOWN | 未知 |
Q | 限定行 |
Q_FIR | 限定飞行信息区 |
Q_NOTAM_CODE | 限定NOTAM代码 |
Q_TRAFFIC | 限定交通 |
Q_PURPOSE | 限定目的 |
Q_SCOPE | 限定范围 |
Q_LOWER | 限定低飞行高度 |
Q_UPPER | 限定高飞行高度 |
Q_COORDINATES | 限定坐标 |
Q_RADIUS | 限定坐标半径 |
A | ICAO行 |
A_LOCATION | 机场或FIR的ICAO位置指示器 |
A_LOCATION_2 | 机场或FIR的ICAO位置指示器 |
A_EXTRA | ICAO额外 |
B | 有效期限行 |
B_DATE_TIME | 有效期限日期时间 |
C | 结束有效期限行 |
C_PERMANENT | 是否永久 |
C_ESTIMATE | 是否估计 |
C_DATE_TIME | 取消日期时间 |
D | 安排行 |
D_SCHEDULE | 安排 |
E | 正文行 |
E_TEXT | 正文文本 |
F | 低层行。 |
F_LEVEL | 低层 |
F_SFC | 低层是地面 |
G | 高层行 |
G_LEVEL | 高层 |
G_UNL | 高层是无限制的 |
完整示例
$notam_string = 'J2187/22 NOTAMN' .
'Q) YBBB/QMXLC/IV/M/A/000/999/2738S15243E005' .
'A) YAMB' .
'B) 2207062200 C) 2207070400' .
'E) TWY Z NOT AVBL DUE PARKED ACFT';
$tokens = \LFour\notam\NotamFunctions::tokenize_notam($notam_string);
print_r($tokens);
$token = $tokens[0];
$value = substr($notam_string, $token->start, $token->end - $token->start);
print_r($value);
$notam = \LFour\notam\NotamFunctions::object_from_tokens($tokens, $notam_string);
print_r($notam->ident->series);