
気象庁XMLの震源の緯度経度、測地系はどれ? — datum属性が「日本測地系」のときだけ現れる仕様と、+36.4+140.9-40000/ の読み方
属性が無ければ世界測地系です。
気象庁防災情報XMLの座標要素には datum という属性がありますが、辞書の定義は「測地系を示す(日本測地系の場合のみ表現する)」。スキーマ上、この属性が取れる値は「日本測地系」の1つだけです。世界測地系だと書く場所がそもそも存在しない。では、その属性を持たない座標をどう扱えばいいのでしょうか。
まず実物を見る
2026年9月6日3時00分ごろの茨城県沖の地震について発表された「震源・震度に関する情報」(電文種別 VXSE53)の、震源の座標です。
<Hypocenter>
<Area>
<Name>茨城県沖</Name>
<Code type="震央地名">471</Code>
<jmx_eb:Coordinate description="北緯36.4度 東経140.9度 深さ 40km">+36.4+140.9-40000/</jmx_eb:Coordinate>
</Area>
</Hypocenter>
この電文に datum 属性はありません(電文全体を検索しても datum の文字列は1つも出てきませんでした)。
そして、値のほうには測地系を示す情報がまったく含まれていません。+36.4+140.9-40000/ という文字列だけです。EPSGコードもCRSのURIも付いていない。基準は、属性が「無いこと」で表現されています。
+36.4+140.9-40000/ をどう読むか
この書式はISO 6709です。辞書の type.Coordinate の説明にそう書かれています。
(一般)地理空間情報(値はISO 6709の書式で記述する。ただし、例外として表1.1の備考欄に示す一部情報では、ISO6709で規定されている緯度、経度の整数部分の先頭の0を省略する場合がある。)
区切り文字はありません。符号そのものが区切りです。
| 部分 | 意味 |
|---|---|
+36.4 |
緯度 北緯36.4度(南緯なら -) |
+140.9 |
経度 東経140.9度(西経なら -) |
-40000 |
高さ −40,000m。つまり深さ40km |
/ |
終端記号 |
深さが「高さのマイナス」として、しかもメートル単位で入っているのが要注意です。緯度経度は度、深さはメートル。同じ文字列の中で単位が変わります。
もうひとつ、辞書が但し書きしている「整数部分の先頭の0を省略する場合がある」。ISO 6709の本来の書き方では経度の整数部は3桁(+140.9 なら問題ないが、たとえば東経40.9度は +040.9)ですが、一部の情報ではこの先頭0が落ちることがある、と気象庁自身が明記しています。桁数固定でスライスするパーサは壊れます。符号を目印に切り出すのが安全です。
datum属性の定義
気象庁が公開している辞書一式(令和8年1月29日一部更新)の、type.Coordinate の属性欄です。
| 属性 | 名称 | 説明 |
|---|---|---|
type |
分類 | 地理空間情報の分類を示す |
datum |
測地系 | 測地系を示す(日本測地系の場合のみ表現する) |
condition |
状態 | 震源がごく浅い場合などで例外的な状態を示す |
description |
文字列表現 | 文字列で表示する場合の表記法を記述する |
そして datum の値として辞書に載っているのは1つだけです。
"日本測地系"── 緯経度が”日本測地系”であることを示す。
XMLスキーマ(xsd、令和6年10月31日一部更新)の実装も同じです。
<xs:complexType name="type.Coordinate">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="xs:string" use="optional"/>
<xs:attribute name="datum" type="jmx_eb:enum.type.Coordinate.datum.attr" use="optional"/>
<xs:attribute name="condition" type="xs:string" use="optional"/>
<xs:attribute name="description" type="xs:string" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="enum.type.Coordinate.datum.attr">
<xs:restriction base="xs:string">
<xs:enumeration value="日本測地系"/>
</xs:restriction>
</xs:simpleType>
use="optional" で、列挙値は「日本測地系」の1個だけ。"世界測地系" も "JGD2011" も "WGS84" も、スキーマ上は書けません。
つまりこの仕様は、「例外のときだけ札を立てる」という設計です。既定の基準は無印で表され、そこから外れるものにだけ属性が付く。
「書かれていない基準」の、3つ目の型
このシリーズで公的データの座標系を追ってきて、基準の書かれ方には型があることが見えてきました。
| 型 | 例 | 読み手のすべきこと |
|---|---|---|
| 仕様書に明記 | 国土数値情報(製品仕様書に「JGD 2011 / (B, L)」) | 読むだけ |
| 注記1行だけ | e-Statの境界データ | 注記を探す |
| 例外にだけ札 | 気象庁防災情報XML(datum属性) | 属性が無いことの意味を仕様書で確認する |
| どこにも書かれていない | アメダスの地点表 | データ側から推定するしかない |
3つ目が厄介なのは、属性が無い状態が「不明」ではなく「既定値」を意味しているところです。ぱっと見は「測地系の記載なし」に見えるので、4つ目(不明)と区別がつきません。辞書の1行を読んで初めて、無印に意味があると分かります。
もし日本測地系だったら、どれだけずれるか
datum="日本測地系" が付いた座標を、世界測地系の地図にそのまま載せるとどうなるか。日本測地系から世界測地系への変換量(TKY2JGD)は、日本国内でおおむね400m前後、最大では約612mに達します。

