PythonでドローンのTEXTデータをPotreeで読み込めるLASデータへ変換しようとしたら
やはりChatGPTではまだかけない。
https://potree.org/potree/examples/viewer.html
こちらを指示すると、一つ前の指示を忘れているようで、、、
結局コード読んで考えて修正を加えないといけない。
でも高校生レベルまでは来ているイメージかな、、
一応ドローンのTXTデータをCM単位でLASデータに変換するコードができたので書いておく。
調査士なのにドローンが当たり前になりつつある今日このごろ。コードも若い人はチラホラと書ける人がどんどん入ってくる。
おじさんは少し危機感を持っている。
ITを少しばかりかじったのは無駄ではなかったと思う今日このごろ
import laspy
import numpy as np
# CSVデータを読み込み
input_csv = "tengun.txt" # CSVファイルの名前
output_las = "output.las"
# 点群データの分割処理用関数
def process_chunk(input_csv, output_las, chunk_size=100000):
points = []
with open(input_csv, "r") as f:
for line in f:
parts = line.strip().split()
x, y, z = map(float, parts[:3])
r, g, b = map(int, parts[3:6])
points.append((x, y, z, r, g, b))
# チャンクが一定数に達したら書き出す
if len(points) >= chunk_size:
write_to_las(points, output_las)
print(f"LASファイルを作成しました: {output_las}")
points = [] # ポイントリストをリセット
# 最後の残りデータを書き出し
if points:
write_to_las(points, output_las)
# LASデータ書き込み用関数
def write_to_las(points, output_las):
# LASファイルのヘッダーを定義
# point_format=3 は RGB を含む
header = laspy.LasHeader(point_format=3, version="1.2")
header.offsets = np.min(np.array(points)[:, :3], axis=0)
header.scales = np.array([0.01, 0.01, 0.01]) # スケール設定(cm単位)
# LASファイルを作成
las = laspy.LasData(header)
# 座標データを設定 (配列形式に変換)
points_array = np.array(points)
las.x = points_array[:, 0] # X座標
las.y = points_array[:, 1] # Y座標
las.z = points_array[:, 2] # Z座標
las.write(output_las)
# 実行
process_chunk(input_csv, "output.las", chunk_size=100000)
print(f"LASファイルが完成しました: {output_las}")
と思ったらすでにアプリがあったようでこちらのブログに書いてありました。
私の4時間をかえしてほしい、、、
車輪の再発明というらしい。
先にググればよかった。涙