LAS ノイズの分類 (Classify LAS Noise) (3D Analyst)

サマリー

特異な空間特性を持つ LAS ポイントをノイズとして分類します。

使用法

  • LAS リターンのノイズ ポイントは通常、データのビジュアライゼーションおよび解析に有害な影響を与えます。 たとえば、高く飛んでいる鳥や散在している波動が雲、霞、水域、大きく反射する鏡に遭遇した場合のリターンは、その場所の周囲のポイントの Z 範囲を歪める可能性があります。 この種のポイントをノイズとして識別すると、フィルターによって表示から除外し、派生データ (標高サーフェス、傾斜面、傾斜方向など) の生成に一切使用されないようにすることができます。

  • [分離] 方法は、[近傍の幅] および [近傍の高さ] パラメーターによって定義された領域に基づいて、タイル化された 3 x 3 のビン内の LAS データを処理します。 解析ボリューム中の LAS ポイントの数が [近傍のポイント制限] パラメーターの値より少ない場合、それらの LAS ポイントはノイズとして扱われます。 このポイント制限には、解析ボリューム中で予測可能な LIDAR ポイント密度と LAS ポイントの数に基づく妥当な近似が反映される必要があります。

  • LIDAR 測量によって取得された領域で特定の LAS ポイント リターンに異常に低い/高い Z 値が含まれている場合は、範囲外ポイントをノイズとして迅速に識別するために、[絶対高度] 方法を使用してデータの Z 値の閾値を定義することを検討してください。

  • 特定の地域の LAS ポイントに異常に低い/高い Z 値が含まれているが、これらの値が LIDAR 測量で取得された有効な計測値の範囲内にある場合は、[相対高度] 方法を使用し、地表からのオフセットに基づいて有効なデータの Z 値の閾値を定義することを検討してください。 地表面を生成するには、LAS データセットをフィルターして地表の分類ポイントを取得し、[LAS データセット → ラスター (LAS Dataset To Raster)] ツールを使用します。

  • クラス コード値が 0 または 1 の LAS ポイントだけが再分類されます。 その他の値によって未分類ポイントが表現されている場合は、[LAS クラス コードの変更 (Change LAS Class Codes)] ツールを使用して、未分類ポイントに値 1 を割り当てることを検討してください。 ノイズ ポイントが分類されるときに [分離] 方法または [絶対高度] 方法が使用された場合は、すべてのノイズ ポイントにクラス コード値 7 が割り当てられます。 [地表からの相対高度] 方法が使用されている場合は、[最小高さ] パラメーターの閾値を下回るノイズ ポイントに値 7 (低ノイズを表す) が割り当てられ、[最大高さ] パラメーターの閾値を上回るノイズ ポイントに値 18 (高ノイズを表す) が割り当てられます。

  • ノイズ ポイントの判定に使用する設定がわからない場合は、LAS 分類コードの編集オプション無効化して、ノイズとして検出された LAS ポイントをポイント フィーチャとしてエクスポートすることができます。 出力ポイントに求める結果が反映されたら、[近接性による LAS ポイントの特定 (Locate LAS Points By Proximity)] ツールでこれらのフィーチャを使用して LAS ポイントを分類できます。

  • 分離方法は、大きなビン サイズを高速で実行するパフォーマンス重視の操作です。 最高のパフォーマンスを実現するために、データの性質や分布に応じて可能な限り最大サイズのビンを指定します。

パラメーター

ラベル説明データ タイプ
入力 LAS データセット

処理される LAS データセット。

LAS Dataset Layer
方法
(オプション)

使用するノイズ検出方法を指定します。

  • 分離タイル化されたボリュームで LAS ポイントの空間的な近接性が解析され、ノイズ計測値と高さベースのノイズ検出が特定されます。 これがデフォルトです。
  • 地表からの相対高度地表面からの指定された最小高さを下回るすべてのポイントと地表面からの最大高さを上回るすべてのポイントがノイズとして識別されます。
  • 絶対高度指定された最小高さを下回るすべてのポイントと平均海水面に対する最大高さを上回るすべてのポイントがノイズとして識別されます。
