LAS → マルチポイント(LAS to Multipoint) (3D Analyst)
サマリ
1 つ以上の LIDAR ファイルを使用してマルチポイント フィーチャを作成します。
図
使用法
-
サポートされている LAS バージョンは 1.0、1.1、1.2、および 1.3 です。
LAS ポイントは、地表、建物、水域などの LIDAR リターンが検出する多数の物質に対応するカテゴリに分類できます。American Society for Photogrammetry and Remote Sensing(ASPRS)によって定義されている LAS ファイル バージョン 1.1、1.2、および 1.3 の分類コードは、以下のとおりです。
分類値
分類タイプ
0
分類不可
1
未分類
2
地面
3
低植生
4
中植生
5
高植生
6
建物
7
ノイズ
8
モデル キー
9
水域
10
ASPRS 定義用に予約
11
ASPRS 定義用に予約
12
オーバーラップ
13–31
ASPRS 定義用に予約
注意:LAS 1.0 仕様には、0 ~ 255 の範囲の分類コードはありますが、標準化された分類スキーマはありません。通常、1.0 のファイルで使用されている分類コードは、データ ベンダによって定義され、補助情報を通じて提供されます。
-
リターン番号に基づくポイントのインポートに関心がない場合、またはポイントがフィルタ処理または分類されているため、ファイルで指定されたすべてのリターンが 0 に設定されている場合は、[ANY_RETURNS] をオンにします。
-
複数の LAS 属性を Oracle データベースに読み込む場合は、パラメータ attribute_binary のすべての DBTUNE キーワードが LONGRAW ではなく BLOB(Binary Large Object)を使用するように設定されている必要があります。その理由は、LAS 属性は BLOB として読み込まれますが、Oracle では LONGRAW 表で複数の BLOB をサポートしていないためです。詳細については、Oracle データベース管理者に問い合わせてください。
構文
パラメータ | 説明 | データ タイプ |
input [input,...] |
LAS バージョン 1.0、1.1、1.2 形式のデータを含む 1 つ以上のファイルまたはフォルダ。LAS 形式は、LIDAR データ対応の業界標準の形式です。 | Folder or File |
out_feature_class |
出力フィーチャクラス。 | Feature Class |
average_point_spacing |
入力ファイル(複数可)内のポイント間の平均 2D 距離。この値は概算値で構いません。さまざまな密度で面積がサンプリングされている場合、小さいほうの間隔を指定します。この値は、出力座標系の投影単位で設定する必要があります。 | Double |
class_code [class_code,...] (オプション) |
LAS データ ポイントのクエリ フィルタとして使用する分類コード。有効な値は 1 から 32 までの範囲です。デフォルトではフィルタは適用されません。 | Long |
return [return,...] (オプション) |
クエリ フィルタとして使用するリターン。有効なリターンは 1 ~ 5、LAST_RETURNS、ANY_RETURNS です。デフォルト値は ANY_RETURNS です。 | String |
attribute [[keyword, name],...] (オプション) |
読み込んで格納する 1 つ以上の LAS 属性と、任意の使用フィールド名。デフォルトでは何もありません。サポートされている属性キーワードは、INTENSITY、RETURN_NUMBER、NUMBER_OF_RETURNS、SCAN_DIRECTION_FLAG、EDGE_OF_FLIGHTLINE、CLASSIFICATION、SCAN_ANGLE_RANK、FILE_MARKER、USER_BIT_FIELD、GPS_TIME です。 | Value Table |
input_coordinate_system (オプション) |
入力 LAS ファイルの座標系。LAS ファイル内で指定されている座標系にデフォルト設定されます。何らかの理由で、ファイル内で定義されていないものの、それがわかっている場合は、ここで指定します。 | Coordinate System |
file_suffix (オプション) |
入力フォルダからインポートするファイルの接尾辞。フォルダが入力として指定されている場合は、このパラメータが必要です。 | String |
z_factor (オプション) |
標高値に乗算する係数。一般的には、Z の距離単位を変換して、XY の距離単位に一致させるために使用されます。デフォルトは 1 です。この場合、標高値は変更されません。 | Double |
folder_recursion (オプション) |
サブフォルダ ディレクトリにデータの格納された入力フォルダが選択されたときに、サブフォルダまでスキャンします。出力フィーチャクラスは、ディレクトリ構造で検出された各ファイルの行で生成されます。
| Boolean |
コードのサンプル
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.LASToMultipoint_3d("001.las", "Test.gdb/feature_dataset/sample_1", 1.5,
"2", "ANY_RETURNS", "INTENSITY", "Coordinate Systems"\
"/Projected Coordinate Systems/UTM/NAD 1983/NAD 1983 "\
"UTM Zone 17N.prj", "las", 1)
次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''****************************************************************************
Name: Define Data Boundary of LAS File
Description: This script demonstrates how to delineate data boundaries of
LAS files with irregularly clustered points. It is intended for
use as a script tool with one input LAS file.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
# Set local variables
inLas = arcpy.GetParameterAsText(0) #input LAS file
ptSpacing = arcpy.GetParameterAsText(1) # LAS point spacing
classCode = arcpy.GetParameterAsText(2) # List of integers
returnValue = arcpy.GetParameterAsText(3) # List of strings
outTin = arcpy.GetParameterAsText(4) # TIN created to delineate data area
outBoundary = arcpy.GetParameterAsText(5) # Polygon boundary file
try:
arcpy.CheckOutExtension("3D")
# Execute LASToMultipoint
arcpy.AddMessage("Creating multipoint features from LAS...")
lasMP = arcpy.CreateUniqueName('lasMultipoint', 'in_memory')
arcpy.ddd.LASToMultipoint(inLas, LasMP, ptSpacing, class_code,
"ANY_RETURNS", "", sr, inFormat, zfactor)
# Execute CreateTin
arcpy.AddMessage("Creating TIN dataset...")
arcpy.ddd.CreateTin(outTin, sr, "{0} Shape.Z masspoints"\
.format(lasMP), "Delaunay")
# Execute CopyTin
arcpy.AddMessage("Copying TIN to delineate data boundary...")
arcpy.ddd.CopyTin(outTin, "{0}_copy".format(outTin))
# Execute DelineateTinDataArea
arcpy.AddMessage("Delineating TIN boundary...")
maxEdge = ptSpacing * 4
arcpy.ddd.DelineateTinDataArea(outTin, maxEdge, "PERIMETER_ONLY")
# Execute TinDomain
arcpy.AddMessage("Exporting data area to polygon boundary...")
arcpy.ddd.TinDomain(outTin, outBoundary, "POLYGON")
arcpy.AddMessage("Finished")
arcpy.CheckInExtension("3D")
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)