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

概要

LAS データセットが参照する LIDAR データのコレクションをフィルター処理、クリップ、および再投影します。

LAS の抽出 (Extract LAS)

使用法

  • LAS データセット レイヤーにより、レイヤーのフィルター設定内の分類コード、分類フラグ、リターンの組み合わせを選択することで表示および処理される LAS ポイントを制限できます。フィルターは、[レイヤー プロパティ] ダイアログ ボックスまたは [LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用して定義できます。

  • LAS ファイルを別の座標系に再投影するには、[出力データの座標系] 環境設定で空間参照を指定します。LAS ファイルには、再投影されるファイル用に定義された空間参照が必要です。空間参照に鉛直座標系が含まれる場合、鉛直測地基準系変換グリッドがインストールされており、ソース参照とターゲット座標系から変換が使用可能であれば、LAS ファイルを別の高さ参照系に再投影することもできます。LAS ファイルの空間参照は、そのヘッダーか、WKT (既知の文字列) 規則を使用して空間参照を定義する補正 PRJ ファイルのいずれかを使用して定義できます。PRJ ファイルは LAS ファイルと同じ場所に配置し、LAS ファイルと同じ名前にする必要があります。PRJ ファイルが存在する場合は、LAS ファイルのヘッダーの空間参照情報は無効化されます。空間参照が存在しないか誤って定義されている LAS ファイルに対する PRJ ファイルを作成するには、個別の LAS または ZLAS ファイルに対して [投影法の定義 (Define Projection)] ツールを使用するか、[LAS データセットの作成 (Create LAS Dataset)] ツールを [PRJ] オプションを有効にした状態で使用します。

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

  • LAS ファイルをクリップするとき、抽出範囲が抽出境界とともに定義されている場合、抽出される LAS ファイルのカバレッジは両者の共通範囲によって定義されます。

  • 出力 LAS ファイルは、入力の LAS バージョンおよびポイント レコード形式と一致します。

構文

arcpy.3d.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 データセット。

LAS Dataset Layer
target_folder

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

Folder
extent
(オプション)

このツールが評価するデータの範囲を指定します。

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

クリップされる LAS ファイルのエリアを定義するポリゴン境界。

Feature Layer
process_entire_files
(オプション)

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

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

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

String
remove_vlr
(オプション)

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

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

LAS ファイル内のポイントを整理するかどうかを決定します。

  • MAINTAIN_POINTSLAS ファイルのポイントの順序を維持します。
  • REARRANGE_POINTSLAS ファイルのポイントを整理します。これがデフォルトです。
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入力と同じ圧縮になります。これがデフォルトです。
  • NO_COMPRESSION出力は標準の LAS 形式 (**.las) になります。
  • ZLAS出力 LAS ファイルは zLAS 形式で圧縮されます。
String

派生した出力

名前説明データ タイプ
out_folder

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

フォルダー

コードのサンプル

ExtractLas (LAS の抽出) の例 1 (Python ウィンドウ)

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

import arcpy
from arcpy import env

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 (LAS の抽出) の例 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())

ライセンス情報

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

関連トピック