cli-anything-cloudcompare は何をしますか?
CloudCompare 用のエージェント向けコマンドラインラッパー — オープンソースの3D点群・メッシュ処理ソフトウェアです。
41コマンド、9グループ。
インストール
pip install cli-anything-cloudcompare
前提条件:
- Python 3.10+
- システムにCloudCompareがインストールされていること
- Linux (Flatpak):
flatpak install flathub org.cloudcompare.CloudCompare - macOS/Windows: https://cloudcompare.org からダウンロード
- Linux (Flatpak):
動作確認: CloudCompare 2.13.2 (Flatpak, Linux)
グローバルオプション
これらのオプションはサブコマンドの前に指定します。
cli-anything-cloudcompare [--project FILE] [--json] COMMAND [ARGS]...
| オプション | 説明 |
|---|---|
-p, --project TEXT | プロジェクトJSONファイルのパス |
--json | 結果をJSON形式で出力(エージェントによる利用向け) |
コマンドグループ
1. project — プロジェクト管理 (3コマンド)
project new
新しい空のプロジェクトファイルを作成します。
# デフォルト名でプロジェクトを作成
cli-anything-cloudcompare project new -o myproject.json
# カスタム名でプロジェクトを作成
cli-anything-cloudcompare project new -o myproject.json -n "Bridge Survey 2024"
# エージェント向けJSON出力
cli-anything-cloudcompare --json project new -o myproject.json
オプション: -o/--output TEXT (必須), -n/--name TEXT
project info
プロジェクト情報と読み込まれたエンティティを表示します。
cli-anything-cloudcompare --project myproject.json project info
# JSON出力
cli-anything-cloudcompare --project myproject.json --json project info
project status
プロジェクトの簡易ステータス(点群数、メッシュ数、最終操作)を表示します。
cli-anything-cloudcompare --project myproject.json project status
2. session — セッション管理 (4コマンド)
session save
現在のプロジェクト状態をディスクに保存します。
cli-anything-cloudcompare --project myproject.json session save
session history
最近の操作履歴を表示します。
# 直近10件の操作を表示(デフォルト)
cli-anything-cloudcompare --project myproject.json session history
# 直近5件の操作を表示
cli-anything-cloudcompare --project myproject.json session history -n 5
オプション: -n/--last INTEGER
session set-format
今後の操作で使用するデフォルトのエクスポート形式を更新します。
# 点群のデフォルトエクスポート形式をLASに設定
cli-anything-cloudcompare --project myproject.json session set-format --cloud-fmt LAS --cloud-ext las
# メッシュのデフォルトエクスポート形式をOBJに設定
cli-anything-cloudcompare --project myproject.json session set-format --mesh-fmt OBJ --mesh-ext obj
# 点群とメッシュの両方を設定
cli-anything-cloudcompare --project myproject.json session set-format \
--cloud-fmt PLY --cloud-ext ply \
--mesh-fmt STL --mesh-ext stl
オプション: --cloud-fmt TEXT, --cloud-ext TEXT, --mesh-fmt TEXT, --mesh-ext TEXT
session undo
履歴から最後の操作を削除します(ソフトアンドゥ — 出力ファイルは削除しません)。
cli-anything-cloudcompare --project myproject.json session undo
3. cloud — 点群操作 (21コマンド)
すべての点群コマンドは CLOUD_INDEX(cloud list の0始まり整数)を受け取り、ほとんどのコマンドは --add-to-project で出力をプロジェクトに再登録できます。
cloud add
点群ファイルをプロジェクトに追加します。
# LASファイルを追加
cli-anything-cloudcompare --project myproject.json cloud add /data/scan.las
# ラベル付きで追加
cli-anything-cloudcompare --project myproject.json cloud add /data/scan.las -l "roof scan"
オプション: -l/--label TEXT
cloud list
プロジェクト内のすべての点群を一覧表示します。
cli-anything-cloudcompare --project myproject.json cloud list
# インデックス取得のためのJSON出力
cli-anything-cloudcompare --project myproject.json --json cloud list
cloud convert
点群をある形式から別の形式に変換します(形式はファイル拡張子で決定)。
# LAS → PLY
cli-anything-cloudcompare cloud convert /data/scan.las /data/scan.ply
# PCD → LAS
cli-anything-cloudcompare cloud convert /data/cloud.pcd /data/cloud.las
cloud subsample
RANDOM、SPATIAL、またはOCTREE方式で点数を削減します。
# ランダム: 100,000点を保持
cli-anything-cloudcompare --project myproject.json cloud subsample 0 \
-o /data/sub_random.las -m random -n 100000
# 空間的: 点間の最小距離0.05m
cli-anything-cloudcompare --project myproject.json cloud subsample 0 \
-o /data/sub_spatial.las -m spatial -n 0.05
# オクトリー: レベル8
cli-anything-cloudcompare --project myproject.json cloud subsample 0 \
-o /data/sub_octree.las -m octree -n 8 --add-to-project
オプション: -o/--output TEXT (必須), -m/--method [random|spatial|octree], -n/--param FLOAT, --add-to-project
cloud crop
点群を軸平行バウンディングボックスで切り抜きます。
# ボックス内の点を保持
cli-anything-cloudcompare --project myproject.json cloud crop 0 \
-o /data/cropped.las \
--xmin 0.0 --ymin 0.0 --zmin 0.0 \
--xmax 10.0 --ymax 10.0 --zmax 5.0
# ボックス外の点を保持
cli-anything-cloudcompare --project myproject.json cloud crop 0 \
-o /data/exterior.las \
--xmin 0.0 --ymin 0.0 --zmin 0.0 \
--xmax 10.0 --ymax 10.0 --zmax 5.0 --outside
オプション: -o/--output TEXT (必須), --xmin/ymin/zmin/xmax/ymax/zmax FLOAT (すべて必須), --outside, --add-to-project
cloud normals
オクトリー法でサーフェス法線を計算します。
# オクトリーレベル6で法線を計算
cli-anything-cloudcompare --project myproject.json cloud normals 0 \
-o /data/with_normals.ply --level 6
# +Z方向に向けた法線を計算
cli-anything-cloudcompare --project myproject.json cloud normals 0 \
-o /data/with_normals.ply --level 6 --orientation plus_z --add-to-project
オプション: -o/--output TEXT (必須), --level INTEGER (1–10), --orientation [plus_x|plus_y|plus_z|minus_x|minus_y|minus_z], --add-to-project
cloud invert-normals
点群内のすべての法線ベクトルを反転します。
cli-anything-cloudcompare --project myproject.json cloud invert-normals 0 \
-o /data/flipped_normals.ply --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
cloud filter-sor
統計的外れ値除去 — 孤立したノイズ点を除去します。
# デフォルトパラメータ(k=6近傍、1.0標準偏差比)
cli-anything-cloudcompare --project myproject.json cloud filter-sor 0 \
-o /data/denoised.las
# カスタムパラメータ
cli-anything-cloudcompare --project myproject.json cloud filter-sor 0 \
-o /data/denoised.las --nb-points 12 --std-ratio 2.0 --add-to-project
オプション: -o/--output TEXT (必須), --nb-points INTEGER, --std-ratio FLOAT, --add-to-project
cloud noise-filter
PCLノイズフィルター(KNNまたは半径モード)でノイズ点を除去します。
# KNNモード(デフォルト)
cli-anything-cloudcompare --project myproject.json cloud noise-filter 0 \
-o /data/clean.las --knn 8 --noisiness 1.0
# 半径モード
cli-anything-cloudcompare --project myproject.json cloud noise-filter 0 \
-o /data/clean.las --radius 0.1 --use-radius --add-to-project
オプション: -o/--output TEXT (必須), --knn INTEGER, --noisiness FLOAT, --radius FLOAT, --use-radius, --absolute, --add-to-project
cloud filter-csf
布シミュレーションフィルター(CSF)アルゴリズムによる地面フィルタリング。地面点と非地面点(建物、植生)を分離します。
# 地面のみ抽出 — 混合地形
cli-anything-cloudcompare --project myproject.json cloud filter-csf 0 \
--ground /data/ground.las --scene relief
# 地面+非地面に分割 — 都市景観
cli-anything-cloudcompare --project myproject.json cloud filter-csf 0 \
--ground /data/ground.las \
--offground /data/buildings.las \
--scene flat --cloth-resolution 0.5 --class-threshold 0.3
# 急峻な森林斜面、斜面後処理あり
cli-anything-cloudcompare --project myproject.json cloud filter-csf 0 \
--ground /data/terrain.las --scene slope --proc-slope --add-to-project
オプション: -g/--ground TEXT (必須), -u/--offground TEXT, --scene [slope|relief|flat], --cloth-resolution FLOAT, --class-threshold FLOAT, --max-iteration INTEGER, --proc-slope, --add-to-project
cloud filter-sf
スカラーフィールドの値範囲で点群をフィルタリングします(SF ∈ [min, max] の点を保持)。
# SF値が10〜50の点を保持
cli-anything-cloudcompare --project myproject.json cloud filter-sf 0 \
-o /data/filtered.las --min 10.0 --max 50.0
# 特定のSFインデックスでフィルタリング
cli-anything-cloudcompare --project myproject.json cloud filter-sf 0 \
-o /data/filtered.las --min 0.0 --max 1.5 --sf-index 2 --add-to-project
オプション: -o/--output TEXT (必須), --min FLOAT (必須), --max FLOAT (必須), --sf-index INTEGER, --add-to-project
cloud sf-from-coord
座標軸(X/Y/Z)をスカラーフィールドに変換します。高さ(Z)スカラーフィールドの作成によく使われます。
# Zスカラーフィールド(高さ)を作成
cli-anything-cloudcompare --project myproject.json cloud sf-from-coord 0 \
-o /data/with_z_sf.las --dim z --add-to-project
# 特定のアクティブインデックスでXスカラーフィールドを作成
cli-anything-cloudcompare --project myproject.json cloud sf-from-coord 0 \
-o /data/with_x_sf.las --dim x --sf-index 0
オプション: -o/--output TEXT (必須), --dim [x|y|z] (デフォルト: z), --sf-index INTEGER, --add-to-project
cloud sf-filter-z
便利コマンド: Z → スカラーフィールド変換と高さ範囲によるフィルタリングを一度に実行します。
# z=1.0m~z=2.5mの点を抽出
cli-anything-cloudcompare --project myproject.json cloud sf-filter-z 0 \
-o /data/slice.las --min 1.0 --max 2.5 --add-to-project
# 上限のみ適用
cli-anything-cloudcompare --project myproject.json cloud sf-filter-z 0 \
-o /data/below_5m.las --max 5.0
オプション: -o/--output TEXT (必須), --min FLOAT, --max FLOAT, --add-to-project
cloud sf-to-rgb
アクティブなスカラーフィールドをRGB色に変換します。
cli-anything-cloudcompare --project myproject.json cloud sf-to-rgb 0 \
-o /data/coloured.ply --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
cloud rgb-to-sf
RGB色をスカラーフィールド(輝度値)に変換します。
cli-anything-cloudcompare --project myproject.json cloud rgb-to-sf 0 \
-o /data/luminance.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
cloud curvature
曲率スカラーフィールド(MEANまたはGAUSS)を計算します。
# 半径0.5mでの平均曲率
cli-anything-cloudcompare --project myproject.json cloud curvature 0 \
-o /data/curvature.las --type mean --radius 0.5
# ガウス曲率
cli-anything-cloudcompare --project myproject.json cloud curvature 0 \
-o /data/curvature.las --type gauss --radius 0.5 --add-to-project
オプション: -o/--output TEXT (必須), --type [mean|gauss], -r/--radius FLOAT, --add-to-project
cloud roughness
粗さスカラーフィールド(局所最適平面からの偏差)を計算します。
cli-anything-cloudcompare --project myproject.json cloud roughness 0 \
-o /data/roughness.las --radius 0.2 --add-to-project
オプション: -o/--output TEXT (必須), -r/--radius FLOAT, --add-to-project
cloud density
点密度スカラーフィールドを計算します。
# KNN密度
cli-anything-cloudcompare --project myproject.json cloud density 0 \
-o /data/density.las --type knn --radius 0.5
# 面密度
cli-anything-cloudcompare --project myproject.json cloud density 0 \
-o /data/density.las --type surface --radius 1.0 --add-to-project
オプション: -o/--output TEXT (必須), -r/--radius FLOAT, --type [knn|surface|volume], --add-to-project
cloud segment-cc
点群を連結成分(クラスタ)に分割します。各成分は別ファイルとして保存されます。
# オクトリーレベル8、最小100点で分割
cli-anything-cloudcompare --project myproject.json cloud segment-cc 0 \
-o /data/components/ --octree-level 8 --min-points 100
# PLYファイルとして保存
cli-anything-cloudcompare --project myproject.json cloud segment-cc 0 \
-o /data/components/ --octree-level 6 --min-points 50 --fmt ply
オプション: -o/--output-dir TEXT (必須), --octree-level INTEGER, --min-points INTEGER, --fmt TEXT
cloud merge
プロジェクト内のすべての点群を1つの点群にマージします。
cli-anything-cloudcompare --project myproject.json cloud merge \
-o /data/merged.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
cloud mesh-delaunay
点群から2.5次元ドロネー三角分割メッシュを構築します。
# 基本的なドロネーメッシュ
cli-anything-cloudcompare --project myproject.json cloud mesh-delaunay 0 \
-o /data/surface.obj
# 最適平面+最大辺長制限
cli-anything-cloudcompare --project myproject.json cloud mesh-delaunay 0 \
-o /data/surface.ply --best-fit --max-edge-length 2.0 --add-to-project
オプション: -o/--output TEXT (必須), --best-fit, --max-edge-length FLOAT, --add-to-project
4. mesh — メッシュ操作 (3コマンド)
mesh add
メッシュファイルをプロジェクトに追加します。
cli-anything-cloudcompare --project myproject.json mesh add /data/model.obj
# ラベル付きで追加
cli-anything-cloudcompare --project myproject.json mesh add /data/model.ply -l "building model"
オプション: -l/--label TEXT
mesh list
プロジェクト内のすべてのメッシュを一覧表示します。
cli-anything-cloudcompare --project myproject.json mesh list
# JSON出力
cli-anything-cloudcompare --project myproject.json --json mesh list
mesh sample
メッシュ表面から点群をサンプリングします。
# インデックス0のメッシュから50,000点をサンプリング
cli-anything-cloudcompare --project myproject.json mesh sample 0 \
-o /data/sampled.las -n 50000
# サンプリングした点群をプロジェクトに追加
cli-anything-cloudcompare --project myproject.json mesh sample 0 \
-o /data/sampled.las -n 100000 --add-to-project
オプション: -o/--output TEXT (必須), -n/--num-points INTEGER (必須), --add-to-project
5. distance — 距離計算 (8コマンド)
distance c2c
Cloud-to-Cloud距離(最近傍点間のユークリッド距離)を計算します。
# 参照点群(インデックス0)と比較点群(インデックス1)の距離
cli-anything-cloudcompare --project myproject.json distance c2c 0 1 \
-o /data/distance_c2c.las
# 最大距離を基準に分割
cli-anything-cloudcompare --project myproject.json distance c2c 0 1 \
-o /data/distance_c2c.las --split-xyz --split-max 0.5 --add-to-project
オプション: -o/--output TEXT (必須), --split-xyz, --split-max FLOAT, --split-min FLOAT, --add-to-project
distance c2c-signed
符号付きCloud-to-Cloud距離(参照面に投影)を計算します。
cli-anything-cloudcompare --project myproject.json distance c2c-signed 0 1 \
-o /data/distance_signed.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
distance c2m
Cloud-to-Mesh距離(メッシュ面からの点の符号付き距離)を計算します。
# 点群(インデックス0)とメッシュ(インデックス0)間の距離
cli-anything-cloudcompare --project myproject.json distance c2m 0 0 \
-o /data/distance_c2m.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
distance hausdorff
2つの点群間のハウスドルフ距離を計算します。
cli-anything-cloudcompare --project myproject.json distance hausdorff 0 1
distance m2m
Mesh-to-Mesh距離(メッシュ表面間の距離)を計算します。
# メッシュ0とメッシュ1間の距離
cli-anything-cloudcompare --project myproject.json distance m2m 0 1
distance fit-plane
点群に平面をフィッティングし、各点の平面からの距離を計算します。
cli-anything-cloudcompare --project myproject.json distance fit-plane 0 \
-o /data/plane_fit.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
distance fit-quadric
点群に2次曲面をフィッティングします。
cli-anything-cloudcompare --project myproject.json distance fit-quadric 0 \
-o /data/quadric_fit.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
distance height-function
高さ関数(HF)距離を計算します。
cli-anything-cloudcompare --project myproject.json distance height-function 0 1 \
-o /data/hf_distance.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
6. transform — 変換 (4コマンド)
transform matrix
4x4同次変換行列を点群に適用します。
# 手動で指定した行列で変換
cli-anything-cloudcompare --project myproject.json transform matrix 0 \
--matrix "1 0 0 2.5 0 1 0 1.5 0 0 1 0 0 0 0 1" \
-o /data/translated.las
# ファイルから行列を読み込み
cli-anything-cloudcompare --project myproject.json transform matrix 0 \
--file /data/transform.txt -o /data/transformed.las --add-to-project
オプション: -o/--output TEXT (必須), --matrix TEXT, --file TEXT, --add-to-project
transform icp
反復最近接点(ICP)アルゴリズムで2つの点群を位置合わせします。
# デフォルト設定で位置合わせ
cli-anything-cloudcompare --project myproject.json transform icp 0 1 \
-o /data/aligned.las
# 高精度設定
cli-anything-cloudcompare --project myproject.json transform icp 0 1 \
-o /data/aligned.las \
--min-error 1e-10 --max-iter 100 --sampling-limit 50000 \
--overlap 50 --add-to-project
オプション: -o/--output TEXT (必須), --min-error FLOAT, --max-iter INTEGER, --sampling-limit INTEGER, --overlap FLOAT, --add-to-project
transform icp-single
ICP位置合わせを単一の点群に適用します(通常、前処理されたデータセットに使用)。
cli-anything-cloudcompare --project myproject.json transform icp-single 0 1 \
-o /data/aligned_single.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
transform swap-xy
XとY座標を入れ替えます。
cli-anything-cloudcompare --project myproject.json transform swap-xy 0 \
-o /data/swapped.las --add-to-project
オプション: -o/--output TEXT (必須), --add-to-project
7. export — エクスポート (4コマンド)
export cloud
プロジェクト内の点群をファイルにエクスポートします。
# インデックス0の点群をLASとしてエクスポート
cli-anything-cloudcompare --project myproject.json export cloud 0 \
-o /data/exported.las
# 別の形式でエクスポート
cli-anything-cloudcompare --project myproject.json export cloud 0 \
-o /data/exported.ply
# JSON出力
cli-anything-cloudcompare --project myproject.json --json export cloud 0 \
-o /data/exported.las
オプション: -o/--output TEXT (必須)
export clouds-batch
すべての点群を出力ディレクトリにエクスポートします。
cli-anything-cloudcompare --project myproject.json export clouds-batch \
-o /data/export/
オプション: -o/--output-dir TEXT (必須)
export mesh
特定のメッシュをファイルにエクスポートします。
cli-anything-cloudcompare --project myproject.json export mesh 0 \
-o /data/model_exported.obj
# JSON出力
cli-anything-cloudcompare --project myproject.json --json export mesh 0 \
-o /data/model_exported.obj
オプション: -o/--output TEXT (必須)
export meshes-batch
すべてのメッシュを出力ディレクトリにエクスポートします。
cli-anything-cloudcompare --project myproject.json export meshes-batch \
-o /data/mesh_export/
オプション: -o/--output-dir TEXT (必須)
8. info — 情報 (1コマンド)
info header
点群ファイルのヘッダー情報を表示します(SF名、RGB、分類、総点数など)。
# 指定された点群のヘッダー情報
cli-anything-cloudcompare info header /data/scan.las
# JSON出力(エージェントによる解析に最適)
cli-anything-cloudcompare --json info header /data/scan.las
9. repl — 対話型シェル (1コマンド)
操作の実行中にプロジェクトとリアルタイムで対話できる組み込みREPLを起動します。
cli-anything-cloudcompare --project myproject.json repl
# JSON出力モードで起動
cli-anything-cloudcompare --project myproject.json --json repl
REPL内で利用可能なコマンド:
- REPL内で任意の
cloud、mesh、distance、transform、export、project、sessionサブコマンドを実行できます。 - プロジェクトの状態変更は自動的に追跡されます。
Ctrl+Cで終了、exitまたはquitでREPLを終了します。
対応フォーマット
| カテゴリ | フォーマット |
|---|---|
| 点群 | LAS, LAZ, PLY, PCD, E57, TXT, BIN, SBF, VTK |
| メッシュ | OBJ, STL, OFF, PLY, VTK, FBX, DXF |
| 画像 | PNG, JPG, TIFF, BMP |
例
例1: 基本的な点群処理パイプライン
# 1. 新しいプロジェクトを作成
cli-anything-cloudcompare project new -o tunnel.json -n "Tunnel Scan"
# 2. 点群を追加
cli-anything-cloudcompare --project tunnel.json cloud add /data/tunnel_scan.las -l "raw scan"
# 3. 統計的外れ値除去
cli-anything-cloudcompare --project tunnel.json cloud filter-sor 0 \
-o /data/clean.las --nb-points 12 --std-ratio 2.0 --add-to-project
# 4. 法線を計算
cli-anything-cloudcompare --project tunnel.json cloud normals 0 \
-o /data/with_normals.las --level 6 --add-to-project
# 5. プロジェクトを保存
cli-anything-cloudcompare --project tunnel.json session save
例2: 地面フィルタリングと解析
# プロジェクトを作成
cli-anything-cloudcompare project new -o forest.json -n "Forest Aerial"
# 点群を追加
cli-anything-cloudcompare --project forest.json cloud add /data/aerial.las
# CSFで地面と樹木を分離
cli-anything-cloudcompare --project forest.json cloud filter-csf 0 \
--ground /data/ground.las --offground /data/trees.las \
--scene slope --cloth-resolution 0.5
# 地面の粗さを計算
cli-anything-cloudcompare --project forest.json cloud add /data/ground.las -l "ground"
cli-anything-cloudcompare --project forest.json cloud roughness 0 \
-o /data/ground_roughness.las --radius 0.2 --add-to-project
詳細なドキュメントと使用例については、cli-anything-cloudcompare リポジトリ をご覧ください。