2016-06-27

ポイントクラスによるLAS点群の分割

ASPRS LiDAR Data Exchange Format (LAS) フォーマットの点群データは、点の座標を示す x, y, z のほか、通常、レーザーパルスのリターン強度を示す intensity、地物等の種類 (ポイントクラス) を示す classification  などのコンポーネントを持っています。

ASPRS LAS バージョン 1.4 仕様書によれば classification コンポーネントの値は 0~255 の整数であり、各値の意味は次のように定義されています。なお、LAS バージョン 1.1, 1.2, 1.3 では 0~31 の値が使われ、また、その範囲の値でも一部、下表と意味が異なるものがあります。

Classicifation ValueMeaning意味 (仮訳)
0Created, never classified分類不能
1Unclassified未分類
2Ground地表
3Low Vegetation植生(低)
4Medium Vegetation植生(中)
5High Vegetation植生(高)
6Building建築物
7Low Point (noise)低ポイント (ノイズ)
8Reserved予約
9Water水部
10Rail鉄道
11Road Surface路面
12Reserved予約
13Wire - Guard (Shield)電線 - 保護線
14Wire - Conductor (Phase)電線 - 導線
15Transmission Tower送電塔
16Wire-structure Connector (e.g. Insulator)電線接続構造物 (例: 碍子)
17Bridge Deck橋梁床版
18High Noise高ノイズ
19-63Reserved予約
64-255User definableユーザー定義

注: "Classification Value" および "Meaning" は、ASPRS ウェブサイト掲載の "LAS SPECIFICATION VERSION 1.4 – R13 15 July 2013" - Table 17: ASPRS Standard LIDAR Point Classes (Point Data Record Formats 6-10) を引用したものです。「意味 (仮訳)」は、国内関連業界においてオーソライズされた訳語・用語ではなく、不適切なものがあるかも知れません。実務においては仕様書原文を参照するとともに、実データの内容に応じて適切に解釈してください。

FMEでは、PointCloudSplitter トランスフォーマーによって、任意のコンポーネントの値に基づいて点群データに含まれる個別の点を分類し、その分類区分ごとの点群に分割することができます。

ここでは、このトランスフォーマーを使い、単一の LAS 点群データを classification コンポーネントの値に基づいて「地表」、「植生(低)」、「植生(中)」、「植生(高)」、「建築物」の点群に分割し、それぞれ LAS ファイルに出力するワークスペース例を掲げます。

サンプルデータは、Safe Software 社 FME Server デモサイトの次のページで作成、ダウンロードしました。

FME Server Demos | Point Cloud Data Distribution



















このページでは、カナダ・バンクーバー市の一部 (黒枠で示された4タイルの範囲) について、地図画面上で描画したポリゴンに含まれる点群データを作成、ダウンロードすることができます。以下のワークスペース例で使用したデータは、地図画面左下のタイルについて次の条件でダウンロードしたものです。
・Output Format: ASPRS Lidar Data Exchange Format (LAS)
・Output Coordinate System: NAD83 datum, UTM Zone 10
・Return Tiled Output: YES (タイル境界で分割する)
・Split Point Cloud: NO (コンポーネントの値による分割はしない)
・Use Point Cloud Thinning: NO (点の間引きはしない)

本題ではありませんが、 同サイトではこのほかにもいくつかの FME Server のデモページが公開されていますので、関心のある方はご覧ください。> FME Server Demos

FME 2016.1.0.1 build 16494


FMEワークスペース例








[LAS] リーダー: LAS形式点群データを読み込む。
PointCloudSplitter: classification コンポーネントの値 (クラス) に基づいて点群を分割する。
AttributeValueMapper: 各クラスに対応する意味 (文字列) 属性を作成する。
[LAS] ライター: 分割後の点群データをクラス別のLASファイルに出力する。

変換結果 FME Data Inspector による表示 (合成)
左: 分割前 (15,935,683 ポイント)
右: 分割後 上から 建築物 (3,435,083), 植生(高) (1,505,395), 植生(低) (2,839,508), 地表 (1,439,096)
注1: 分割前の点群には「未分類」等のポイントも含まれるため、分割後のポイント数の合計と分割前のポイント数は一致しません。
注2: サンプルデータには「植生(中)」 (classification = 4) に該当する点は含まれていませんでした。低、中、高の3区分で分類したならば「植生(中)」が全く現れないということは考えにくいので、このデータの植生の分類は低と高の2区分で行われていると考えるのが妥当と思われます。

























PointCloudSplitter によって、任意のコンポーネントの値に基づいて点群を分割することができます。この例では、次のようにパラメーターを設定することにより、classification コンポーネントの値に応じて「地表」、「植生(低)」、「植生(中)」、「植生(高)」、「建築物」クラスの点群に分割しました (その他のクラスの点は破棄)。

Split By: classification (classification コンポーネントの値で分割する)
Split Type: Unique (個別の値ごとに分割する)
Output Attribute: _split_value (コンポーネントの値を _split_value 属性に格納して分割後の点群に付加する)
Unique Values to Keep: 2, 3, 4, 5, 6 (これらの値に該当する点のみを保持する)

PointCloudSplitter パラメーター設定画面

























PointCloudSplitter だけでコンポーネントの値による点群の分割はできますが、classification コンポーネントの値 (整数) だけでは意味が分かりにくいので、次の AttributeValueMapper によって値に対応する意味 (文字列) を格納する _class 属性を作成しました。後述するように、この文字列を出力先のファイル名とすることを意図しています。

AttributeValueMapper では、入力フィーチャーの属性 (Source Attribute パラメーターで選択) の値に対して 1:1 または N:1 で対応する値を格納する新たな属性 (Destination Attribute パラメーターで属性名を指定) を作成することができます。値の対応関係は、Value Map パラメーター (リスト) で定義します。

AttributeValueMapper パラメーター設定画面

























AttributeValueMapper で作成した _class 属性を [LAS] ライターフィーチャータイプのフィーチャータイプ名パラメーター (LAS File Name) に設定することにより、分割後の点群の出力先ファイル名を、「地表」などのクラス名とすることができます。

LAS ライターフィーチャータイププロパティ画面 (左) と出力先ファイル名 (右)

















補足: 点群の分割は PointCloudFilter でもできます。このトランスフォーマーを使った場合はデータフローが条件別に分岐するので、点群を単に分割するだけでなく、同じワークスペース内で引き続き、分割後の複数の点群に対してそれぞれ異なる変換処理を施す場合に適しています。

PointCloudFilter パラメーター設定例
Expression で条件式、Output Port でその条件に該当する点で構成される点群の出力先ポート名が設定できます。










0 件のコメント:

コメントを投稿