LP(航空レーザ)のグリッドデータから、砂防フロンティアの区域設定アプリで変換できるTINテキストを作るプログラム

LP(グリッドデータ/GROUNDからサボフロンティア用TINを作るプログラムを軽量化対応にバージョンアップ)

航空レーザー測量の成果から、砂防フロンティアの区域設定システムの「Tin変換」に渡せるテキストを作るため、Pythonツールを作成した。当初は0.5mグリッド標高(_0.5g.txt)をそのままTIN化するところから始め、その後GROUND(_grd.txt)にも対応した。今回さらに、土石流の流下延長が約3kmに及ぶ長い渓流で、0.5mのままではデータが重すぎ、1mにしても砂防フロンティア側でフリーズして変換できないケースがあったため、入力格子間隔を自動判別し、必要に応じて1.5mや2mなどへ間引いて軽量なTINを作れるようにバージョンアップした。

2026年10月15日版の主な変更
  • 0.5m・1m・5mのグリッド入力を自動判定。
  • 0.5m入力では 0.5m/1.0m/1.5m/2.0m、1m入力では 1m/2m/5m、5m入力では 5m/10m を選択できるようにした。
  • 間引き時は周辺点の平均化ではなく、元の格子点を座標基準で残す方式とし、不要な平滑化を避けた。
  • GROUND(_grd.txt)のDelaunay三角形分割と、SHPポリゴンによる範囲限定機能も継続して利用できる。

なぜ「間引き機能」を追加したか

今回のきっかけは、土石流の流下延長が約3kmに近い長区間を砂防フロンティアで扱ったことだった。0.5mグリッドをそのままTIN化すると点数・三角形数が非常に多くなり、作成したTINテキストも大容量になる。実際に砂防フロンティア側で変換を試すと、0.5mでは重すぎて処理できず、1mまで粗くしてもデータ量がまだ大きく、フリーズして変換できないケースがあった。

そこで、元の地形データを必要以上に作り替えず、格子点を一定間隔で間引いてTINの点数と三角形数を減らす機能を追加した。0.5m入力の場合、1mなら点数は概ね1/4、1.5mなら約1/9、2mなら約1/16になるため、長い流下区間でも砂防フロンティアへ取り込みやすくなる。

0.5mを基準にした出力間隔点数の目安使いどころ
0.5m100%元データの細かさをそのまま使いたい場合
1.0m約25%まず試したい標準的な軽量化
1.5m約11%1mでも重い長区間での中間案
2.0m約6%かなり軽くしたい場合

間引きは処理を軽くする一方、細い谷、道路肩、小規模な段差などの表現は少しずつ粗くなる。そのため、最終採用する間隔は、代表箇所で0.5m・1m版と断面や区域結果を比較して決めるのがよい。

使用した標高の計測時期

今回の検討で使用したのは、提供された航空レーザー測量成果の格子標高TXTとGROUNDデータ。報告書に記載された航空レーザーの計測日は2023年12月20日~2024年2月12日の複数日で、成果の報告時期は2024年4月である。変換した日付が地形の計測日になるわけではない。

同じ場所を覆う国土地理院の1mメッシュDEMは比較用の別データであり、今回のTINテキストの変換元には使っていない。1mという格子間隔からレーザー計測日や公開日を推定することはできない。対象の1m DEMの原典・作業年度と提供履歴を照合したうえで日付を追記する。国土地理院の1m DEMは全国一斉に同じ日に公開されたものではなく、地域ごとに整備・更新されている。

測量成果に入っているデータ

航空レーザーは樹木や建物、地面などから反射した多数の点を取得する。地表面以外の点を分け、必要な部分で補間して、利用目的に合う成果を作る。

