LAS の抽出 (Extract LAS) (3D Analyst)

サマリー

LAS データセットまたは点群シーン レイヤーの点群データから LAS ファイルを作成します。

LAS の抽出ツールの図

使用法

  • このツールは、LAS データセット、点群 .slpk ファイル、I3S 点群シーン レイヤー サービスから .las または .zlas ファイルを作成します。 入力が LAS データセットの場合、LAS データセットによって参照される .las ファイルまたは .zlas ファイルごとに 1 つの出力ファイルが作成されます。 入力が点群シーン レイヤーの場合、抽出されるポイントの数に応じて出力ファイルの数も異なります。 各出力ファイルには約 1670 万ポイントというサイズ制限があります。

  • 入力点群データをフィルター処理することで、分類コード、分類フラグ、リターン値の任意の組み合わせを使用して抽出されるポイントを制限できます。 ポイント フィルターを定義するには、マップまたはシーンにレイヤーを読み込んでから、[レイヤー プロパティ] ダイアログ ボックスでフィルターを指定します。 ポイント フィルターは、[LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用して LAS データセットに適用することもできます。 さらに、処理範囲と抽出境界を指定することで、入力点群のサブセットを抽出することもできます。 処理範囲を抽出境界とともに指定すると、両者の交差部分を使用して出力ファイルが作成されます。 処理範囲と抽出境界がどちらも定義されない場合、入力点群データ全体が処理されます。

  • 入力が I3S 点群シーン レイヤー サービスまたは .slpk ファイルの場合は、複数の出力ファイルが作成されることがあります。 出力されるファイルでは、範囲が重複している可能性があるため、特定の状況でデータ処理が非効率になることがあります。 [LAS タイルの作成 (Tile LAS)] ツールを使用すると、規則的なグリッドに沿って分割される新しい LAS ファイルを作成して、重複のないファイルを生成できます。

  • 入力が LAS データセットの場合、出力される LAS ファイル バージョンと出力のポイント記録形式はソース ファイルに一致します。 入力が I3S 点群シーン レイヤー サービスまたは .slpk ファイルの場合、出力は LAS ファイル バージョン 1.4 で作成されますが、ポイント記録形式は、次のようにソース点群の属性によって異なります。

    • 入力に RGB 値や近赤外の値が含まれていない場合は、ポイント形式 6 が使用されます。
    • 入力に RGB 値が含まれているが、近赤外の値は含まれていない場合は、ポイント形式 7 が使用されます。
    • 入力に RGB 値と近赤外の値が含まれている場合は、ポイント形式 8 が使用されます。

    異なる LAS ファイル バージョンとポイント記録形式を使用するには、このツールを [LAS の変換 (Convert LAS)] ツールと併用して生成された出力ファイルを処理します。

  • .las ファイルの空間参照は通常、このファイル内に定義されています。 この情報が見つからないか、正しくない場合は、補助的な .prj ファイルを使用して LAS ファイルの空間参照を定義できます。 .prj ファイルは .las ファイルと同じ場所に配置し、.las ファイルと同じ名前にする必要があります。 存在する場合、.las ファイルの空間参照情報が .prj ファイルによって上書きされます。 空間参照が見つからないか、誤って定義されている .las ファイルで使用する .prj ファイルを作成するには、個別の .las または .zlas ファイルに対して [投影法の定義 (Define Projection)] ツールを使用するか、[LAS データセットの作成 (Create LAS Dataset)] ツールで [LAS ファイルの PRJ を作成] パラメーターを使用します。

  • 入力点群データには、「出力座標系」環境設定を指定することで、別の空間参照に再投影された水平座標系を設定することができます。 また、鉛直座標系を通じて鉛直単位が定義されるようにして、Z 単位変換を実施することもできます。 ただし、現在、鉛直測地基準系変換はサポートされていません。 水平座標系変換で元の鉛直座標系を維持できるようにする必要があります。

  • ポイントの空間クラスタリングに対応しないバイナリ シーケンスの .las ファイルに LAS ポイント レコードを保存することは珍しいことではありません。 このような分布のデータが検索される場合、LAS ポイントを表すバイナリ レコードへのアクセス効率が低下する可能性があります。 作成される .las ファイルのポイントを再配置することで、視覚化やその他の空間操作のデータが最適化されます。 再配置オプションが有効化されると、統計情報が自動的に計算されます。 LAS ポイントを再配置しない場合、統計情報の計算を有効化または無効化することができます。 統計情報の計算により、空間クエリが最適化され、クラス コードのサマリーが提供され、.las ファイルに表示される値が返されます。 ただし、このツールの処理に時間がかかるようになります。 作成される .las ファイルが ArcGIS で使用されない場合、ツールの処理時間を短縮するために、統計情報の計算を無効化することができます。

  • [抽出境界] パラメーターを使用すると、入力点群が不規則な形状にクリップされます。 このパラメーターでは、比較的大規模な地域を含む 1 つのポリゴン フィーチャなど、隣接する分析範囲を定義するポリゴン境界をサポートしています。 隣接する対象地域を表す複数のポリゴンを入力データとして指定できますが、境界フィーチャでは、樹木や建物など、多数の小規模なフィーチャを表すポリゴンをサポートしていません。 入力点群を効率よくクリップできるように、複数のポリゴンがマージされます。 このため、多数の小規模なポリゴンを含む境界フィーチャを指定すると、パフォーマンスが低下するので、実行しないでください。

パラメーター

ラベル説明データ タイプ
入力点群データ

抽出される LAS データセット、点群シーン レイヤー パッケージ (.slpk ファイル)、または I3S 点群サービス。 I3S 点群サービスを処理するには、エクスポート プロパティが有効になっている必要があります。

LAS Dataset Layer; Scene Layer; File
ターゲット フォルダー

出力 .las ファイルが書き込まれる既存のフォルダー。

Folder
処理範囲
(オプション)

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

  • [現在の表示範囲] Current Display Extent - 範囲は、アクティブなマップまたはシーンに基づきます。 このオプションは、アクティブなマップが存在する場合にのみ使用できます。
  • [範囲の描画] Draw Extent - 範囲は、マップまたはシーンに描画された四角形に基づきます。 このオプションは、プロジェクト ジオデータベースにフィーチャクラスを作成し、レイヤーをマップに追加します。 フィーチャクラスの座標系はマップと同じです。
    注意:

    このオプションは、[環境] ダイアログ ボックスでは使用できません。 範囲データ タイプを使用するツール パラメーターまたはツール ダイアログ ボックスの [環境] タブからのみ使用できます。

    注意:

    編集タブで編集を有効/無効にする編集オプションがオンの場合、範囲を描画するには [編集] リボン タブで編集を有効化する必要があります。

  • [レイヤーの範囲] Layer - 範囲は、アクティブなマップ レイヤーに基づきます。 ドロップダウン リストを使用して使用可能なレイヤーを選択するか、[すべてのレイヤーのデータの範囲] オプションを使用して、ベースマップを除くすべてのアクティブなマップ レイヤーを組み合わせた範囲を取得します。 このオプションは、レイヤーを含むアクティブなマップが存在する場合にのみ使用できます。

    各マップ レイヤーには、次のオプションがあります。

    • [すべてのフィーチャ] Select All - レイヤーのすべてのフィーチャの範囲。
    • [選択フィーチャ]Area from Selected Features - レイヤーの選択フィーチャの範囲。
    • [表示フィーチャ] Extent Indicator - レイヤーの表示フィーチャの範囲。
      注意:

      [選択フィーチャ] Area from Selected Features[表示フィーチャ] Extent Indicator オプションの範囲は、フィーチャ レイヤーでのみ使用できます。

  • [参照] Browse - 範囲は、既存のデータに基づきます。
  • [入力データの共通領域] Intersect - 範囲は、すべての入力データの最小範囲または共通範囲に基づきます。 重なり合う入力データがない場合は、すべてゼロの null 範囲が生成されます。
  • [入力データのすべての領域] Union - この範囲は、すべての入力データの最大範囲または結合された範囲に基づきます。
  • [クリップボード] Paste - 範囲をクリップボードにコピーしたり、クリップボードから貼り付けたりできます。
    • [範囲をコピー] Copy - 範囲の座標と座標系をクリップボードにコピーします。
    • [範囲を貼り付け] Paste - 範囲の座標と、必要に応じて座標系をクリップボードから貼り付けます。 クリップボードの値に座標系が含まれていない場合、マップの座標系が範囲に使用されます。
    注意:

    範囲の座標は、ArcPy Extent オブジェクトと同じ書式と順序 (x-min、y-min、x-max、y-max、空間参照) を使用して、クリップボードからコピーおよびクリップボードから貼り付けられます。

  • [範囲をリセット] Reset - 範囲はデフォルト値にリセットされます。
  • 手動入力した座標値 - 座標値は数値であり、アクティブなマップの座標系で表示する必要があります。
    注意:

    マップで、入力された座標と異なる表示単位が使用されることがあります。 基本方向 (N、S、E、W) を使用することはできません。 南と西の座標にはマイナス値の記号を使用します。

Extent
抽出境界
(オプション)

入力点群をクリップする際に使用されるポリゴン境界。 この境界は、一般的に 1 つの隣接ポリゴンで定義される主要な分析範囲を表す必要がありますが、空間的なギャップのある共通の分析範囲を表す場合には、複数のポリゴンで構成することもできます。

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

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

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

各出力 .las ファイルの名前に追加されるテキスト。 各ファイルは、ソース ファイルからベース名を継承し、このパラメーターで指定された接尾辞が付加されます。

String
可変長レコードの削除
(オプション)

可変長レコード (VLR) を削除するかどうかを指定します。 各 .las ファイルには、それを生成したソフトウェアによって追加された VLR のセットが含まれていることがあります。 これらのレコードの意味は、通常は元のソフトウェアしか認知していません。 この情報を理解するアプリケーションによって出力 LAS データが処理されるのでなければ、この VLR を保持しても付加価値的な機能は何ももたらされません。 VLR を削除することで、そのサイズ合計やそれを含むファイルの数によっては、かなり大きなディスク容量を節約することができます。

  • オフ - 入力 .las ファイル内の可変長レコードを削除せず、出力内に維持します。 これがデフォルトです。
  • オン - 入力 .las ファイル内の可変長レコードを出力から削除します。
Boolean
ポイントの整理
(オプション)

.las ファイルのポイントを整理するかどうかを指定します。

  • オフ - .las ファイルのポイントの順序を整理しません。
  • オン - .las ファイルのポイントを整理します。 これがデフォルトです。
Boolean
統計情報の計算
(オプション)

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

  • オン - 統計情報を計算します。 これがデフォルトです。
  • オフ - 統計情報を計算しません。
Boolean
出力 LAS データセット
(オプション)

新しく作成された .las ファイルを参照する出力 LAS データセット。

LAS Dataset
圧縮
(オプション)

出力 .las ファイルを圧縮形式にするか、標準の LAS 形式にするかを指定します。

  • 入力と同様入力と同じ圧縮になります。 このオプションは、入力が LAS データセットである場合にのみ使用できます。その場合はこれがデフォルトです。
  • 圧縮なし出力は標準の LAS 形式 (**.las ファイル) になります。 これは、入力が点群シーン レイヤーである場合のデフォルトです。
  • zLAS 圧縮出力 .las ファイルは zLAS 形式で圧縮されます。
String

派生した出力

ラベル説明データ タイプ
出力フォルダー

.las ファイルが書き込まれるフォルダー。

Folder

arcpy.ddd.ExtractLas(in_las_dataset, target_folder, {extent}, {boundary}, {process_entire_files}, {name_suffix}, {remove_vlr}, {rearrange_points}, {compute_stats}, {out_las_dataset}, {compression})
名前説明データ タイプ
in_las_dataset

抽出される LAS データセット、点群シーン レイヤー パッケージ (.slpk ファイル)、または I3S 点群サービス。 I3S 点群サービスを処理するには、エクスポート プロパティが有効になっている必要があります。

LAS Dataset Layer; Scene Layer; File
target_folder

出力 .las ファイルが書き込まれる既存のフォルダー。

Folder
extent
(オプション)

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

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

入力点群をクリップする際に使用されるポリゴン境界。 この境界は、一般的に 1 つの隣接ポリゴンで定義される主要な分析範囲を表す必要がありますが、空間的なギャップのある共通の分析範囲を表す場合には、複数のポリゴンで構成することもできます。

Feature Layer
process_entire_files
(オプション)

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

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

各出力 .las ファイルの名前に追加されるテキスト。 各ファイルは、ソース ファイルからベース名を継承し、このパラメーターで指定された接尾辞が付加されます。

String
remove_vlr
(オプション)

可変長レコード (VLR) を削除するかどうかを指定します。 各 .las ファイルには、それを生成したソフトウェアによって追加された VLR のセットが含まれていることがあります。 これらのレコードの意味は、通常は元のソフトウェアしか認知していません。 この情報を理解するアプリケーションによって出力 LAS データが処理されるのでなければ、この VLR を保持しても付加価値的な機能は何ももたらされません。 VLR を削除することで、そのサイズ合計やそれを含むファイルの数によっては、かなり大きなディスク容量を節約することができます。

  • MAINTAIN_VLR処理対象の .las ファイルの可変長レコードに格納されているすべてのデータを削除せず、抽出されたファイル内に維持します。 これがデフォルトです。
  • REMOVE_VLR余分な可変長レコードを .las ファイルから削除します。
Boolean
rearrange_points
(オプション)

.las ファイルのポイントを整理するかどうかを指定します。

  • MAINTAIN_POINTS.las ファイルのポイントの順序を整理しません。
  • REARRANGE_POINTS.las ファイルのポイントを整理します。 これがデフォルトです。
Boolean
compute_stats
(オプション)

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

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

新しく作成された .las ファイルを参照する出力 LAS データセット。

LAS Dataset
compression
(オプション)

出力 .las ファイルを圧縮形式にするか、標準の LAS 形式にするかを指定します。

  • SAME_AS_INPUT入力と同じ圧縮になります。 このオプションは、入力が LAS データセットである場合にのみ使用できます。その場合はこれがデフォルトです。
  • NO_COMPRESSION出力は標準の LAS 形式 (**.las ファイル) になります。 これは、入力が点群シーン レイヤーである場合のデフォルトです。
  • ZLAS出力 .las ファイルは zLAS 形式で圧縮されます。
String

派生した出力

名前説明データ タイプ
out_folder

.las ファイルが書き込まれるフォルダー。

Folder

コードのサンプル

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

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

arcpy.env.workspace = 'C:/data'
arcpy.ddd.ExtractLas('test.lasd', 'c:/lidar/subset', boundary='study_area.shp',
                     name_suffix='subset', remove_vlr=True, 
                     rearrange_points='REARRANGE_POINTS', 
                     out_las_dataset='extracted_lidar.lasd')
ExtractLas の例 2 (スタンドアロン スクリプト)

次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。

'''****************************************************************************
Name: Split Large LAS File
Description: Divides a large LAS file whose point distribution covers the full
             XY extent of the data into smaller files to optimize performance
             when reading lidar data.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math

in_las_file = arcpy.GetParameterAsText(0)
tile_width = arcpy.GetParameter(1) # double in LAS file's XY linear unit
tile_height = arcpy.GetParameter(2) # double in LAS file's XY linear unit
out_folder = arcpy.GetParameterAsText(3) # folder for LAS files
out_name_suffix = arcpy.GetParameterAsText(4) # basename for output files
out_lasd = arcpy.GetParameterAsText(5) # output LAS dataset


try:
    temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
    arcpy.management.CreateLasDataset(in_las_file, temp_lasd, 
                                      compute_stats='COMPUTE_STATS')
    desc = arcpy.Describe(temp_lasd)
    total_columns = int(math.ceil(desc.extent.width/tile_width))
    total_rows = int(math.ceil(desc.extent.height/tile_height))
    digits = int(math.log10(max(cols, rows))) + 1
    for row in range(1, total_rows+1):
        yMin = desc.extent.YMin + tile_height*(row-1)
        yMax = desc.extent.YMin + tile_height*(row)
        for col in range (1, total_columns+1):
            xMin = desc.extent.XMin + tile_width*(col-1)
            xMax = desc.extent.XMax + tile_width*(col)
            name_suffix = '_{0}_{1}x{2}'.format(out_name_suffix, 
                                                str(row).zfill(digits), 
                                                str(col).zfill(digits))
            arcpy.ddd.ExtractLas(temp_lasd, out_folder, 
                                 arcpy.Extent(xMin, yMin, xMax, yMax),
                                 name_suffix=name_suffix, 
                                 rearrange_points='REARRANGE_POINTS',
                                 compute_stats='COMPUTE_STATS')
    arcpy.env.workspace = out_folder
    arcpy.management.CreateLasDataset(arcpy.ListFiles('*{0}*.las'.format(out_name_suffix)),
                                      out_lasd, compute_stats='COMPUTE_STATS',
                                      relative_paths='RELATIVE_PATHS')
except arcpy.ExecuteError:
    print(arcpy.GetMessages())

関連トピック