震源の緯度経度は小数第1位までしかないので、そもそも0.1度=約11kmの丸めが入っています。612mは、その丸めの中に埋もれる大きさです。震央地名を表示するだけなら実害は出にくい。けれども震源を他のデータと重ねたり、距離を計算したりする段になると、400〜600mは無視できません。
なお、datum="日本測地系" を実際に付けて発表される電文が現在あるかどうかは、本記事では確認できていません。属性が用意されている以上、過去の電文や特定の情報種別で使われている(あるいは使われていた)可能性はあります。パーサを書くなら、値が来た場合の分岐は残しておくのが安全です。
type属性を見ないと単位が分からない
もうひとつ、パースの実務で効く話。type 属性には、辞書上こういう値が並んでいます。
"震源位置(度)"/"震源位置(度分)""観測所の位置""中心位置(度)"/"中心位置(度分)""実況位置(度)"/"実況位置(度分)""予想位置 12時間後(度)"/"予想位置 12時間後(度分)""火山の位置"/"火口の位置""前線(度)"/"領域(度)"
「(度)」と「(度分)」が並んでいます。 同じ Coordinate 要素でも、情報の種類によって値が十進度なのか度分なのかが変わる、ということです。+3620+14050/ のような度分表記を十進度として読めば、緯度36.2度のつもりが36度20分=36.33度になり、十数km動きます。
type を見ずに値だけをパースするコードは、扱う電文の種類を広げた瞬間に壊れます。
description属性は表示用、値は機械用
description="北緯36.4度 東経140.9度 深さ 40km" は全角の日本語で、そのまま画面に出せる文字列です。辞書の説明も「文字列で表示する場合の表記法を記述する」。
つまり表示用です。ここから数値を正規表現で抜き出す実装を見かけますが、全角数字・全角スペース・単位の表記ゆれに引きずられます。座標として使うなら要素の値(ISO 6709の文字列)を読むべきです。
まとめ
- 気象庁防災情報XMLの
CoordinateはISO 6709の文字列。符号が区切りで、末尾は/ - 深さは「高さのマイナス」でメートル単位。緯度経度は度なので、1つの文字列で単位が変わる
datum属性は「日本測地系の場合のみ表現する」。スキーマ上の列挙値も「日本測地系」1つだけ- したがって属性が無ければ日本測地系ではない。2026年9月6日発表の震源・震度情報を実際に確認したところ、
datumは出現しなかった type属性に「(度)」と「(度分)」があるので、値の単位はtypeを見て決める- 整数部の先頭0が落ちる例外があると気象庁自身が明記している。桁数固定のパースは避ける
出典
- 気象庁「気象庁防災情報XMLフォーマット情報提供ページ 技術資料」 https://xml.kishou.go.jp/tec_material.html
- 同「辞書一式」(令和8年1月29日一部更新) https://xml.kishou.go.jp/jmaxml_20260129_dictionary.xlsx
- 同「XMLスキーマファイル(xsd形式)一式」(令和6年10月31日一部更新) https://xml.kishou.go.jp/tec_material.html
- 気象庁「高頻度(地震火山)フィード」 https://www.data.jma.go.jp/developer/xml/feed/eqvol.xml
本記事の記述は2026年9月時点で公開されている資料と電文に基づきます。引用した属性定義は辞書一式およびXMLスキーマの本文を直接確認したものです。実物として挙げた電文は2026年9月6日発表の1件であり、すべての情報種別を確認したものではありません。
datum="日本測地系"が実際に使われる電文の有無、および気象庁がどの世界測地系(JGD2011等)を指しているかの明示的な記述は、本記事では見つけられませんでした。
次に確認する
- アメダス地点の緯度経度がどの測地系かをデータ側から詰める — 同じ気象庁でも、こちらは属性すら用意されていません
- 国土数値情報が製品仕様書で座標系をどう宣言しているかを確認する — 「明記されている」型の見本です
- e-Statの境界データで座標系がどこに書かれているかを確認する — 「注記1行だけ」型です
- 測地系が不明な座標をズレ量から見分ける手順を確認する — 属性も注記も無いときの最後の手段です
- 日本測地系と世界測地系のズレを地図で見る(GeoPrism JP) — 400〜600mがどんな見え方をするかを図で確認できます
- 書籍でまとめて学ぶ: 『日本の測地系Q&A』第13章「座標データの落とし穴」(Kindle Unlimited対応)
入門から通しで読むなら: 『日本の測地系がわかる本』 — 旧日本測地系から JGD2024 まで、座標がズレる理由と実務での扱いを1冊にまとめました(Kindle Unlimited 対応)
開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。
お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。
コメントを残す