WebSocket API仕様(地震情報(震源・震度に関する情報)受信者向け)¶
目次
地震情報(震源・震度に関する情報)について¶
- 地震情報(震源・震度に関する情報)は、気象庁から発表される情報を元に地震の発生場所(震源)やその規模(マグニチュード)、市町村名、市町村の震度などをお知らせするものです。
- 緊急地震速報とは性質が異なり、地震発生後、新しいデータが入るにしたがって、情報を発表しています。
- 気象庁では、「震源・震度に関する情報」、「各地の震度に関する情報」、「遠地地震に関する情報」を同一の電文で発表を行うため、本サービスも3種の情報を「地震情報(震源・震度に関する情報)」として通知します。
- 詳しくは、 気象庁のwebサイト をご参照ください。
注意事項¶
- 本サービスは、地震の発生を予知するものではありません。地震の観測情報をお知らせするものです。
- 本サービスは、気象庁が発表する地震情報(震源・震度に関する情報)に含まれる情報(都道府県、地域、対象市町村など)を用いて、震央地、マグニチュード、対象市町村の震度を通知するものです。
- 地震情報(震源・震度に関する情報)についての詳細は、 気象庁のwebサイト でご確認ください。
取り扱い対象データについて¶
- 本サービスで取り扱うデータには、「通常報」「訓練報」「試験報」の3つのモード(運用種別)が存在しております。データを利用する際は、これらのモードに対して適切な処理を行ってください。
- 例えば「訓練報」「試験報」モードのデータは利用しない、利用する場合は明らかに 訓練 や 試験 であることが分かるようにするなど、利用者の混乱を避けてください。
- 「訓練報」「試験報」モードのデータを、「通常報」データであるかのような処理は 行わない でください。
- モードの誤用によるトラブルについては、弊社は一切の責任を負わないものとします。
取り扱うモードは利用するサーバによって異なります。各サーバで取り扱うモードは、以下の通りといたします。
本番系WebSocketサーバでのAPI利用の場合¶
- 本番系WebSocketサーバでは、「通常報」のみを取り扱い、それ以外のモードは取り扱いません。
地震情報(震源・震度に関する情報)の通知について¶
- 気象庁が地震情報(震源・震度に関する情報)の発表時に、震度が観測された市町村をWebSocket API経由で通知します。
- 本サービスでは、気象庁で定義された市町村コード・運用種別・地震識別番号ごとの震度情報を通知します。
- 地震情報(震源・震度に関する情報)が発表されていない市町村は通知に含まれません。
WebSocket API 地震情報(震源・震度に関する情報)通知メッセージ仕様¶
地震情報(震源・震度に関する情報):WebSocket API通知メッセージ表
セクション パラメータ タイプ 設定値 意味 備考 version Hash 以下の2パラメータを設定 メッセージのバージョン情報設定セクション common_version String 任意 commonセクションのパラメータバージョン 現在は1のみ対応 details_version String 任意 detailsセクションのパラメータバージョン 現在は1のみ対応 common Hash 以下の4パラメータを設定 メッセージの共通情報設定セクション 以下の4パラメータはバージョン1のもの datatype String jmaearthquake_result メッセージのタイプ msgid String 任意 メッセージ毎の一意な番号 sendid String 任意 メッセージの配信元情報 senddatetime String YYYY-MM-DD HH:mm:SS+HH:mm形式 メッセージの送信時刻 details Array データタイプ毎のパラメータを設定 メッセージの詳細情報設定セクション 地震情報(震源・震度に関する情報)を設定します。 WebSocket APIからの地震情報(震源・震度に関する情報)通知メッセージ詳細
- version区(セクション)
- common_version:common区のバージョンが設定。(現在は"1"のみ利用)
- details_version:details区(地震情報(震源・震度に関する情報))のバージョンが設定。(現在は"1"のみ利用)
- common区(セクション)
- common_version: "1"は、以下のパラメータを含みます。
- datatype:地震情報(震源・震度に関する情報)のdatatype名:"jmaearthquake_result"が設定されます。
- msgid:地震情報(震源・震度に関する情報)毎の一意な値が設定されます。
- sendid:地震情報(震源・震度に関する情報)の発信元情報などが設定されます。(例:JMA など)
- senddatetime:地震情報(震源・震度に関する情報)通知メッセージの送信時刻が設定されます。(YYYY-MM-DD HH:mm:SS+HH:mm形式)
- common_version: "1"は、以下のパラメータを含みます。
- details区(セクション)
- details区は、バージョンによりパラメータが異なります。
- version区(セクション)
サンプルプログラム¶
html(javascript)
WebSocket APIへの接続と認証および地震情報(震源・震度に関する情報)メッセージの受信表示処理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
<html> <head> </head> <body> <div id="output"></div> <script> (function() { // websocketサーバアドレスおよびポートを指定 var ws = new WebSocket("wss://localhost:443"); var output = document.getElementById('output'); function logStr(eventStr, msg) { return '<div>' + eventStr + ':' + msg + '</div>'; } // websoket接続確立イベント処理 ws.onopen = function() { output.innerHTML += logStr('connect', 'success'); // websocket認証メッセージ var auth_message = { version: { common_version: "1", // commonセクションバージョン details_version: "1" // detailsセクションバージョン }, common: { datatype: "authentication", // データタイプ:認証(authenticaion指定) msgid: "*", // *を設定(認証では利用しない) sendid: "*", // *を設定(認証では利用しない) senddatetime: "*" // *を設定(認証では利用しない) }, details: { password: "trialpass" // ユーザパスワードを設定(利用申請時に発行) }, sender: { version: "1", // senderセクションバージョン userid: "trialuser", // ユーザIDを設定(利用申請時に発行) termid: "000000001" // 接続端末識別IDを設定(ユーザがユニークな値となるよう任意に採番) }, receiver: { version: "1", // receiverセクションバージョン userid: "*", // *を設定(認証では利用しない) termid: "*" // *を設定(認証では利用しない) } }; // JSON形式に変換し、websocketサーバに送信 ws.send(JSON.stringify(auth_message)); }; // メッセージ受信イベント処理 ws.onmessage = function(e) { // JSON形式からオブジェクトに変換 var parse = JSON.parse(e.data); switch( parse.common.datatype ) { case "authentication": // 認証メッセージ受信処理 output.innerHTML += logStr('recieved', 'authentication result'); if( parse.details.resultcode === '200' ) { // 認証成功 output.innerHTML += logStr('authentication', 'success'); } else { // 認証失敗 output.innerHTML += logStr('authentication', 'failed'); } break; case "jmaearthquake_result":// 地震情報(震源・震度に関する情報)受信処理 // 地震情報(震源・震度に関する情報)メッセージ種別判別 for( var i = 0, len = parse.details.length; i < len; i++ ) { var data = parse.details[i]; // 地震情報(震源・震度に関する情報)(例:市町村コード:東京都千代田区:1310100) if( data.citycode == "1310100" ) { switch( data.controlstatuscode ) { case "0": // 通常報 break; case "1": // 訓練報 output.innerHTML += "<br><FONT color=\"#ff0000\">これは訓練報です。</FONT><br>"; break; case "2": // 試験報 output.innerHTML += "<br><FONT color=\"#ff0000\">これはテスト報です。</FONT><br>"; break; } output.innerHTML += "東京都千代田区:地震情報(震源・震度に関する情報)が震度 " + data.maxint + " に更新されました。<br>"; } } break; } }; // 切断イベント処理 ws.onclose = function (e) { output.innerHTML += logStr('disconnect', e.code + ' - ' + e.type); }; }()); </script> </body> </html>