サマリー
クリップ フィーチャまたは範囲と重なり合う LAS ファイルを抽出します。
図
使用法
-
LAS データセットを入力として指定すると、それが参照する LAS ファイルのすべてのデータ ポイントが処理されます。LAS データセット レイヤーを介して目的の LAS ポイント フィルターを適用することで、分類コード、分類フラグ、およびリターン値で LIDAR データのサブセットを選択することもできます。フィルターは、レイヤー プロパティのダイアログまたは [LAS データセット レイヤーの作成 (Make LAS Dataset Layer)] ツールを使用して定義できます。
元の LIDAR ファイルで取得された LIDAR データのサブセットを抽出する場合は、このツールを使用することを検討してください。たとえば、ポリゴン境界で定義されたエリアだけで作業する必要がある場合、ポリゴンを境界フィーチャとして使用して LAS ファイルを抽出できます。
LAS ファイルを再投影するには、[出力座標系] 環境設定で対象の空間参照を指定します。
抽出範囲が抽出境界とともに定義されている場合、両者の共通範囲を使用して、抽出される LAS ファイルのカバレッジが定義されます。
[ポイントの整理] パラメーターをオンにすると (Python の rearrange_points='REARRANGE_POINTS')、ファイルの読み取りに最適化された空間クラスターにポイント レコードが順番どおりに挿入されます。この最適化により、ArcGIS プラットフォーム全体で表示パフォーマンスが大幅に向上します。[ポイントの整理] を使用した場合、処理が完了するまで多少時間がかかります。データにアクセスしやすくするためにポイントの順序を並べ替えることはデータの根本的な改善につながるため、このパラメーターはデフォルトでオンになっています。
構文
ExtractLas_3d (in_las_dataset, target_folder, {extent}, {boundary}, {process_entire_files}, {name_suffix}, {remove_vlr}, {rearrange_points}, {compute_stats}, {out_las_dataset})
パラメーター | 説明 | データ タイプ |
in_las_dataset | 処理対象の LAS データセット。 | LAS Dataset Layer |
target_folder | LAS ファイルが書き込まれるフォルダー。各出力ファイルは、入力ファイルと同じ LAS ファイル バージョンとポイント レコード形式を持ちます。 | Folder |
extent (オプション) | このツールが評価するデータの範囲を指定します。 | Extent |
boundary (オプション) | LAS ファイルを抽出する位置を定義するポリゴン境界。 | Feature Layer |
process_entire_files (オプション) | 処理範囲の適用方法を指定します。
| Boolean |
name_suffix (オプション) | 各出力 LAS ファイルの名前に追加されるテキスト。 各ファイルは、ソース ファイルからベース名を継承し、このパラメーターで指定された接尾辞が付加されます。 | String |
remove_vlr (オプション) | 余分な可変長レコードを削除するか、LAS ファイルに維持するかを決定します。
| Boolean |
rearrange_points (オプション) | LAS ファイル内のポイントを整理するかどうかを決定します。
| Boolean |
compute_stats (オプション) | LAS データセットで参照されている LAS ファイルの統計情報を計算するかどうかを指定します。統計情報が存在することにより、LAS データセット レイヤーのフィルターおよびシンボル オプションで、LAS ファイル内に存在する LAS 属性値のみを表示できます。
| Boolean |
out_las_dataset (オプション) | 出力 LAS データセット。 | LAS Dataset |
コードのサンプル
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())
環境
ライセンス情報
- ArcGIS Desktop Basic: 次のものが必要 3D Analyst
- ArcGIS Desktop Standard: 次のものが必要 3D Analyst
- ArcGIS Desktop Advanced: 次のものが必要 3D Analyst