LandXMLに測地系は書いてある? — J-LandXMLのCoordinateSystemの読み方と、高さがずれる理由

,

LandXMLに測地系は書いてある? — J-LandXMLのCoordinateSystemの読み方と、高さがずれる理由

LandXMLに測地系は書いてある? — J-LandXMLのCoordinateSystemの読み方と、高さがずれる理由

書ける場所はあります。ただし必須ではありません。 国土交通省の3次元設計データ交換標準(J-LandXML)で座標系を書く場所は CoordinateSystem 要素ですが、この要素は仕様上「出現回数 0 又は 1」——つまり丸ごと無くても仕様違反にならないのです。しかも書けるのは測地系名・系番号・鉛直基準名といった文字列だけで、EPSGコードの欄はありません。DXFに測地系が書かれていない問題と、構造はよく似ています。


LandXMLとJ-LandXMLの関係

LandXMLは土木・測量分野のデータ交換用のXMLフォーマットです。日本ではこれをそのまま使うのではなく、国土交通省が国内向けにサブセット化・拡張した「LandXML1.2に準じた3次元設計データ交換標準(案)」(略称 J-LandXML)が使われています。

本記事で参照するのは Ver.1.4(令和3年3月・国土交通省国土技術政策総合研究所) です。バージョンは1.3・1.6なども公開されているので、手元のデータがどの版に準じているかは、後述の「適用基準」で確認できます。

J-LandXMLは「本書で記載していないLandXML1.2の要素については、それらの要素の使用を制限するものではない」としています。つまり標準が定めていない属性が書かれていることもある、というのが前提です。


座標系はここに書かれている:CoordinateSystem

J-LandXML Ver.1.4 における記入例は次のとおりです。

<CoordinateSystem
  name="CRS1"
  horizontalDatum="JGD2000"
  verticalDatum="O.P"
  horizontalCoordinateSystemName="9(X,Y)"
  desc="第9系">
  <Feature>
    <Property label="differTP" value="-1.3000"/>
  </Feature>
</CoordinateSystem>

読み方は4つです。

属性 意味 書かれる値
horizontalDatum 測地原子(水平の測地系) JGD2000 / JGD2011 / TD(旧日本測地系)
horizontalCoordinateSystemName 水平座標系 1(X,Y)19(X,Y)(平面直角座標系の系番号)
verticalDatum 鉛直原子 T.P や主要河川の基準名(O.P A.P など)
desc 注記 「第9系」のような人間向けの説明

系番号は算用数字+(X,Y) という独特の書き方です。第9系なら 9(X,Y)。標準の対応表では、1(X,Y) が平面直角座標系第I系、19(X,Y) が第XIX系まで並んでいます。

上の例が意味していること

サンプルの horizontalDatum="JGD2000" verticalDatum="O.P" horizontalCoordinateSystemName="9(X,Y)" は、「日本測地系2000の平面直角座標系第9系、高さは大阪湾最低潮位(O.P.)基準」という宣言です。淀川水系の設計データを想定した例、ということになります。


落とし穴1:CoordinateSystem は必須ではない

これが最大の問題です。Ver.1.4 の仕様表で CoordinateSystem の出現回数は 「0 又は 1」。属性側にも「必須」の表記がありません。

つまり、座標系がまったく書かれていないJ-LandXMLファイルが、仕様に適合したまま存在し得ます。 受け取った側は、数値の桁と符号から系番号を推測するしかなくなります。

実務での対処は、DXFのときと同じです。

  • 受け取ったらまず CoordinateSystem の有無を確認する(テキストエディタで開いて CoordinateSystem を検索するだけで分かります)
  • 無ければ、既知点を1点添えてもらうか、系番号と測地系を書面で確認する
  • X座標が数十万m級の負の値かどうかなど、値の範囲から系のあたりを付ける(あくまで補助)

落とし穴2:EPSGコードの欄がない

Ver.1.4 の CoordinateSystem に規定されている属性は上記の4つ(+name)だけで、epsgCodegeoidNameellipsoidName といった属性は仕様書に登場しません。

そのため、GISへ取り込むときのEPSGコードは「測地系名+系番号」から自分で決めることになります。

測地系の記載 平面直角座標系のEPSG
TD(旧日本測地系) Tokyo Datum 系のコード(第I〜XIX系)
JGD2000 2443〜2461(第I系=2443)
JGD2011 6669〜6687(第I系=6669)

JGD2024のEPSG登録状況は別記事にまとめてあります。測地系名を読み飛ばしてEPSGを固定してしまうと、数百m単位で平行移動した成果になります。 TDJGD2000 の取り違えがいちばん危険です。

LandXML1.2のスキーマ側には epsgCode にあたる属性が存在するため、ソフトによってはそれを書き出していることがあります。あれば有力な手がかりですが、J-LandXML準拠のリーダが読んでくれる保証はありません。

落とし穴3:高さの基準が河川基準面かもしれない

verticalDatum は仕様書の説明が「主要河川の基準名」となっており、T.P.(東京湾中等潮位)以外の基準面が入ることを最初から想定しています。

そして、T.P.との差は CoordinateSystem の子要素として書かれます。

<Feature>
  <Property label="differTP" value="-1.3000"/>
</Feature>

differTP は「T.P.との標高差」です。Ver.1.4 の対応表には次の基準面が並んでいます。

