ラベル | 説明 | データ タイプ |
入力 LAS データセット | 建物の屋根を定義するポイントを含んでいる LAS データセット。 | LAS Dataset Layer |
入力フィーチャ | 建物フットプリントを定義するポリゴン フィーチャ。 | Feature Layer |
地表の高さ | 地表の高さの値のソースは、建物フットプリントの属性テーブル内の数値フィールド、あるいはラスターまたは TIN サーフェスにすることができます。 フィールドに基づく地表ソースは、サーフェスに基づく地表ソースよりも高速に処理されます。 | Field; Raster Layer; TIN Layer |
出力マルチパッチ フィーチャクラス | 出力建物モデルを格納するマルチパッチ フィーチャクラス。 | Feature Class |
LAS 屋根ポイントの選択 (オプション) | 建物の屋根の定義に使用される LAS ポイントを指定します。
| String |
単純化許容値 (オプション) | 屋根のジオメトリを単純化するために使用される Z 許容値。 この値は、出力屋根モデルと、LAS ポイントを使用して作成された TIN サーフェスとの最大のずれを定義します。 | Linear Unit |
サンプリング解像度 (オプション) | 屋根サーフェスを作図する前に、点群を間引くために使用するビン化サイズ。 | Linear Unit |
最小高さフィールド (オプション) | 屋根の定義に使用されるポイントの最小の高さが含まれる数値フィールド。 任意の数値フィールドを指定できます。 このフィールドの値より低いポイントは無視されます。 | Field |
最大高さフィールド (オプション) | 屋根の定義に使用されるポイントの最大の高さが含まれる数値フィールド。 任意の数値フィールドを指定できます。 このフィールドの値より高いポイントは無視されます。 | Field |
サマリー
LAS データセット内の屋根ポイントを使用して建物モデルを作成します。
図
使用法
このツールは、LAS データセットの屋根ポイント、地表の高さデータ、建物フットプリント ポリゴンを使用して、建物をマルチパッチ フィーチャとして作成します。 それぞれの建物モデルは、建物フットプリント ポリゴンとオーバーラップする LAS ポイントから TIN を構築することによって生成されます。 フットプリントは、この TIN にクリップ ポリゴンとして組み込まれます。高さは、[地表の高さ] パラメーター値から取得されます。 その後、この TIN は基準高度で閉じられたマルチパッチに変換されます。 生成されたマルチパッチは TIN サーフェスに基づくため、このマルチパッチに建物の垂直断面に沿った詳細は含まれていません。
入力 LAS ポイントは、建物の屋根を取り込んでいる必要があります。 通常、屋根以外の建物要素を表すポイントは出力に不要な特性を付加してしまうため、可能であれば除外します。 [LAS の建物分類 (Classify LAS Building)] ツールを使用して、クラス コード値 6 を建物の屋根ポイントに割り当てることができます。 このツールは、建物の屋根を表すポイントにクラス コード値 6 を割り当てますが、屋根の下と上にあるポイントを分類するためのオプションもあります。 これらのポイントを分類する場合、建物フィーチャの作成時に除外できるように、6 以外のクラス コードを使用して定義します。 建物の分類結果を確認し、対話的編集を通じて、または [LAS の建物分類 (Classify LAS Building)] ツールを別のパラメーター設定で再度実行することで、必要な修正を加えます。 LAS データセットで建物フットプリント上に建物でないポイントが含まれていない場合、すべてのポイントが屋根サーフェスの定義に使用できる可能性があります。
[サンプリング解像度] パラメーター値を使用して、TIN を構築する前に LAS データセット内のポイントを間引きます。 このパラメーターは、入力がポイント密度の高い点群である場合や、建物の垂直断面に沿ったポイントが処理されている場合に、ツールのパフォーマンスを最適化します。 パラメーター値は、間引きされるエリアの長さと幅を表すので、距離を 2 フィートにすると、点群を 2 フィートのグリッドにビン化します。 各ビンで最も高いポイントが、屋根の TIN の構築に使用されます。 このようにして、建物側面のポイントの影響を軽減できます。
このツールでは、円弧セグメントを含んでいる建物フットプリント ポリゴンはサポートされていません。 円弧セグメントをライン セグメントに置き換えるには、[頂点の挿入 (Densify)] ツールを使用します。
[地表の高さ] パラメーター値は、標高サーフェスまたはフットプリント ポリゴンの属性テーブル内のフィールドで指定できます。 サーフェスを使用する場合、建物の基準高度は、フットプリントの境界に沿った最小の Z 値になります。 サーフェスは、LAS データセットと同じ鉛直座標系である必要があります。 LAS データセットから地表を取得すると、作成元の点群の高さと建物を一致させることができます。 LAS データセットから標高サーフェスを作成するには、次の手順を実行します。
- 地表の分類ポイントが LAS データセット内に存在することを確認します。 存在しない場合は、[LAS の地表分類 (Classify LAS Ground)] ツールを使用して、クラス コード値 2 を地表ポイントに割り当てます。
- レイヤー プロパティまたは [LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用して、地表ポイントの LAS データセット レイヤーをフィルターします。
- [LAS データセット → ラスター (LAS Dataset to Raster)] ツールまたは [LAS データセット → TIN (LAS Dataset to TIN)] ツールを使用して、このツールの入力として使用できるラスターまたは TIN サーフェスを作成します。
フットプリント ポリゴンの属性テーブル内のフィールドから地表の高さを取得した場合、高さの単位は、入力 LAS データセットの Z 単位と同じであると見なされます。 属性テーブル内の高さが別の距離単位である場合は、[フィールド演算 (Calculate Field)] ツールを使用して、LAS データセットの距離単位で新しい高さの値を計算します。 最小の地表の高さは、[サーフェス情報の追加 (Add Surface Information)] ツールを使用して、地表面の標高サーフェスから建物フットプリント ポリゴンに帰属させることができます。
屋根の高さが大幅に異なる隣接する構造物に対して建物フィーチャを生成する場合、生成された各建物フィーチャが、近傍の建物のポイントによって定義される可能性があります。 この問題を最小限に抑える 1 つの方法は、各フィーチャに建物の屋根の高さ範囲を帰属させ、これらのフィールドを [最小高さフィールド] および [最大高さフィールド] パラメーター値として使用することです。
LAS データセットに統計情報が含まれている場合、LAS ポイントはより効率的に処理されます。 統計情報を計算するには、[LAS データセットの統計情報 (LAS Dataset Statistics)] ツールを使用します。
パラメーター
arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution}, {min_height_field}, {max_height_field})
名前 | 説明 | データ タイプ |
in_las_dataset | 建物の屋根を定義するポイントを含んでいる LAS データセット。 | LAS Dataset Layer |
in_features | 建物フットプリントを定義するポリゴン フィーチャ。 | Feature Layer |
ground | 地表の高さの値のソースは、建物フットプリントの属性テーブル内の数値フィールド、あるいはラスターまたは TIN サーフェスにすることができます。 フィールドに基づく地表ソースは、サーフェスに基づく地表ソースよりも高速に処理されます。 | Field; Raster Layer; TIN Layer |
out_feature_class | 出力建物モデルを格納するマルチパッチ フィーチャクラス。 | Feature Class |
point_selection (オプション) | 建物の屋根の定義に使用される LAS ポイントを指定します。
| String |
simplification (オプション) | 屋根のジオメトリを単純化するために使用される Z 許容値。 この値は、出力屋根モデルと、LAS ポイントを使用して作成された TIN サーフェスとの最大のずれを定義します。 | Linear Unit |
sampling_resolution (オプション) | 屋根サーフェスを作図する前に、点群を間引くために使用するビン化サイズ。 | Linear Unit |
min_height_field (オプション) | 屋根の定義に使用されるポイントの最小の高さが含まれる数値フィールド。 任意の数値フィールドを指定できます。 このフィールドの値より低いポイントは無視されます。 | Field |
max_height_field (オプション) | 屋根の定義に使用されるポイントの最大の高さが含まれる数値フィールド。 任意の数値フィールドを指定できます。 このフィールドの値より高いポイントは無視されます。 | Field |
コードのサンプル
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
arcpy.env.workspace = 'C:/data'
arcpy.LasBuildingMultipatch_3d('Highland.lasd', 'footprint.shp', 'dem.tif',
'highland_3d_bldgs.shp', simplification='4 Feet')
次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''****************************************************************************
Name: Extract Building Footprints & Generate 3D Models
Description: Extract footprint from lidar points classified as buildings,
regularize its geometry, and calculate the building height.
****************************************************************************'''
import arcpy
lasd = arcpy.GetParameterAsText(0)
footprint = arcpy.GetParameterAsText(1)
model = arcpy.GetParameterAsText(2)
try:
lasd_layer = 'building points'
arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=6)
temp_raster = 'in_memory/bldg_raster'
arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
temp_footprint = 'in_memory/footprint'
arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint,
method='RIGHT_ANGLES')
arcpy.ddd.LasPointStatsByArea(lasd_layer, footprint, ['MIN_Z', 'MAX_Z'])
arcpy.management.AddField(footprint, 'Height', 'Double')
arcpy.management.CalculateField(footprint, 'Height',
"round('!Z_Max! - !Z_Min!', 2)",
'PYTHON_9.3')
simplification = arcpy.Describe(lasd).pointSpacing * 4
arcpy.ddd.LasBuildingMultipatch(lasd_layer, footprint, 'Z_MIN', model,
'BUILDING_CLASSIFIED_POINTS', simplification)
except arcpy.ExecuteError:
print(arcpy.GetMessages())