String
分類の編集
(オプション)

ノイズとして識別された LAS ポイントを再分類するかどうかを指定します。

  • オン - ノイズ ポイントは再分類されます。 これがデフォルトです。
  • オフ - ノイズ ポイントは再分類されません。
Boolean
保留フラグの割り当て
(オプション)

ノイズ ポイントに保留分類フラグを割り当てるかどうかを指定します。 このパラメーターは、[分類の編集] パラメーターがオンの場合に有効になります。

  • オン - ノイズ ポイントに保留分類フラグが割り当てられます。
  • オフ - ノイズ ポイントに保留分類フラグが割り当てられません。 これがデフォルトです。
Boolean
統計情報の計算
(オプション)

LAS データセットで参照されている .las ファイルの統計情報を計算するかどうかを指定します。 統計情報を計算することで、.las ファイルごとの空間インデックスが提供され、解析と表示のパフォーマンスが向上します。 また統計によって、分類コードやリターン情報などの LAS 属性の表示が .las ファイルに存在する値に制限されるので、フィルターとシンボルのエクスペリエンスも強化されます。

  • オン - 統計情報を計算します。 これがデフォルトです。
  • オフ - 統計情報を計算しません。
Boolean
地表ラスター サーフェス
(オプション)

各ポイントの相対高度値の計算に使用される地表ラスター サーフェス。 このパラメーターは、[方法] パラメーターが [地表からの相対高度] に設定されている場合に必須です。

Raster Layer
最小高さ
(オプション)

ノイズ ポイントを識別するために最小 Z 値の閾値を定義する高さ。 指定された値を下回るポイントはノイズに分類されます。 地表面が指定されている場合、この閾値は地表からのオフセットに基づき、「-3 フィート」という値は、地表面から 3 フィート以上低いポイントがノイズに分類されることを意味します。

Linear Unit
最大高さ
(オプション)

ノイズ ポイントを識別するために最大 Z 値の閾値を定義する高さ。 指定された値を上回るポイントはノイズに分類されます。 地表面が指定されている場合、この閾値は地表からのオフセットに基づき、「250 メートル」という値は、地表面から 250 メートル以上高いポイントがノイズに分類されることを意味します。

Linear Unit
近傍のポイント制限
(オプション)

[分離] 方法の使用時にノイズと見なすことができる、解析ボリューム中のポイントの最大数。 解析ボリューム中に含まれる LAS ポイントの数がこの値以下である場合、これらのポイントはノイズに分類されます。

Long
近傍の幅
(オプション)

[分離] 方法の使用時における、解析ボリュームの x,y 空間の各ディメンションのサイズ。

Linear Unit
近傍の高さ
(オプション)

[分離] 方法の使用時における、解析ボリュームの高さ。

Linear Unit
処理範囲
(オプション)

評価されるデータの範囲。

  • [現在の表示範囲] マップ ビュー - 範囲は、アクティブなマップまたはシーンに基づきます。
  • [範囲の描画] 直角化して終了 - 範囲は、マップまたはシーンに描画された四角形に基づきます。
  • [レイヤーの範囲] レイヤー - 範囲は、アクティブなマップ レイヤーに基づきます。 使用可能なレイヤーを選択するか、[すべてのレイヤーのデータの範囲] オプションを使用します。 各マップ レイヤーには、次のオプションがあります。

    • [すべてのフィーチャ] すべて選択 - すべてのフィーチャの範囲。
    • [選択フィーチャ] 選択フィーチャからのエリア - 選択したフィーチャの範囲。
    • [表示フィーチャ] Extent Indicator - 表示フィーチャの範囲。

  • [参照] 参照 - 範囲はデータセットに基づきます。
  • [入力データの共通領域] 交差する - 範囲は、すべての入力データの共通範囲になります。
  • [入力データのすべての領域] ユニオン - 範囲は、すべての入力データの結合された範囲になります。
  • [クリップボード] 貼り付け - 範囲をクリップボードにコピーしたり、クリップボードから貼り付けたりできます。
    • [範囲をコピー] コピー - 範囲と座標系をクリップボードにコピーします。
    • [範囲を貼り付け] 貼り付け - 範囲と座標系をクリップボードから貼り付けます。 クリップボードに座標系が含まれていない場合、マップの座標系が範囲に使用されます。
  • [範囲をリセット] リセット - 範囲はデフォルト値にリセットされます。

