ラベル | 説明 | データ タイプ |
入力 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 |
サマリー
LIDAR データで取得された屋根のポイントから生成される建物モデルを作成します。
図
使用法
LAS ポイントが建物の屋根の適切なカバレッジを提供すると想定しています。 最適な結果を得るには、屋根以外の建物の部分を表すポイントは、一般的に結果の建物モデルにノイズを加えてしまうため、除外するようにします。 建物に分類されたポイントが LAS データセットにない場合は、[LAS の建物分類 (Classify LAS Building)] ツールを使用してポイントを分類します。 ツールは、建物の屋上を表すポイントにクラス コード値 6 を割り当てます。 分類の結果を確認し、異なるパラメーターを選択してツールを再度実行するか、対話的に分類を編集して、必要な修正を行います。 建物の分類のカバレッジに問題がなければ、モデルを生成します。
このツールを実行する前に地表ポイントを分類します。 地表ポイントがまだ分類されていない場合は、[LAS の地表分類 (Classify LAS Ground)] ツールを使用してクラス コード値 2 を地表ポイントに割り当てます。
建物モデルは、建物フットプリント ポリゴンと重なり合う LAS ポイントから TIN を構築することによって生成されます。 フットプリントは、この TIN にクリップ ポリゴンとして組み込まれます。高さは、[地表の高さ] パラメーターで指定されたソースによって定義されます。 [地表の高さ] パラメーター値は、フットプリント ポリゴンの属性テーブル内のフィールドまたは標高サーフェスで指定できます。 処理対象の点群でポイント密度が高い場合は、[サンプリング解像度] パラメーターを使用して、屋根の作図に使用するポイントを間引くことを検討してください。
このツールでは、円弧セグメントを含んでいるポリゴンはサポートされていません。 このようなフィーチャが入力データに存在する場合は、これらのフィーチャのコピーを作成し、[頂点の挿入 (Densify)] ツールを使用して円弧ジオメトリをライン セグメントに置き換えます。
フットプリント ポリゴンの属性テーブル内のフィールドから地表の高さを取得した場合、高さの単位は、入力 LAS データセットの Z 単位と同じであると見なされます。 属性テーブル内の高さが別の距離単位で表現されている場合は、このツールを使用する前に、[フィールド演算 (Calculate Field)] ツールを使用して適切な変換係数を適用してください。 地表の高さは、次の方法で建物のフットプリント ポリゴンの属性から取得できます。
- レイヤー プロパティまたは [LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用して、地表ポイントの LAS データセットをフィルター処理します。
- [サーフェス情報の追加 (Add Surface Information)] ツールを実行します。入力フィーチャを建物フットプリント ポリゴン、入力サーフェスをフィルター処理された地表の LAS データセット、出力プロパティは建物が最小の Z 値になるように Z_MIN 値に設定します。
地表の高さをサーフェスで定義する場合、ポリゴンの境界に沿った最小の Z 値が建物のベース高度を定義します。 サーフェスには、LAS データセットと同じ鉛直座標系を使用します。 分類された地表の LAS ポイントから地表の TIN またはラスター サーフェスを作成するには、分類された地表ポイントの LAS データセットをフィルター処理して、[LAS データセット → ラスター (LAS Dataset To Raster)] または [LAS データセット → TIN (LAS Dataset To TIN)] ツールを使用してサーフェスを生成します。
LAS データセットに統計情報が存在する場合、LAS ポイントはより効率的に処理されます。 統計情報を計算するには、[LAS データセットの統計情報 (LAS Dataset Statistics)] ツールを使用します。
パラメーター
arcpy.ddd.LasBuildingMultipatch(in_las_dataset, in_features, ground, out_feature_class, {point_selection}, {simplification}, {sampling_resolution})
名前 | 説明 | データ タイプ |
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 |
コードのサンプル
次のサンプルは、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())
環境
ライセンス情報
- Basic: 次のものが必要 3D Analyst
- Standard: 次のものが必要 3D Analyst
- Advanced: 次のものが必要 3D Analyst