成果・形式中身の並び主な用途
LAS/LAZ位置・標高・分類などを持つ点群のバイナリ形式。LAZは圧縮形式。点群の保存、分類、地表面点の抽出。
オリジナル _org.txt地物も含む不規則な点群。提示されたTXTは1点1行の 番号,座標1,座標2,標高,付加情報。フィルタリングの元になる計測点の確認。
グラウンド _grd.txt地表面として抽出された不規則な点群。提示されたTXTは 番号,座標1,座標2,標高。地形モデルや格子標高の作成。2026/10/07版から直接TINテキスト変換にも対応。
グリッド標高 _0.5g.txt などGROUND等から補間して作成された一定間隔の格子標高。今回のツールでは0.5m・1m・5mの入力間隔を自動判定する。TINテキスト変換、DEMラスター作成。必要に応じて粗い間隔へ間引いて軽量化できる。
CSV成果/LEMCSVはカンマ区切り。提示されたLEMは格子標高を行列として記録する形式で、付属情報と組み合わせて位置・間隔を読む。対応するGIS・地形処理ソフトへの受け渡し。
DEM/DTM格子ごとに標高を持つ地形モデル。GeoTIFFなどのラスター形式にも保存できる。DTMは地表面を表す。地形表示、断面、地形表現図の作成。
変換後 Tin*.txt1行に三角形の3頂点:X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3。区域設定システムの「Tin変換」への入力。
LAS・LAZからグラウンドデータ、グリッドデータ(DEM)へ至る流れのイメージ
図 航空レーザ測量の点群から、地表点(グラウンドデータ)を抽出し、グリッド標高へ整理して利用するまでのイメージ。
この図と今回のツールの関係
図中ではグリッドデータをXYZテキストとして取り出す一般的なイメージも示しているが、今回作成したツールの実際の出力は、区域設定システムの「Tin変換」に合わせた Tin*.txt である。1行には三角形1枚分の3頂点を X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3 の順に出力する。変換元は提供されたグリッド標高 _0.5g.txt で、LAS/LAZやグラウンドデータからDEMを新たに作る処理はこのツールには含めていない。

報告書では、橋梁などで地面が隠れる部分にブレークラインを設定し、周囲の地表面点に合わせて補間している。今回のグリッド標高は、その処理を経て作られた成果なので、必要箇所で設定されたブレークラインの地形形状への影響を考慮したデータといえる。ただしTXTの格子点から元のブレークラインの線や三角形のつながりを復元するものではない。

GROUND対応(2026年10月7日版から継続)

従来版は0.5mグリッド標高を前提にしていたため、_grd.txt を入れると「0.5m間隔ではない」というエラーになっていた。GROUNDは規則正しい格子ではなく、不規則に並んだ地表点なので処理方法が異なる。

入力処理方法出力
_0.5g.txt0.5m格子の隣接点から三角形を作成Tin*.txt
X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3
_grd.txt不規則な地表点をDelaunay三角形分割

GROUNDから作るTINは、元の航空レーザー成果に含まれていたブレークラインや既存TINの三角形接続を復元するものではない。そのため、0.5g成果がある場所では0.5gを優先し、GROUNDは0.5gが無い場合やGROUNDから直接TIN化したい場合に使用する。

GROUNDは1ファイルが90~130MB程度になることがあり、全域を一度に三角形分割すると処理時間とメモリ使用量が大きくなる。実務では、必要な調査範囲のSHPを指定して処理する使い方が現実的である。GROUND+SHPの場合は、境界付近の三角形を作るため外側10mまでの点を一時的に読み込み、最後にポリゴン境界で切り取る。

変換ツールでTIN用テキストを作る

最新版では、グリッドTXTの座標間隔から0.5m・1m・5mを自動判定し、入力より細かい格子へ見せかけて増やすのではなく、元と同じか、より粗い間隔へだけ変換する。GROUNDは別ルートで自動判定してDelaunay三角形分割する。LAS/LAZそのものは直接読み込まず、_org.txtも対象外としている。

0.5m入力では 0.5m/1.0m/1.5m/2.0m、1m入力では 1m/2m/5m、5m入力では 5m/10m を選べる。0.5m→1.5mは3点おき、0.5m→2mは4点おきというように、座標値を基準に元の格子点を残す。

