データを読み込む
対応形式
| 形式 | 拡張子 | 備考 |
|---|---|---|
| COPC 点群 | .copc.laz | 主対象。オクツリーで LOD ストリーミングが効く |
| 生 LAS / LAZ | .las / .laz | 変換不要でそのまま開ける。大きい .las は自動で間引きプレビューになる(下記) |
| 3D Gaussian Splatting | .ply / .spz ほか | 表示のみ。計測・選択・編集の対象外 |
| 参照サーフェス(TIN) | J-LandXML / DXF / SHP / IFC | 設計面を点群に重ねる(下記) |
生 LAS / LAZ をそのまま開く
.las / .laz(COPC ではない、ふつうの点群ファイル)はそのままドラッグ&ドロップ/ ファイル選択/URL 読込できます。変換の手間はありませんが、COPC のようなオクツリーによる 段階ロードは効きません——ヘッダから件数が分かった時点で全点を一度に読み、以後ずっと resident のままになります(LOD で間引かれることも退避されることもありません)。
小〜中規模(2,000 万点まで)はこれで全点が載ります。
大きい .las は自動で間引きプレビューになる
2,000 万点を超える非圧縮 LAS は、確認を求めずそのまま間引きプレビューで開きます。 非圧縮 LAS の点データは固定長レコードが連続しているので、ファイル全体を読まなくても 全域から均等に点を拾えます——実測で 40GB・12 億点のファイルから 200 万点を 68MB の 読み取りで取り出せます(ファイルの 0.17%)。
プレビュー中は画面上部にバッジが出て、実点数と間引き比率が常に見えます。この状態では 計測と所見の起票ができません。間引きは実際の点を拾うので座標そのものは正しいのですが、 目的の点がそもそも読まれていない可能性があり、値が黙って実際とずれるためです。
圧縮 LAZ は間引けません(チャンク単位でしか展開できず、チャンクテーブル自体が圧縮されている ため)。大きい .laz は従来どおり止めて、COPC への変換を案内します。
圧縮(.laz、LASzip 方式)・非圧縮(.las)のどちらにも対応していますが、 現状 v1 の対応点データ形式は 0/1/2/3/6/7/8(追加バイト・波形データは非対応)です。
計測・所見まで使いたい場合や、配布用に軽くしたい場合は、次のとおり COPC に変換すると LOD ストリーミングが効くようになります。
.las を COPC に変換する(LOD ストリーミングが必要な規模の場合)
大きなファイルは PDAL で単一の .copc.laz に変換すると、 オクツリーによる段階ロードが効くようになります。
pdal translate input.las output.copc.laz --writer copc実測(笠戸大橋データ):
| 項目 | 値 |
|---|---|
| 入力 | 約 3.24 GB / 95,169,313 点(Point Format 3 = XYZ + Intensity + GPS + RGB) |
| 出力 | 496 MB(Point Format 7) |
| 所要時間 | 約 3 分(PDAL 2.10.2) |
開く 4 つの経路
ドラッグ&ドロップ。 .copc.laz / .las / .laz を画面に落とします。サーバを介さないので Range の心配も要りません(生 LAS/LAZ はブラウザ内で完結し、サーバへのアップロードもありません)。 複数ファイルを同時に落とす、または Shift を押しながら落とすと、1 シーンに重畳されます。
ファイル選択。 ツールレール 📁 データ →「ファイルを開く」。
URL。 同じパネルの入力欄に URL を入れて「読込」、 または「+追加」で既存のシーンに重ねます(.copc.laz / .las / .laz いずれも可)。
配信側の要件
URL から読む場合、配信サーバは HTTP Range に対応している必要があります。 別オリジンから引くなら CORS で content-range と accept-ranges を Access-Control-Expose-Headers に含めてください。これが無いと、 リクエストは通るのに中身が読めない、という分かりにくい失敗になります。
URL パラメータ。 ?data=<URL> で起動時に読み込みます。 #s=... のハッシュにはカメラと表示設定も入るので、「この視点でこのデータ」を共有できます (データパネルの「共有リンクをコピー」が作るのがこれです)。→ URL パラメータ
複数のレイヤを重ねる
追加読込した点群はレイヤとして並び、個別に表示切替・削除ができます (📁 データ の「レイヤー」)。コマンドからは addData / setSourceVisible / removeSource、 一覧は queryLayers です。
座標系が違うファイルは重ねられません。 判定できた CRS が食い違う場合、追加を拒否して理由を出します。 黙って重ねると、数十 m ずれた 2 つの点群が「そういう形状」に見えてしまうためです。
座標の扱い
平面直角座標系の点群は座標値が数万 m のオーダーになり、float32 のまま GPU に載せると 点が震えます(ジッタ)。oniyanma は COPC ヘッダの cube 中心を固定オフセットとして減算し、 原点付近に正規化してから描画します。
そのため座標には 2 つの系があります。
- 実座標 — 元データの座標 (m)。計測値・カメラ API・所見のピンはすべてこちら
- 整列(シーン)フレーム — 描画用に正規化した座標。
selectBoxの範囲やalignedBoundsはこちら
変換は scene = Rz(-alignYaw) · (real - offset) で、offset と alignYaw は getState().frame と queryCrs から取れます。 詳しくは リファレンス概要。
CRS は記録するだけで再投影はしません。EPSG コードと鉛直基準(標高 / 楕円体高)を queryCrs で確認できるので、 「この 12.4 m は何基準か」を後から言えます。
参照サーフェス(TIN 設計面)
設計面(TIN)を点群に重ねると、差分解析で乖離を色分けできます。 📁 データ の「参照サーフェス」→「読込」、またはコマンド addSurface。点群を先に読み込んでおく必要があります。
| 形式 | 拡張子 | 対応範囲 |
|---|---|---|
| J-LandXML | .xml | <Surfaces><Surface> の TIN 定義 |
| DXF | .dxf | 3DFACE エンティティのみ(Civil3D / 12d 等が TIN を書き出す代表形) |
| Shapefile | .shp | MultiPatch(シェイプタイプ31)の TriangleStrip / TriangleFan のみ |
| IFC | .ifc | web-ifc でジオメトリを解決してから読み込む |
いずれも同じ TIN(三角形メッシュ)に正規化されるので、差分解析・重ね合わせは形式を問わず同じです。 DXF は POLYLINE ポリフェースメッシュ、SHP は PolygonZ / PolylineZ(壁面等の押し出し形状)は 対象外です。IFC は測量座標系である保証が無いため、ズレていないかは目視で確認してください (点群と同じ実座標を前提にしている点は他の形式と同じです)。
LandXML の座標の並びが「北,東」か「東,北」かは案件によって違うので、軸順で切り替えます。 逆にすると設計面が 90 度回った位置に出るので、重ならない時はここを疑ってください (DXF / SHP / IFC は軸順の概念がなく、ファイルの XYZ をそのまま使います)。
既定データの出典
デモで開かれる笠戸大橋の点群は、 「令和3年度県道笠戸島公園線(笠戸大橋)「AIのデータ解析による損傷予測構築」に伴う設計業務委託」 点群3次元モデル(発注者: 山口県土木建築部、受注者: 大日本コンサルタント株式会社、配布: My City Construction)を COPC 形式へ変換したものです。 ライセンスは CC BY 4.0 で、 クレジット・ライセンス・改変した旨の表示が条件です。アプリ側でもデータパネル末尾に出しています。 データを差し替える際は、そちらの表示も一緒に更新してください。