概要
LAS データセットが参照する LIDAR データのコレクションをフィルター処理、クリップ、および再投影します。
図
使用法
-
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 バージョンおよびポイント レコード形式と一致します。
構文
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 (オプション) | このツールが評価するデータの範囲を指定します。 | Extent |
boundary (オプション) | クリップされる LAS ファイルのエリアを定義するポリゴン境界。 | Feature Layer |
process_entire_files (オプション) | 処理範囲の適用方法を指定します。
| Boolean |
name_suffix (オプション) | 各出力 LAS ファイルの名前に追加されるテキスト。 各ファイルは、ソース ファイルからベース名を継承し、このパラメーターで指定された接尾辞が付加されます。 | String |
remove_vlr (オプション) | 各 LAS ファイルには、それを生成したソフトウェアによって追加された可変長レコード (VLR) のセットが含まれている可能性があります。これらのレコードの意味は、通常は元のソフトウェアしか認知していません。この情報を理解するアプリケーションによって出力 LAS データが処理されるのでなければ、この VLR を保持しても付加価値的な機能は何ももたらされません。VLR を削除することで、そのサイズ合計やそれを含むファイルの数によっては、かなり大きなディスク容量を節約することができます。
| Boolean |
rearrange_points (オプション) | LAS ファイル内のポイントを整理するかどうかを決定します。
| Boolean |
compute_stats (オプション) | LAS データセットで参照されている LAS ファイルの統計情報を計算するかどうかを指定します。統計情報を計算することで、LAS ファイルごとの空間インデックスが提供され、解析と表示のパフォーマンスが向上します。また統計によって、分類コードやリターン情報などの LAS 属性の表示が LAS ファイルに存在する値に制限されるので、フィルタリングとシンボルのエクスペリエンスも強化されます。
| Boolean |
out_las_dataset (オプション) | 新しく作成された LAS ファイルを参照する出力 LAS データセット。 | LAS Dataset |
compression (オプション) | 出力 LAS ファイルを圧縮形式にするか、標準の LAS 形式にするかを指定します。
| String |
派生した出力
名前 | 説明 | データ タイプ |
out_folder | LAS ファイルが書き込まれるフォルダー。 | フォルダー |
コードのサンプル
次のサンプルは、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')
次のサンプルは、スタンドアロン 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