対応データ形式
インスペクターの .kasc 設定で行タイプとして指定できるデータ形式の一覧です。ベクター系は 全件読み込み系(全件読み込み・ベクター検索対象)と クエリ系(SQL 絞り込み・表示範囲のみ描画・検索は常に全件)の2系統に分かれます。共通の設計方針は「描画は表示範囲・属性は全件」で、描画件数の上限(フリーズ防止の安全弁)による切り捨ても描画のみに適用され、検索・属性一覧・API は常に全件を対象にします。CesiumJS ネイティブ非対応の形式は、ブラウザ側で GeoJSON に正規化して描画するため、レイヤ一覧・表示切替・属性検索・属性パネルがそのまま使えます。
ネイティブ・タイル系
🗺️ XYZ タイル 対応
xyz: / base: で指定するラスタタイル。{z}/{x}/{y} 形式のタイル画像を重ね合わせ・ドレープ表示
🏙️ 3D Tiles 対応
3dtiles: で tileset.json を指定。PLATEAU 建築物・点群など大規模3Dデータをストリーミング表示
🧩 MVT / PMTiles 検討中
ベクタータイル。数十万地物級の全件表示・LOD が必要な大規模データ向けの別経路として検討
ベクター:全件読み込み系
ファイル全件を読み込んで描画する経路です(既定は entity 化・render=primitive でバッチ描画も可)。読み込みは必要となった初回(表示ON、属性・値一覧やベクター検索パネルでの選択時)に行い、結果はメモリに保持して2回目以降の表示切替・属性一覧・検索では再取得しません。off のレイヤーは起動時にダウンロードされません。描画件数の上限(表示 → ドレープ・既定 20000)を超えるレイヤーは表示範囲内の地物のみを描画し、カメラ移動で範囲内の地物に追随します(切り捨ては描画のみで、検索・属性一覧は常に全件対象)。
📍 GeoJSON 対応
geojson: / layer: で指定。ベクトル検索・属性一覧・ドレープに対応したベクターデータの基本形式。小〜中規模・全件表示はこれが最速
📦 GeoParquet 対応
geoparquet: で指定。列指向バイナリ形式を hyparquet でデコードし GeoJSON へ正規化。常に全件読み込みのため中規模まで。「Parquet をそのまま置くだけで表示」の利便性重視の経路
🧭 FlatGeobuf 対応
flatgeobuf: で指定。空間インデックス内蔵のバイナリ形式を公式 JS リーダー(CDN・遅延ロード)でストリームデコードし GeoJSON へ正規化。全件読み込み系の経路だが、全件バッファリングせず逐次変換する(SQL 絞り込み経路は下のクエリ系カードを参照)
ベクター:クエリ系(DuckDB SQL)
duckdb: / sql: で指定するクエリ経路です。DuckDB-WASM(CDN から遅延ロード)が SQL で絞り込んでから GeoJSON へ正規化して描画します。表示は見えている範囲のみ・検索は常に全件。spatial 拡張により空間述語・WKT・ST_Read も利用可能です。ランタイム資産(約60MB)は Service Worker がブラウザ内に永続キャッシュするため、重いダウンロードはバージョンごとの初回のみで、以後はキャッシュから読み込まれます(詳細は ランタイム永続キャッシュ)。対応するファイル形式は以下のとおりです。
📦 Parquet / GeoParquet 対応
duckdb: で指定(format=parquet・既定)。where=/bbox=auto/columns= の絞り込みで述語プッシュダウン・row group スキップ・列プルーニングが効くクエリ系の本来の対象。大規模・広範囲データ向け
📄 CSV / TSV 対応
duckdb: の lon=/lat= 指定で緯度・経度列を持つ表データをポイントとして表示(lon/lat/lng/longitude/latitude 列は自動検出)
📋 JSON / GeoJSON 対応
duckdb: の format=json(read_json_auto)でテーブルとしてクエリ可能。FeatureCollection の構造は format=read(ST_Read・spatial 拡張必須)向け
🗂️ GeoPackage 対応
gpkg:(または duckdb: の拡張子判別・format=gpkg)で読み込み。sql.js(SQLite WASM)を Web Worker で実行するためデコード中も地図操作をブロックしません。table= で複数地物テーブルを選択可。where=/limit=/columns=/bbox=auto(表示範囲連動・既定 ON)の絞り込みにも対応。QGIS が埋め込む layer_styles のスタイル(QML)も自動適用
🧭 FlatGeobuf / 📐 Shapefile 対応中
duckdb:/sql: の ST_Read(format=read・spatial 拡張必須)で読み込み可能。.fgb は拡張子からも自動判別されます。ただし ST_Read は非 COI 環境(通常の静的ホスティング・ローカルサーバー)でスレッド生成に失敗しリモート URL も読めないため、現状の実行環境では実質利用できません。FlatGeobuf は全件読み込みの flatgeobuf: 経路(実装済み)を推奨
方針の詳細(経路分類・新形式の追加手順)はリポジトリの AGENTS.md「データ形式方針」を参照してください。
KASUGAI Canvas で扱えるデータ形式一覧
直接描画可能なデータ形式
| 分類 | 形式 | 描画方法 | 備考 |
|---|---|---|---|
| 2D ベクトル | GeoParquet / FlatGeobuf | geoparquet: / flatgeobuf: →
GeoJSON 正規化 → GeoJsonDataSource |
ブラウザ内デコード(hyparquet / flatgeobuf
公式リーダー)で変換不要。duckdb:/sql:
なら SQL 絞り込みも可 |
| 2D ベクトル | GeoJSON(小〜中規模) | geojson: → CesiumJS
GeoJsonDataSource |
大容量時は GeoParquet/FlatGeobuf または
duckdb:/sql: クエリ経路を推奨 |
| 2D タイル | XYZ / WMTS / TMS | CesiumJS ImageryLayer(地形・3D Tiles
にドレープ) |
広域地図・航空写真。MVT は現行未実装(将来候補) |
| 3D モデル | GLB / glTF 2.0 | CesiumJS Model / Three.js
GLTFLoader |
建機・構造物 |
| 3D タイル | 3D Tiles 1.1 (GLB 内包) | 3dtiles: → CesiumJS
Cesium3DTileset |
PLATEAU・Google Photorealistic 等。LOD・ストリーミング対応 |
| 点群 | 3D Tiles 点群 (pnts / 1.1 glTF) | Cesium3DTileset / Three.js
Points |
大規模点群向け。LAS/LAZ・EPT は変換が必要 |
| 3DGS | PLY / SPZ / .splat / .ksplat / .sog | Three.js 系専用レンダラー | gaussian-splats-3d 等。CesiumJS
とカメラ同期(オーバーレイ canvas) |
| DEM / 地形 | 標高PNG (XYZ) / Cesium Terrain | CesiumJS TerrainProvider |
地理院標高PNG は独自デコーダー
(GsiDemTerrainProvider)実装済み |
パイプライン(変換)が必要なデータ形式
| 分類 | 形式 | 変換先 | 備考 |
|---|---|---|---|
| 2D ベクトル | GPKG (GeoPackage) | gpkg: / duckdb:(.gpkg)で直接読込 /
GeoParquet・FlatGeobuf |
SQLite + WKB。sql.js(Web Worker)経路でブラウザ内読込実装済み。大規模は変換推奨 |
| 2D ベクトル | FGDB (File Geodatabase) | GeoParquet / FlatGeobuf / GeoJSON | プロプライエタリ。ogr2ogr 等で変換 |
| 2D ベクトル | GeoJSON(大規模) | GeoParquet / FlatGeobuf | 列指向・空間インデックスで読み込み効率化 |
| 点群 | PLY / LAS / LAZ | EPT / 3D Tiles / PointCloud バッファ | ブラウザ内 or 事前変換 |
| DEM / 地形 | GeoTIFF / CSV 等 | 標高PNG / GLB / 3D Tiles | Web Worker またはサーバー側で変換 |
- 直接描画可能:CesiumJS
ネイティブ形式、または
vectorDecodersレジストリのデコーダーで GeoJSON へ正規化して既存のベクター描画経路(GeoJsonDataSource/GeoJsonPrimitive)に流す - 要専用レンダラー:Three.js
系の専用ライブラリが必要。CesiumJS とはカメラ同期(オーバーレイ
canvas +
postRender)のみ - パイプライン(変換)が必要:ブラウザ内 Web Worker または事前変換が必要。GPKG/FGDB は Single Source of Truth として管理・変換元に使用
CesiumJS と Three.js の担当分け
| データ | 主担当エンジン | 補完エンジン | 用途 |
|---|---|---|---|
| 2D ベクトル (GeoJSON / GeoParquet / FlatGeobuf) | CesiumJS
(GeoJsonDataSource /
GeoJsonPrimitive) |
duckdb: / sql:(SQL 絞り込み) |
図面・境界・大容量 2D |
| 2D タイル (XYZ / WMTS) | CesiumJS (ImageryLayer) |
– | 広域地図・航空写真(地形ドレープ可) |
| GLB / 3D Tiles | CesiumJS (Model /
Cesium3DTileset) |
Three.js (GLTFLoader) |
建機・構造物・都市モデル |
| 点群 (PLY / LAS / EPT) | CesiumJS (Cesium3DTileset
pnts) |
Three.js (Points / Potree) |
測量・LiDAR 点群 |
| 3DGS (PLY / SPZ / Splat) | Three.js 専用レンダラー | CesiumJS (カメラ同期) | 写真測量・ニューラル表現 |
| 管理データ (GPKG / FGDB) | GPKG は gpkg:(sql.js Web Worker)で直接読込、
FGDB は変換 |
– | 正データ保持・変換元 |
- CesiumJS:グローブ・地形・3D Tiles・ベクター・イメージリを同一 Scene / 深度バッファで描画
- Three.js:点群・3DGS・高度な GLB
表現を補完。別 canvas を重ね、
postRenderで CesiumJS のカメラ行列を同期させる
2D データ
2D データ整理
| 用途・データ領域 | 最適フォーマット | 評価 | 強み | 弱み・注意点 |
|---|---|---|---|---|
| 数千〜数万件の 2D図面・境界 | GeoParquet / FlatGeobuf | 🏆 最推奨 | 列指向バイナリ・空間インデックス。geoparquet:
/ flatgeobuf: でブラウザ内デコードし GeoJSON
正規化。変換不要で置くだけ |
全件読み込みのため超大規模は向かない |
| 大規模・条件絞り込み・表示範囲連動 | GeoParquet + duckdb: /
sql: |
🏆 大規模向け | 述語プッシュダウン・row group スキップ・列プルーニング・bbox=auto
で「見ている範囲だけ読む」。検索は常に全件 |
DuckDB-WASM の初期ロードが重い(SW キャッシュで緩和) |
| 広域・大量の全国地図・航空写真 | XYZ / WMTS(MVT は将来候補) | 🥈 | GIS/Web 標準。ImageryLayer で地形ドレープ可 |
MVT ベクタータイルは現行未実装 |
| 管理・連携用の正データ | GPKG (GeoPackage) | ✅ 管理用 | Single Source of Truth。属性・トポロジ保持に優秀。gpkg:
/ duckdb:(sql.js Worker 経路)で直接読込も可 |
大規模データは描画用形式への変換を推奨 |
| Esri 資産の管理・連携 | FGDB (File Geodatabase) | ✅ 管理用 | Esri ツールとの互換。フィーチャクラス・ドメイン・関係対応 | プロプライエタリ。ブラウザ直接描画不可。変換が必要 |
| 2D 図面への GLB 使用 | — | ❌ | 3D メッシュ向け | 属性・トポロジが弱く、2D 図面には向かない |
- KASUGAI Canvas 描画層:GPKG は
gpkg:(sql.js Web Worker)で直接読み込むか GeoParquet/FlatGeobuf へ変換、FGDB は ogr2ogr 等のサーバー or 事前変換で GeoParquet / FlatGeobuf / GeoJSON に変換し、GeoJSON 正規化経路(GeoJsonDataSource/GeoJsonPrimitive)へ流す
3D データ
3D データ整理
| 用途・データ領域 | 最適フォーマット | 評価 | 強み | 注意点 |
|---|---|---|---|---|
| 単体オブジェクト(建機・構造物) | GLB (glTF 2.0) | 🏆 最推奨 | 3D モデルの「3D 版 JPEG/PNG」。1 ファイルで完結 | – |
| 広域・大容量(都市モデル) | 3D Tiles 1.1(GLB 内包) | 🏆 最推奨 | タイル化・LOD 制御でストリーミング | 1.1 から glTF 2.0 / GLB ペイロードを直接利用可能 |
| 点群(測量・LiDAR 生データ) | LAS/LAZ / PLY / EPT | 🥈 | 測量標準。EPT は大規模点群を階層タイル化 | そのままの描画には変換・ローダーが必要 |
| 画像からのニューラル表現 | 3DGS (PLY / SPZ / Splat) | 🥈 | 写真起点の高品質ビジュアル。SPZ は PLY 比 10x 圧縮 | PLY は未圧縮で大容量。描画には専用レンダラーが必要 |
KASUGAI Canvas への読み込み方
| データ | 描画エンジン | ロード方法 |
|---|---|---|
| GLB / 3D Tiles | CesiumJS (Model /
Cesium3DTileset) または Three.js
(GLTFLoader / 3DTilesRenderer) |
3dtiles: 行で URL 指定。LOD・ストリーミングは
CesiumJS が管理 |
| 点群 (PLY / LAS) | CesiumJS (Cesium3DTileset
pnts) または
Three.js (Points / Potree) |
PLY/LAZ → 3D Tiles 変換 → 3dtiles: で読み込み |
| 3DGS (PLY / SPZ) | Three.js 専用レンダラー | gaussian-splats-3d / SuperSplat 等で読み込み |
点群の扱い
- LAS/LAZ:測量・LiDAR での標準。LAZ は圧縮形式
- PLY:簡易入出力用。点位置 + RGB のみの軽量点群も可能
- EPT (Entwine Point Tile) / Potree 形式:ブラウザ向け大規模点群配信。八分木階層で LOD 制御
- 大量点群は EPT や 3D Tiles 点群(pnts
/ 1.1 glTF) に変換して
Cesium3DTileset/Three.jsで描画すると安定
3D Gaussian Splatting(3DGS)
- 3D 空間上の多数のガウス分布でシーンを表現するニューラル描画手法
- 主要フォーマット
- PLY:学習済みモデルのデファクト標準。各ガウスに位置・スケール・回転・不透明度・球面調和係数を保持
- SPZ:Niantic 公開の圧縮形式。PLY と比べて約 10 倍小さく、Web 配信に適している
- .splat / .ksplat / .sog:各ビューアー向けの圧縮・最適化形式
- KASUGAI Canvas では Three.js
側で専用レンダラーを使い、オーバーレイ canvas +
postRenderで CesiumJS とカメラ同期を行う
地形(DEM)の扱い
- CesiumJS
TerrainProvider:KASUGAI Canvas は独自実装のGsiDemTerrainProvider(HeightmapTerrainDataを返す)で地理院標高PNG (XYZ) を直接地形化する。国土地理院標高タイルは RGB → 標高値(x = 2^16R + 2^8G + B、u は標高分解能 0.01m)かつ符号付き・条件分岐形式(x < 2^23のときh = xu、x = 2^23のとき NA、x > 2^23のときh = (x - 2^24)u)だが、この変換はgsiDecodeHeightとして実装済み。表示 → 地形 タブで Re:Earth Terrain(楕円体高 / 標高)・地理院 5m+10m・地理院 1m を切替可能 - Three.js:DEM 画像から
PlaneGeometry+ displacement map / 頂点シェーダーで terrain メッシュを生成する代替経路(オーバーレイ canvas 上) - PLATEAU 3D Tiles:3D
都市モデル(建物・地形等)を LOD 付きで配信しているので
3dtiles:行 →Cesium3DTilesetでそのまま表示 - 生の DEM(GeoTIFF / CSV 等)は、Web Worker またはサーバー側で 標高PNG / GLB / 3D Tiles に変換してから描画
データパイプライン
KASUGAI Canvas へのデータは、以下のパイプラインを経て描画層に届く。
現場データ(GPKG / FGDB / GeoJSON / GLB / LAS / PLY / SPZ)
↓
① 変換
ブラウザ内(Web Worker / WASM): DuckDB-WASM / hyparquet / flatgeobuf
サーバー or 事前変換: ogr2ogr / Potree Converter / entwine
↓
② 描画用フォーマット
GeoJSON / GeoParquet / FlatGeobuf / XYZ / 3D Tiles / GLB
↓
③ 配信・キャッシュ
OPFS / IndexedDB / S3 / MinIO / CDN
↓
④ 描画
CesiumJS(GeoJsonDataSource / GeoJsonPrimitive / ImageryLayer /
Cesium3DTileset / TerrainProvider)+ Three.js(オーバーレイ)
| 段階 | 役割 | 対象データ・技術 |
|---|---|---|
| 入力 | 正データ・管理データの保持 | GPKG、FGDB、Re:Earth(属性・プロジェクト管理) |
| 変換 | ブラウザ内 or 事前変換 | 2D 図面 → GeoParquet/FlatGeobuf、点群 → EPT/3D Tiles、3DGS → SPZ |
| 配信 | タイル・バイナリの配信 | S3/MinIO、CDN、Martin、Tegola |
| 描画 | GPU 描画 | CesiumJS GeoJsonDataSource /
GeoJsonPrimitive / ImageryLayer /
Cesium3DTileset、Three.js |
- 点群・3DGS・生 DEM は ブラウザ内で変換するのではなく、事前に 3D Tiles / EPT / SPZ へ変換 しておくのが現実的
- GPKG は
gpkg:/duckdb:(.gpkg)で sql.js Web Worker 経由の直接読み込み か事前変換、FGDB は ogr2ogr 等のサーバー or 事前変換で GeoParquet / FlatGeobuf / GeoJSON に変換し、GeoJSON 正規化経路へ流す - 変換済みデータは OPFS や IndexedDB にキャッシュし、次回起動時の読み込みを短縮する
配信サービス
Re:Earth の位置づけ
- メイン:属性・プロジェクト管理・検索API
- オープンソース・セルフホスト可能(ローカル/オンプレ対応)
- PLATEAU / GIS データの管理・メタデータ付与に強い
データ種別ごとの配信構成
| データ種別 | 配信サービス | Re:Earth の役割 |
|---|---|---|
| 属性・プロジェクト管理 | Re:Earth | メインデータ管理 |
| 2D ベクター (GeoParquet / FlatGeobuf / GeoJSON) | Re:Earth or S3互換 | アセット保存 |
| 広域 3D Tiles / 点群 / 3DGS | S3/MinIO + CDN | URL参照 |
| 2D MVT / 地理院タイル | Martin / Tegola | 外部API連携 |
ハイブリッド配信フロー
データ入力/管理
├── 現場メタデータ ──> Re:Earth
├── 2D図面(.parquet/.fgb) ──> Re:Earth / S3
├── 3D Tiles/点群 ───> S3/MinIO
└── 3DGS (.ply/.spz) ──> S3/MinIO
↓ (URL/API)
KASUGAI Canvas (CesiumJS + Three.js)
↓
ブラウザ内デコード → GeoJSON 正規化 → GPU 描画