QGISで3D点群データを表示・操作しよう
この記事でわかること
- QGISでの点群データ可視化方法
- QGISを使用した点群データの操作方法
- QGISを使用した点群データのプロセシング
こんな人におすすめ
- QGISで点群データを扱いたい方
はじめに
近年、行政・民間を問わず、建築、防災、アーカイブ、インフラの維持管理など、さまざまな分野で点群データを活用した取り組みが進められています。また、点群データを活用したデジタルツイン実現に向けて、複数の自治体から都道府県規模の大規模な点群データがオープンデータとして公開されています。
こうした点群データを高度に解析するためには専門のソフトウェアが必要になりますが、実は、QGISを使用することで普段のレイヤ操作と同様に、データの閲覧や簡単な処理をすることができます。
本記事では、オープンデータとして公開されている点群データを使用して、QGISの標準機能を使用して、点群データを表示したり処理したりする方法を解説します。
点群データ と QGIS
点群データとは
点群データとは、3次元空間内に存在する多数の点(ポイント)の集合体です。各点には座標が割り当てられており、(x, y, z)の3つの座標で位置を定義します。座標値のほか、色情報(R, G, B)や反射強度などの属性情報を持っている場合があります。点群データは、地形解析や森林計測、建物や物体のモデリングなど、様々な場面で活用されています。
点群データの公開
一部の自治体では、点群データをオープンデータとして公開しています。また、G空間情報センターなどのGISデータを扱うポータルサイトでは、オープンデータとして公開されている点群データのほか、有償の点群データを入手することもできます。
有償での提供であることに注意が必要ですが、国土交通省では道路管理の効率化を目的として、直轄国道の3次元点群データを公開しています。 プレスリリース公開時(2022年8月)では約9,000km分のデータでしたが、2024年10月現在では約21,000km分のデータが公開されています。
下記サイトでは、データの公開区間を閲覧できます。また、データを利用したい場合は「提供申込書」をダウンロードして申請し、所定の手続きを済ませることでデータを入手することができます。(詳しくは、一般社団法人 日本デジタル道路地図協会のサイトをご覧ください。)
QGISにおける点群データの対応
QGISでは、「Entwine Point Tile(EPT)」もしくは「LAS/LAZ」形式の点群データをサポートしています。EPTとは、点群データを階層的にタイル分割し、データを効率よく配信・表示するためのフォーマットです。VIRTUAL SHIZUOKAやオープンナガサキでは、LAS形式のデータが公開されています。QGISは常にEPTでデータを保存しており、初めてLAS/LAZ形式のデータを読み込む際はEPTに変換されます。点群データの処理機能としては、ver.3.32のアップデートにより、プロセシングツールに「点群データの管理」「点群の抽出」「点群のバージョン」の3つのリストが追加され、基本的な処理が可能となりました。
QGISに点群データを追加する
点群データのダウンロード
まず、点群データをダウンロードしましょう。
今回は、オープンナガサキで公開されているデータのうち、長崎県長崎市に所在する大浦天主堂(正式名称:日本二十六聖殉教者聖堂)周辺のデータをダウンロードします。
オープンナガサキでは、ダウンロードページに進むと図郭単位でデータをダウンロードすることができます。データを入手したい地域の図郭をクリックすると選択状態になり、「選択中のファイル一覧」に図郭番号(今回は「01KE9843」)とダウンロード予定のデータサイズが表示されます。オープンナガサキの場合、現在公開されているデータの最大ファイルサイズは685MBだそうです。必要な図郭をすべて選択できたら[ダウンロード]をクリックします。
点群データの追加
それでは、ダウンロードした点群データをQGISに追加してみましょう。
先ほどダウンロードしたデータはZIPファイルになっているので、Windowsの方はファイルを右クリックして[すべて展開]、Macの方はファイルをダブルクリックしてZIPを解凍します。
データを追加方法するには、ベクタ・ラスタデータと同様にエクスプローラーからドラッグ&ドロップするか、[データソースマネージャ]→[点群]からデータを保存している場所にアクセスして追加したいデータを選択します。
先ほどダウンロードしたデータを追加しました。長崎県長崎市に所在する大浦天主堂(正式名称:日本二十六聖殉教者聖堂)周辺の点群データが表示されています。
読み込んだ点群データは、2Dで見ると衛星画像のようにも見えます。しかし、[ビュー」→[3Dマップビュー]→「新規3Dマップビュー]の手順で3Dマップビューを起動して立体的に見てみると、3次元の点群データであることがよくわかります。建物のみならず、樹木や港湾部のクレーンまで詳細にデータ化されていることが確認できます。
追加したデータの属性情報は、 [レイヤプロパティ]→[情報]タブからレイヤ全体の情報を確認することができます。ベクタレイヤとは異なり、属性テーブルを開いて、個別の点の情報を確認することはできません。
シンボロジの設定
点群データのシンボロジは、[レイヤプロパティ]→[シンボロジ]タブから設定することができます。データの範囲のバウンディングボックスのみを表示する「範囲のみ」、ある属性の最大値・最小値から定義されたカラーランプのグラデーション上に描画する「ランプによる属性」、赤・緑・青の色値を用いて描画する「RGB」、分類ごとに異なる色で描画する「分類(Classification)」の4つから選択可能です。
QGISでは、データが追加された際に、データが持つ属性情報に合わせて最適なレンダラーがデフォルトで選択されます。属性情報によらず、QGISにデータを追加しただけで簡単に可視化できるのはありがたい機能です。
- データに赤・緑・青の色情報が含まれる場合 → RGB
- データに classification属性 が含まれている場合 → 分類
- その他 → Z属性に基づく描画方法
点群のプロセシング
点群のプロセシングツールとして「点群データの管理」「点群の抽出」「点群のバージョン」の3つのリストが用意されており、QGIS上で点群の基本的な処理が可能です。
では、どのような機能があるか簡単に見てみましょう。本記事では、個別の機能を試すことはしませんが、本サイトのブログのうち、「QGIS X.XX 新機能」の記事ではバージョンのアップデートに伴い追加された機能をご紹介しています。「#点群データ」の記事をご覧いただくと、点群データに関する機能拡充の歴史を確認することができるのでおすすめです!
点群データ管理
普段扱うベクタデータはキロバイト・メガバイト単位のデータが多いと思いますが、点群データの場合はギガバイト・テラバイト単位のデータも少なくありません。このようなファイルをQGISに追加して表示、加工、解析するのは実用的ではありません。
そういった場合は、仮想点群(VPC:Virtual Point Cloud)として読み込むことでファイルサイズの問題を解決することができます。仮想点群はタイルに分割されており、描画に必要な部分のデータを実際のファイルから参照して表示しています。そのおかげで、大規模な点群データの表示や処理が容易になります。
では、実際に操作してみましょう。データは、G空間情報センターで公開されているVIRTUAL SHIZUOKA 静岡県 中・西部 点群データの「LPデータ オリジナルデータ」の一部を使用しました。データをダウンロードするとZIPファイルが保存されるので、オープンナガサキのデータ同様、ZIPを解凍するとLAS形式のファイルがダウンロードされたことが確認できます。
ZIPを解凍できたら、ダウンロードしたデータをQGISに追加します。プロセシングツールボックスを表示してから[点群データを管理]→[仮想点群(VPC)を作成]を選択するとウィンドウが開きます。
入力データは、[•••]→[ファイルを追加]からQGISに追加した点群データが格納されているディレクトリに生成された~.copc.laz
を選択します。これは、データの読み込み速度や処理効率を向上させるため、QGISが点群データの読み込み時に自動的に生成するものです。任意でオプションを選択し、保存先を指定したら[実行]ボタンを押下します。
処理が終了すると、点群データが存在する範囲が赤い点線で表示されるので、拡大すると建物や地面などが色の違いで分類されて表示されます。OpenStreetMapと重ねて表示すると、家屋などがきちんと分類されていることが確認できます。
[レイヤプロパティ]→[シンボロジ]→[RGB」を選択すると、QGISに追加した時と同じ見た目のレイヤ表示になります。
他にも、「点群を軽量化」機能を使用することで、点群を任意の間隔もしくは距離で間引くことができます。
複数の点群レイヤを1つにまとめたい場合は「結合」機能を使用します。ただし、ファイルサイズが大きくなる点には注意が必要です。
任意のポリゴンで点群をクリップしたい場合は「切り抜く(clip)」機能を使用します。行政区域データで切り抜いたり、任意の点からのバッファで切り抜いたりできる点は便利です。例として、住宅地の範囲をトレースしたベクタレイヤで点群データを切り抜きました。
点群の抽出
「トポロジカル境界」機能を使用すると、点群レイヤのトポロジカルな(空間的な接触、隣接、包含といった関係)境界を含むポリゴンを出力することができます。場合によって、穴を含むマルチパートポリゴンとして出力されます。
「フィルタ」機能を使用すると、フィルタ式に合致する点群、もしくは指定した切り取り範囲の内部にある点群を抽出することができます。例として、属性情報のZ値(高さ情報)でフィルタリングすると、条件に合った点群のみ(建物)が抽出されました。元の点群やOpenStreetMapと比較すると住宅が抽出されていることが確認できます。
「密度」機能を使用すると、指定した点群レイヤを範囲として、点群の密度を表現したラスタレイヤを出力することができます。データの精度を簡単に可視化したり画像として保存することができる便利な機能です。
例として、「フィルタ」機能を使用して建物を抽出したレイヤを指定しました。点群(建物)が存在する場所はより明るい灰色に、点群が存在しない場所は黒色に色分けすることができました。
点群バージョン
点群バージョンのリストにある機能は、QGISに取り込んだ点群のデータ形式を変えて出力するものです。
「フォーマット変換」機能では、点群レイヤを.LAS
、.LAZ
、.COPC.LAZ
、.VPC
形式で出力することができます。
「ベクタに出力」機能では、点群データをGeoPackageのベクタとして出力することができます。オプションとして属性を付与できるほか、出力範囲を指定やフィルタ式で条件を絞り込むことができます。
ラスタに出力する機能は2つ用意されています。
「ラスタに出力」では、指定した解像度のセルサイズを持つ2Dラスターグリッドとして点群をエクスポートします。オプションとして指定した属性値を付与することもできます。「ラスタに出力(三角網)」では、各点を三角形で結び、地表の形状や表面のモデルを作成します。「三角網」とは、三角形で構成されたメッシュを生成するアルゴリズムのことを指し、この機能を使用することで地形などの3次元情報を2次元のラスタ形式に変換できます。
例として、Z(高さ)を属性情報としてラスタとして出力し、高さの低い方を青、高い方を赤に色分けして表示しました。川は青く(低く)、樹木は赤く(高く)なっていることが可視化されました。
まとめ
以上のように、ファイルサイズが大きい点群データですが、仮想点群として読み込むことで、QGIS上で簡単に表示することができます。また、範囲や条件に合わせてデータを抽出したり、形式を変えて出力したりすることができます。