河川名 基準名 T.P.との標高差(m)
東京湾中等潮位 T.P
北上川 K.P -0.8745
鳴瀬川 S.P -0.0873
利根川 Y.P -0.8402
荒川・中川・多摩川 A.P -1.1344
淀川 O.P -1.3000
吉野川 A.P -0.8333
渡川 T.P.W +0.113
琵琶湖 B.S.L +84.371

吉野川の「A.P」と荒川水系の「A.P」は別物である点に注意してください。基準名の文字列だけを見て変換すると、約30cmずれます。verticalDatumdifferTP は必ずセットで読む、というのが安全な運用です。

なお、Ver.1.4 には「Z値の基準面はこれとする」という独立した規定文はありません。高さの意味は verticalDatumdifferTP の宣言に完全に委ねられている、ということです。標高とジオイド高・楕円体高の関係についても仕様書は触れていません。

落とし穴4:座標値は「X座標、Y座標、標高」の順

CgPoint などの座標を持つ要素には、仕様書に同じ定型文が繰り返し書かれています。

座標値を X 座標、Y 座標、標高の順番にスペース区切りで入力する/標高は省略可能

<CgPoint name="T-5">-134713.643982 22106.715939</CgPoint>

日本の平面直角座標系はX=北、Y=東なので、この並びは「北, 東, 高さ」です。LandXMLが生まれた欧米圏の慣習(Y=northing)とは逆になります。海外製CADのインポータを通したときに点群が対角へ飛ぶのは、たいていここが原因です。

しかも標高は省略可能なので、2値しか入っていない座標列も正当です。3値前提でパースすると落ちます。

落とし穴5:角度の decimal dd.mm.ss は十進度ではない

座標系そのものの話ではありませんが、同じファイル内で事故が起きやすいので触れておきます。Units/MetricangularUnit には radians / grads / decimal degrees / decimal dd.mm.ss が選べます。

このうち decimal dd.mm.ss は、仕様書の注記どおり 「度と分の間をピリオドで区切り、分と秒は区切らずに続けて記載する」 書き方です。

例.10°25′35″の場合 → 10.2535

10.2535 を十進度として読むと 10.2535°(=10°15′13″)になり、約1分22秒=実距離で2km以上ずれます。度分秒と十進度の相互変換は別記事にまとめていますが、LandXMLではそもそも表記が十進度に見えるぶん、気づきにくいのが厄介です。


受け取ったJ-LandXMLの点検リスト

テキストエディタで開いて、上から順に確認するだけで大半の事故は防げます。

  1. 適用基準applicationCriterion のvalue(例 MlitLandXmlVer.1.4)で準拠バージョンを確認
  2. CoordinateSystem の有無:無ければ発注者・作成者に確認する
  3. horizontalDatumTD / JGD2000 / JGD2011 のどれか。TDなら旧日本測地系からの変換が要る
  4. horizontalCoordinateSystemNamen(X,Y) の n が想定の系番号か
  5. verticalDatumdifferTP:T.P.以外なら、T.P.系の他データと合わせる前に補正する
  6. angularUnitdecimal dd.mm.ss なら角度値の読み方を切り替える
  7. 座標値の並び:X(北)が先。CAD/GIS側の期待と合っているか

GeoConverter Pro のCSV入力画面

GeoConverter Pro はLandXMLを直接読むアプリではありませんが、J-LandXMLから抜き出した座標をCSVにして、系番号・測地系の当たりを付ける用途には使えます。CoordinateSystem が空のデータで既知点1点との照合をするとき、旧日本測地系・JGD2000・JGD2011・JGD2024を総当たりで比較できるのは実用的です。


まとめ

  • J-LandXMLの座標系は CoordinateSystem 要素。ただし出現回数「0又は1」=省略できる
  • 書けるのは horizontalDatum(JGD2000/JGD2011/TD)・horizontalCoordinateSystemName9(X,Y) 形式)・verticalDatumdescEPSGコードの欄はない
  • 高さは河川基準面のことがある。verticalDatumdifferTP(T.P.との標高差)は必ずセットで読む
  • 座標値はX(北)→Y(東)→標高の順。標高は省略可
  • decimal dd.mm.ss は十進度ではない(10.2535 = 10°25′35″)

出典

  • 国土交通省国土技術政策総合研究所「LandXML1.2に準じた3次元設計データ交換標準(案)Ver.1.4」(令和3年3月) https://www.mlit.go.jp/tec/content/001395568.pdf
  • 同 Ver.1.3(平成31年3月) https://www.nilim.go.jp/lab/qbg/researchfields/pdf/h31_basedLandXML1.2.v1.3.pdf
  • 同 運用ガイドライン(案)Ver.1.3 https://www.nilim.go.jp/lab/qbg/researchfields/pdf/h31_basedLandXML1.2.v1.3_guidline.pdf
  • 国土地理院「わかりやすい平面直角座標系」 https://www.gsi.go.jp/sokuchikijun/jpc.html

本記事の引用・表はVer.1.4(令和3年3月)の記載に基づく2026年8月時点の内容です。案件で適用される版・運用ガイドラインは発注者の指定に従ってください。


次に確認する


入門から通しで読むなら: 『日本の測地系がわかる本』 — 旧日本測地系から JGD2024 まで、座標がズレる理由と実務での扱いを1冊にまとめました(Kindle Unlimited 対応)


開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。


お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップへ戻る