飛行経路内の多数の線に沿ってポイントを収集するマルチパルス LIDAR データを使用しています。las ファイル内の個々の行の名前と数を特定しようとしています。Pythonでliblasモジュールを使用しています。
las ファイルに格納されているさまざまなフィールドについて説明しているこのドキュメントを見つけました。ページの一番下にデータ フィールド (get_data および set_data) が記載されています。
ヘッダーの「ポイント データ フォーマット」と「ポイント データ レコード長」によって、この「データ」フィールド用のスペースが確保されます。ヘッダーには、データ フィールド用に 28 バイトが確保されており、データ フィールドには 28 の値が格納されていることが示されています。19 番目の値 (少なくとも 2 つの異なるセンサーからの 2 つのデータセット) は、行番号を表します。シングル パルス データには 1 つの値があり、マルチ パルス データには 4 があります。
このフィールドに保存されるものに標準があるのか、それとも独自のものなのか疑問に思っていました。
また、各スキャン ラインの名前を取得する方法として、次のコードを記述しました。
import liblas
from liblas import file as lasfile
# Get parameters
las_file = r"E:\Testing\00101.las"
f = lasfile.File(las_file, mode='r')
line_list = []
counter = 0
for p in f:
line_num = p.data[18]
if line_num not in line_list:
line_list.append(line_num)
counter += 1
print line_list
次のエラーが発生します。
Traceback (most recent call last):
File "D:\Tools\Python_Scripts\point_info.py", line 46, in <module>
line_num = p.data[18]
File "C:\Python27\ArcGIS10.1\lib\site-packages\liblas\point.py", line 560, in get_data
length = self.header.data_record_length
File "C:\Python27\ArcGIS10.1\lib\site-packages\liblas\point.py", line 546, in get_header
return header.Header(handle=core.las.LASPoint_GetHeader(self.handle))
WindowsError: [Error -529697949] Windows Error 0xE06D7363
最後のポイント/ヘッダーに保存されている行番号について誰かが詳しく知っていますか? 誰でもエラーを説明できますか? エラーが発生する前に、2 GB 近くの RAM を割り当てているようです。私はwin XPを使用しているので、メモリエラーだと推測していますが、この「データ」フィールドにアクセスするとメモリが占有される理由がわかりません。どんな助けでも大歓迎です。