格子標高TXTからTINテキストへの変換画面
図1 TXTを1件・複数件、またはフォルダ単位で選ぶ変換画面。

ファイル名では入力を限定せず、指定したTXTの中身が格子標高の列構成と並びに合うかを確認してから処理する。格子の四角形を三角形に分け、各頂点の座標と標高を書き出す。出力間隔を粗くする設定では、平均や再補間は行わず、座標基準で既存格子点だけを間引く。座標系の変換は行わない。

おすすめの機能:ポリゴンで作業範囲を細かく決める

ポリゴンで必要な地形の範囲を指定した図
図2 必要な作業範囲をポリゴンで指定するイメージ。地図出典:国土地理院「地理院地図」。赤い輪郭の範囲指定を追記して掲載。

「SHPポリゴンの範囲内だけ作成する」にチェックを入れると、その範囲に重なる三角形だけを出力する。境界をまたぐ三角形は境界で切り取る。広い測量範囲を丸ごと変換するとファイルが大きくなり、実際にシステム側で変換できないことがあった。必要な区域だけに絞ると、出力データ量と変換時の負荷を抑えられる。

ポリゴンのフィールド名は問わず、形状を使う。1つのSHPに複数のポリゴンがあれば、その全ての範囲を合わせて処理する。箇所ごとに別々の出力が必要なら、箇所ごとにSHPと入力TXTを分ける。GISで選択している地物だけを使いたい場合は、その地物を別のSHPとして保存する。

SHPと格子TXTは同じ平面直角座標系の系番号・測地系・単位にそろえる。処理後は、GIS上の重なり、標高、欠測箇所を確認する。範囲を絞っても、システム側で必ず変換できることまで保証するものではない。

長い流下区間では「SHPで範囲を絞る」+「1.5mまたは2mへ間引く」を併用すると、さらに効果が大きい。 まず範囲を必要最小限にし、それでも砂防フロンティア側で重い場合に格子間隔を粗くする、という順番が使いやすい。

ダウンロードと作業手順

TINテキスト変換ツール(2026年10月15日 自動格子判定・軽量化対応版、ZIP)

  1. ZIPを展開する。
  2. GROUNDを使う場合、またはSHPで範囲を絞る場合は、初回のみ setup_polygon.bat を実行する。
  3. start.bat を起動する。
  4. グリッドTXTまたは _grd.txt を1件・複数件、またはフォルダで選ぶ。
  5. グリッド入力は0.5m・1m・5mを自動判定する。入力間隔に応じて、出力したい格子間隔を選ぶ。
  6. 範囲を絞る場合は「SHPポリゴンの範囲内だけ作成する」にチェックし、SHPを選ぶ。
  7. 元データと別の空フォルダを出力先に指定する。
  8. 作成された Tin*.txt を区域設定システムの「Tin変換」に渡す。

ツールが作るのは「Tin変換」に入れるためのテキストであり、システム固有の最終データへの変換はシステム側で行う。

今回の約3km級の長区間のように、0.5m・1mでも重い場合は、まず 1.5m を試し、それでも重ければ 2m を試す、という使い方を想定している。

更新履歴

  • 2026/10/15:0.5m・1m・5mグリッドの自動判定を追加。0.5m入力に1.5m間引きを追加し、長い流下区間向けに軽量化機能を強化。
  • 2026/10/14:0.5m入力を1m・2mへ間引いてTIN化する軽量化版を作成。
  • 2026/10/07:GROUND(_grd.txt)対応。入力形式の自動判定、Delaunay三角形分割、大容量GROUNDの警告を追加。
  • 2026/10/02:0.5mグリッドの欠測対応、SHPポリゴン範囲指定等を補正。

参考資料

コメント

このブログの人気の投稿

IJCAD(AutoCAD互換CAD) コマンド早見表

設計定数を求めるための代表N値について

WEB地図(国土地理院など)のズームレベルについて