KASUGAI Canvas v6.17.0

データ形式 — 2D/3D データの最適フォーマット、配信・管理

対応データ形式

インスペクターの .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 と 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 は変換 – 正データ保持・変換元

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 図面には向かない

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 等で読み込み

点群の扱い

3D Gaussian Splatting(3DGS)

地形(DEM)の扱い

データパイプライン

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

配信サービス

Re:Earth の位置づけ

データ種別ごとの配信構成

データ種別 配信サービス 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 描画