座標を手動で入力する場合、アクティブなマップの座標系の座標を数値で指定する必要があります。 マップで、入力した座標と異なる表示単位が使用されることがあります。 南と西の座標にはマイナス値の記号を使用します。

Extent
範囲と重なる LAS ファイル全体を処理
(オプション)

.las ファイルの処理方法の決定に対象地域をどのように使用するかを指定します。 対象地域は、[処理範囲] パラメーター値、[処理境界] パラメーター値、またはこれら 2 つの組み合わせによって定義されます。

  • オフ - 対象地域と交差している LAS ポイントだけが処理されます。 これがデフォルトです。
  • オン - .las ファイルの一部が対象地域と交差している場合、対象地域の外側にあるポイントも含め、そのファイル内のすべてのポイントが処理されます。
Boolean
出力ノイズ ポイント
(オプション)

ノイズとして識別された LAS ポイントを表す出力ポイント フィーチャ。

Feature Class
ピラミッドの更新
(オプション)

クラス コードが変更された後に、LAS データセットのピラミッドを更新するかどうかを指定します。

  • オン - LAS データセットのピラミッドを更新します。 これがデフォルトです。
  • オフ - LAS データセットのピラミッドを更新しません。
Boolean

派生した出力

ラベル説明データ タイプ
出力 LAS データセット

変更対象の LAS データセット。

LAS Dataset Layer

arcpy.ddd.ClassifyLasNoise(in_las_dataset, {method}, {edit_las}, {withheld}, {compute_stats}, {ground}, {low_z}, {high_z}, {max_neighbors}, {step_width}, {step_height}, {extent}, {process_entire_files}, {out_feature_class}, {update_pyramid})
名前説明データ タイプ
in_las_dataset

処理される LAS データセット。

LAS Dataset Layer
method
(オプション)

使用するノイズ検出方法を指定します。

  • ISOLATIONタイル化されたボリュームで LAS ポイントの空間的な近接性が解析され、ノイズ計測値と高さベースのノイズ検出が特定されます。 これがデフォルトです。
  • RELATIVE_HEIGHT地表面からの指定された最小高さを下回るすべてのポイントと地表面からの最大高さを上回るすべてのポイントがノイズとして識別されます。
  • ABSOLUTE_HEIGHT指定された最小高さを下回るすべてのポイントと平均海水面に対する最大高さを上回るすべてのポイントがノイズとして識別されます。
String
edit_las
(オプション)

ノイズとして識別された LAS ポイントを再分類するかどうかを指定します。

  • CLASSIFYノイズ ポイントは再分類されます。 これがデフォルトです。
  • NO_CLASSIFYノイズ ポイントは再分類されません。
Boolean
withheld
(オプション)

ノイズ ポイントに保留分類フラグを割り当てるかどうかを指定します。 このパラメーターは、edit_las パラメーターが CLASSIFY に設定されている場合に有効になります。

  • WITHHELDノイズ ポイントに保留分類フラグが割り当てられます。
  • NO_WITHHELDノイズ ポイントに保留分類フラグが割り当てられません。 これがデフォルトです。
Boolean
compute_stats
(オプション)

