サマリー
航空機 LIDAR 測量のオーバーラップ スキャンから LAS ポイントを分類します。
図
使用法
未分類のオーバーラップ ポイントがあると、[LAS の建物分類 (Classify LAS Building)] ツールなど、規則的なポイント分布を前提とする操作で不適切な結果が発生する可能性があります。また、オーバーラップが極端なスキャン角度から発生している場合、出力データの生成で不適切なマージン エラーが発生する可能性があります。オーバーラップ ポイントの分類には、オーバーラップ ポイントを除外することで、ポイント分布をより均一にしてより高品質のリターンを得るオプションがあります。
LAS ポイントのポイント ソース ID 属性は、収集元のフライト ラインに関する情報を提供します。このツールは、複数のポイント ソース ID が存在するかどうかを判定し、より大きなスキャン角度の ID をオーバーラップとして特定することで、タイル内の LAS データを処理します。処理対象のエリアに、ポイント ソース ID が同じポイントが複数存在する場合、最大強度のスキャン角度を持つポイントのポイント ソース ID を共有するすべてのポイントがオーバーラップとして分類されます。このような理由から、LAS ポイントの評価に使用されるサンプル サイズを LAS データの名目ポイント間隔の約 2 ~ 3 倍のサイズにする必要があります。これより大きいタイル サイズにすると、より小さいスキャン角度値を持つポイントが間違って分類される危険性があるため、避けてください。これより小さいサンプル サイズにすると、オーバーラップ ポイントを正しく識別し分類するのに十分なポイントを取得できない可能性があります。
LAS バージョン 1.4 のファイルおよび 6 ~ 8 のポイント記録形式のオーバーラップ ポイントには、オーバーラップ分類フラグが割り当てられますが、元のクラス コード値がそのまま維持されます。サポートされるその他すべての LAS ファイル内のオーバーラップ ポイントには、クラス コード値 12 が割り当てられます。オーバーラップ スキャン以外のイベントを表すためにクラス コード値 12 がすでに入力 LAS ファイルで使用されている場合は、このツールを実行する前に、[LAS クラス コードの変更 (Change LAS Class Codes)] ツールを使用して、それらのポイントに別の値を再割り当てすることを検討してください。
-
LAS 形式は、ASPRS (American Society for Photogrammetry and Remote Sensing) によって定義された仕様に基づいて各ポイントの分類をサポートします。ArcGIS プラットフォームは、LAS ファイル バージョン 1.4 で規定されている以下の分類方式を適用します。
分類値 分類タイプ 0
分類不可
1
未割り当て
2
地表
3
低植生
4
中植生
5
高植生
6
建物
7
低ノイズ
8
モデル キー/予約
9
水資源・水道
10
レール
11
路面
12
オーバーラップ/予約
13
保護線
14
電線
15
送電塔
16
ワイヤー コネクタ
17
橋床版
18
高ノイズ
19 ~ 63
ASPRS 定義用の予約 (LAS 1.1 〜 1.3 はクラス コード 31 までをサポート)
32 ~ 255
ユーザー定義可能 (LAS 1.0 および 1.4 の特定バージョンでのみサポートされる)
構文
ClassifyLasOverlap_3d (in_las_dataset, sample_distance, {extent}, {process_entire_files}, {compute_stats})
パラメーター | 説明 | データ タイプ |
in_las_dataset | 処理対象の LAS データセット。 | LAS Dataset Layer |
sample_distance | LAS データの評価に使用される正方形領域のいずれかのディメンションの距離。この値は、「3 メートル」など、数字と距離単位の値で表すことができます。距離単位が指定されないか、「不明」と入力された場合、単位は入力 LAS ファイルの空間参照によって定義されます。 | Linear Unit |
extent (オプション) | このツールが評価するデータの範囲を指定します。 | Extent |
process_entire_files (オプション) | 処理範囲の適用方法を指定します。
| Boolean |
compute_stats (オプション) | LAS データセットで参照されている LAS ファイルの統計情報を計算するかどうかを指定します。統計情報が存在することにより、LAS データセット レイヤーのフィルターおよびシンボル オプションで、LAS ファイル内に存在する LAS 属性値のみを表示できます。
| Boolean |
派生した出力
名前 | 説明 | データ タイプ |
out_las_dataset | 変更対象の LAS データセット。 | LAS データセット レイヤー |
コードのサンプル
ClassifyLasOverlap (LAS オーバーラップの分類) の例 1 (Python ウィンドウ)
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
arcpy.env.workspace = 'C:/data'
arcpy.ddd.ClassifyLasOverlap('Denver_2.lasd', '1 Meter')
ClassifyLasOverlap (LAS オーバーラップの分類) の例 2 (スタンドアロン スクリプト)
次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''****************************************************************************
Name: Classify Lidar & Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings,
regularize its geometry, and calculate the building height.
****************************************************************************'''
import arcpy
lasd = arcpy.GetParameterAsText(0)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)
try:
desc = arcpy.Describe(lasd)
if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
unit = 'Feet'
else:
unit = 'Meters'
ptSpacing = desc.pointSpacing * 2.25
sampling = '{0} {1}'.format(ptSpacing, unit)
# Classify overlap points
arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
# Classify ground points
arcpy.ddd.ClassifyLasGround(lasd)
# Filter for ground points
arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
# Generate DEM
arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION',
'BINNING NEAREST NATURAL_NEIGHBOR',
sampling_type='CELLSIZE',
sampling_value=desc.pointSpacing)
# Classify noise points
arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY',
withheld='WITHHELD', ground=dem,
low_z='-2 feet', high_z='300 feet',
max_neighbors=ptSpacing, step_width=ptSpacing,
step_height='10 feet')
# Classify buildings
arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
#Classify vegetation
arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55],
compute_stats='COMPUTE_STATS')
# Filter LAS dataset for building points
lasd_layer = 'building points'
arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
# Export raster from lidar using only building points
temp_raster = 'in_memory/bldg_raster'
arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
# Convert building raster to polygon
temp_footprint = 'in_memory/footprint'
arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
# Regularize building footprints
arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint,
method='RIGHT_ANGLES')
except arcpy.ExecuteError:
print(arcpy.GetMessages())
環境
ライセンス情報
- ArcGIS Desktop Basic: 次のものが必要 3D Analyst
- ArcGIS Desktop Standard: 次のものが必要 3D Analyst
- ArcGIS Desktop Advanced: 次のものが必要 3D Analyst