推計震度分布図作図用データ
概要
最大震度5弱以上を観測した地震について、観測点のない地域についても250mメッシュの面的に推計する。
資料名
推計震度分布図作図用データ
配信形式
BUFR(二進形式汎用気象通報式)
データ種類コード
IXAC41
WebSocket圧縮形式
なし
配信形式
推計震度分布図は、GPVとなりデータ量があることからBUFR形式となりバイナリデータとなります。
512KiB以上の電文について分割して配信されますので、終了節がない場合は適宜利用者で電文の結合の上ご利用ください。
分割報に付加する符号の表現については、RRA
-RRX
とし(WMO全球通信システム(GTS)で定義されている遅延報で運用)、分割第2報目から付与されます(1報目は付与なし)。
APIでは、head.designation
の 指定コード の場所で表現します。
利用に際しての留意事項
推計震度分布図で示す個々のメッシュの震度は、各メッシュの矩形内が同一震度であることを示すものではなく、またメッシュの境界線が震度の境界でもありません。
したがって、分布図を必要以上に拡大してメッシュの境界線を強調してもあまり意味がありません。また必要以上の縮尺に拡大することは適切ではありません。
図を活用する場合、大きな震度の面的な拡がり具合やその形状に着目していただくことが重要です。また、推計された震度の値は、場合によっては1階級程度異なることがあります。
※技術情報より
分割された電文の結合の方法
TypeScript による実装例です。 なお、この実装は簡易的なものであり受信順序などにより正しく動作しない場合があります。
Package: @dmdata/api-types
import { APITypes } from '@dmdata/api-types';
// 分割電文の格納
const delayTelegrams: { [key in string]: APITypes.WebSocketV2.Event.Data[]; } = {};
function ixac41(data: Buffer){
// IXAC41 の図作成処理
}
// WebSocket から受信する電文のイベント
event.on('data', (data: APITypes.WebSocketV2.Event.Data) => {
if (data.head.type === 'IXAC41'){
const bodyChunk = Buffer.from(data.body, data.encoding ?? 'utf-8');
// 電文の識別名を作成する(GTS基準)
const groupName = `${data.head.type} ${data.head.author} ${data.head.time}`;
// BUFR終端の識別符号があるかチェック
// 終端がある電文が来たら今まで来ていた電文を結合する
if (bodyChunk.subarray(-4).includes('7777')) {
const bodyChunks: Buffer[] = [
...delayTelegrams[groupName],
bodyChunk
];
// 複数の電文を結合
const body = Buffer.concat(bodyChunks);
ixac41(body);
return;
}
delayTelegrams[groupName] ??= [];
// 順番通りに来ていると想定して、 受信した順に追加していく
delayTelegrams[groupName].push(bodyChunk);
}
});
サンプ ルデータ
250mメッシュの「推計震度分布図」サンプルデータ(気象業務支援センター)
配信資料に関するお知らせ 2023/01/11 - 上記サンプルの構造の例・フォーマット状態