LAS データセットで参照されている .las ファイルの統計情報を計算するかどうかを指定します。 統計情報を計算することで、.las ファイルごとの空間インデックスが提供され、解析と表示のパフォーマンスが向上します。 また統計によって、分類コードやリターン情報などの LAS 属性の表示が .las ファイルに存在する値に制限されるので、フィルターとシンボルのエクスペリエンスも強化されます。

  • COMPUTE_STATS統計情報を計算します。 これがデフォルトです。
  • NO_COMPUTE_STATS統計情報を計算しません。
Boolean
ground
(オプション)

各ポイントの相対高度値の計算に使用される地表ラスター サーフェス。 このパラメーターは、method パラメーターが RELATIVE_HEIGHT に設定されている場合に必須です。

Raster Layer
low_z
(オプション)

ノイズ ポイントを識別するために最小 Z 値の閾値を定義する高さ。 指定された値を下回るポイントはノイズに分類されます。 地表面が指定されている場合、この閾値は地表からのオフセットに基づき、「-3 フィート」という値は、地表面から 3 フィート以上低いポイントがノイズに分類されることを意味します。

Linear Unit
high_z
(オプション)

ノイズ ポイントを識別するために最大 Z 値の閾値を定義する高さ。 指定された値を上回るポイントはノイズに分類されます。 地表面が指定されている場合、この閾値は地表からのオフセットに基づき、「250 メートル」という値は、地表面から 250 メートル以上高いポイントがノイズに分類されることを意味します。

Linear Unit
max_neighbors
(オプション)

[分離] 方法の使用時にノイズと見なすことができる、解析ボリューム中のポイントの最大数。 解析ボリューム中に含まれる LAS ポイントの数がこの値以下である場合、これらのポイントはノイズに分類されます。

Long
step_width
(オプション)

[分離] 方法の使用時における、解析ボリュームの x,y 空間の各ディメンションのサイズ。

Linear Unit
step_height
(オプション)

[分離] 方法の使用時における、解析ボリュームの高さ。

Linear Unit
extent
(オプション)

評価されるデータの範囲。

  • MAXOF - すべての入力データの最大範囲が使用されます。
  • MINOF - すべての入力データに共通する最小領域が使用されます。
  • DISPLAY - 範囲は、表示範囲と同じになります。
  • レイヤー名 - 指定したレイヤーの範囲が使用されます。
  • Extent オブジェクト - 指定したオブジェクトの範囲が使用されます。
  • 座標のスペース区切りの文字列 - 指定した文字列の範囲が使用されます。 座標は、x-min、y-min、x-max、y-max の順序で表されます。
Extent
process_entire_files
(オプション)

処理範囲の適用方法を指定します。

  • PROCESS_EXTENT対象地域と交差している LAS ポイントだけが処理されます。 これがデフォルトです。
  • PROCESS_ENTIRE_FILES.las ファイルの一部が対象地域と交差している場合、対象地域の外側にあるポイントも含め、そのファイル内のすべてのポイントが処理されます。
Boolean
out_feature_class
(オプション)

ノイズとして識別された LAS ポイントを表す出力ポイント フィーチャ。

Feature Class
update_pyramid
(オプション)

クラス コードが変更された後に、LAS データセットのピラミッドを更新するかどうかを指定します。

  • UPDATE_PYRAMIDLAS データセットのピラミッドを更新します。 これがデフォルトです。
  • NO_UPDATE_PYRAMIDLAS データセットのピラミッドを更新しません。
Boolean

派生した出力

名前説明データ タイプ
out_las_dataset

変更対象の LAS データセット。

LAS Dataset Layer

コードのサンプル

ClassifyLasNoise の例 1 (Python ウィンドウ)

次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。

arcpy.env.workspace = 'C:/data'

arcpy.ddd.ClassifyLasNoise('Denver_2.lasd', "ABSOLUTE_HEIGHT", 
                           edit_las='CLASSIFY', withheld='WITHHELD', 
                           high_z='450 Feet')
ClassifyLasNoise の例 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())

ライセンス情報

  • Basic: 次のものが必要 3D Analyst
  • Standard: 次のものが必要 3D Analyst
  • Advanced: 次のものが必要 3D Analyst

関連トピック