3. マルチエンジン

同じ .kasc+DATA/ を5つのエンジンで再生できます(?engine= または 出力される <engine>.html 起動ページで切替):

エンジン 役割
Cesium(既定) 3D 主エンジン。3D Tiles・地形・GeoJSON ドレープ・Fly モード・AI チャット
MapLibre 高速 2D。wms:/wmts: 行・duckdb/sql クエリ・属性 UI・6タブパネル
OpenLayers 2D 汎用。任意 CRS・回転・/present/state 追従(プレゼン)
Leaflet 軽量 2D(OpenLayers の機能サブセット。回転・任意 CRS なし)
GSI Maps 地理院地図ベースの 2D。GSI レイヤカタログ表示・取り込み・ 地理院地図 作図・ベースマップ切替

再生システム本体は KASUGAI Canvas 側で整備されています(マルチエンジン WebGIS。Web 部分は静的配信で動作し、EXE 側が rclone・自動更新・ ファイル保存・.kasc 関連付けを担当)。プラグイン内蔵の生成 HTML ビューア(旧 /qgis-map・/maplibre・/map3d)は v3.24.0 で廃止され、 閲覧は全て KASUGAI Canvas に一本化されました。

KASUGAI Canvas 側のレイアウト(web/):

web/
  index.html      エンジン選択リダイレクト(?engine=cesium|maplibre|openlayers|leaflet|gsimaps、既定 cesium)
  cesium/         Cesium フロント(現行アプリ)
  maplibre/       MapLibre フロント(.kasc プレイヤー実装済み: 全ベクター行・wms:/wmts:・QML・duckdb/sql・属性UI・6タブパネル)
  openlayers/     OpenLayers フロント(同上)
  leaflet/        Leaflet フロント(同上・軽量版)
  gsimaps/        GSI Maps フロント(地理院地図 iframe 連携で .kasc を再生)
  shared/         エンジン非依存コア(.kasc ローダー・デコーダー・i18n・QML コンパイラ)
  projects/       プロジェクトデータ(エンジン非依存)
    projects.json          プロジェクト一覧マニフェスト
    DATA/                  (任意)全プロジェクト共有データ(../DATA/ 参照先)
    <id>/                  プロジェクト(id 単位で複数管理)
      kasugai_canvas.kasc  プロジェクト設定
      DATA/                プロジェクト専用データ

geo_webview が出力する .kasc+DATA/ は projects/<id>/ の1プロジェクトとして配置され、.kasc 行の相対参照は projects/<id>/ を基準に解決されます。

起動ページ(<engine>.html)

起動ページは ?kasc=<この.kascのURL> 付きで対応エンジンへ転送し、 エンジン本体を ./ ../ ../../ / の順に自動探索します(特殊配置は HTML 内の CANVAS_BASE で指定)。

KASUGAI Canvas エンジン比較

KASUGAI Canvas は5エンジン(Cesium / OpenLayers / MapLibre / Leaflet / GSI Maps)構成ですが、ここでは共有コアを持つ4エンジンの 機能比較を示します(GSI Maps は地理院地図を iframe で内包する別系統のエンジンのため本表の対象外。 .kasc+DATA/ の再生自体は可能)。 — = 非対応、△ = 部分的対応。すべてのエンジンが同じ .kasc+DATA/ パッケージを読みます(?engine= または出力される <engine>.html で切替)。Re:Earth geo_suite は別クライアント(kasugai_canvas_*.zip 経由)のため本表の対象外とし、QGIS 側の共通サービスは末尾にまとめています。

データ取り込み・レイヤー形式

機能 Cesium OpenLayers MapLibre Leaflet
.kasc+DATA/ 取り込み ✓(/kasugai 登録 + ?project=) ✓ ✓ ✓
GeoJSON ✓(geojson:) ✓(geojson:/ファイル) ✓(geojson:/ファイル) ✓(geojson:)
GeoPackage ✓(gpkg: Worker・bbox=auto クエリ) ✓(gpkg: sql.js Worker・bbox=auto) ✓(gpkg: sql.js Worker・bbox=auto) △
GeoParquet ✓(geoparquet:) ✓(geoparquet: hyparquet) ✓(geoparquet: hyparquet) △
FlatGeobuf ✓(flatgeobuf:) ✓(flatgeobuf:/fgb:) ✓(flatgeobuf:/fgb:) ✓(fgb:)
CSV/TSV ✓(duckdb:+format=csv・lon=/lat=/geom=) ✓(同左) ✓(同左) △
DuckDB/SQL クエリレイヤー ✓(duckdb:/sql:・:bbox 表示範囲連動) ✓(同左) ✓(同左) —
レイヤフィルタ(subsetString) ✓(gpkg:/duckdb: の where= または GeoJSON 焼き付け) ✓(where=) ✓(where=) △(GeoJSON 焼き付けのみ)
3D Tiles ✓(3dtiles:) △(deck.gl 2.5D 俯瞰) △(deck.gl 2.5D 俯瞰) —(非対応として一覧通知)
XYZ タイル・ベースマップ ✓(xyz:/base:) ✓(xyz:/base: オーバーレイ) ✓(xyz:/base: オーバーレイ) ✓(xyz:/base:)
WMS / WMTS ラスタ ✓(wms:/wmts: — GetMap を 256px タイルへ分解 / {z}/{x}/{y}・KVP GetTile へ正規化) ✓(wms:/wmts: 行) ✓(wms:/wmts: 行を Import パネルで取込) △(xyz: のみ)
QGIS スタイル(.qml) ✓(style=+GPKG 埋め込み layer_styles・entity/primitive 両経路) ✓(クライアント側コンパイル shared/qml-2d.js) ✓(同左) ✓(同左)

※外部 OGC サーバー併用時は、上表の wms:/wmts:/xyz: 行経由で WMS ラスタや外部 /wfs GeoJSON を参照可能(geo_webview 自身の OGC サービスは v3.29.0 で廃止済みのため、外部サーバーが前提)。

レイヤー管理・表示

機能 Cesium OpenLayers MapLibre Leaflet
レイヤー一覧 UI ✓ ✓ ✓ ✓
グループ化(レイヤーツリー継承) ✓ — △ —
表示 on/off ✓ — ✓ —
凡例表示 ✓ — — —
SQL フィルター・対話的再クエリ ✓(⏷フィルター) — — —
描画方式切替(render=entity/primitive) ✓ — — —

検索・属性

機能 Cesium OpenLayers MapLibre Leaflet
住所検索 ✓ — — —
ベクトル検索 ✓ — — —
属性・値一覧 ✓(Attr パネル・全件クエリ) △ △ —
Info 表示 ✓ — — —

ビュー・ナビゲーション

機能 Cesium OpenLayers MapLibre Leaflet
視点の引き継ぎ(cam:) ✓ ✓ ✓ ✓
回転 ✓(heading) ✓ ✓ —
任意 CRS — ✓ — —
マップテーマ ✓(theme:行+レイヤパネル選択) ✓ ✓ —
カメラプリセット・ブックマーク ✓ — ✓ —
Terrain / Shadow ✓ — — —
GeoJSON 3D ドレープ ✓(terrain / 3D Tiles / both) — — —
追従モード(QGIS キャンバス追従) ✓(/present/state) ✓(同左) ✓(同左) ✓(同左)

プレゼン・共有・外部サービス

機能 Cesium OpenLayers MapLibre Leaflet
Fly モード・ルート描画 ✓ — — —
パーマリンク・共有 ✓(buildShareUrl) ✓ ✓ ✓
双方向ナビ(/received・External Control) — ✓ ✓ —
Google 連携 ✓(Google Maps Platform・Photorealistic 3D Tiles) — — —
画面共有プレゼン — ✓(/present・/screenshot) ✓(同左) ✓(同左)

AI・拡張・ローカル連携(アプリレベル。主に Cesium アプリ側の機能)

機能 Cesium OpenLayers MapLibre Leaflet
AI チャット ✓(Gemini function calling・ツール実行共通化) — — —
外部エージェント制御 ✓(/api/command + bridge hub → Copilot/Devin/Antigravity) — — —
MCP データソース ✓(/api/mcp 中継) — — —
プラグイン機構 ✓(PLUGIN/・IndexedDB 草稿・.kasp) — — —
クラウドストレージ(rclone) ✓ — — —
ローカル保存・納品用ローカル化 ✓(/api/files・_local ワークスペース) — — —
外部プロジェクト登録 ✓(.kasc 関連付け・群マニフェスト) ✓(?project= で利用) ✓(同左) ✓(同左)
i18n 8言語 △ △ △

geo_webview が提供する共通サービス

上記エンジン群へ geo_webview が共通して提供する機能です。エンジンごとの差異は「取り込み経路と表現形式」だけで、QGIS 側の提供機能は共通化されています。

共通サービス Cesium OpenLayers MapLibre Leaflet
視点の引き継ぎ(中心・縮尺・回転) ✓(cam:) ✓ ✓ ✓
タイル行(xyz:/base:/wms:/wmts:) ✓ ✓ ✓ △(xyz:/base:)
ベクターデータ(DATA/ ファイル) ✓ ✓ ✓ ✓
QGIS スタイル(.qml) ✓(style=) ✓ ✓ ✓
レイヤ一覧・表示制御 ✓(on/off・グループ) — ✓ —
クエリ系記述(duckdb:/sql:/bbox=auto) —(未出力) — — —
マップテーマ ✓(theme:行) ✓ ✓ —
追従モード(/present/state) ✓ ✓ ✓ ✓
プロジェクト登録・ビュー切替 ✓(/api/projects/register + switchProject) ✓ ✓ ✓

GitHubPages CDN(kasugai-canvas-web)

KASUGAI Canvas エンジンの公開 CDN。 kasugai_canvas 側の web/(Cesium / MapLibre / OpenLayers / Leaflet / GSI Maps + shared コア)を GitHub Pages で stable/(安定版・既定)と unstable/(開発版)の2チャンネル公開し、 channels.json が各チャンネルのバージョンを返します。 エンジンは実質上位互換を維持して更新されます。GSI Maps は vendored 地理院地図(vendor/gsimaps、約75MB)を チャンネルへ同梱して配信します。KASUGAI Canvas 側ではこの vendor をリポジトリ・配布物に同梱しないため、 ローカルで vendor/ が無い環境の gsimaps/ はこの CDN 版へ ?kasc=<ローカル絶対URL> で自動転送されます(他4エンジンが jsdelivr 依存なのと同様、GSI Maps は github.io 依存)。

利用経路:

チャンネルはパネルの CDN: コンボ(QSettings kasugai_hosted_channel)で 切替。stable/unstable のほか、末尾 / の完全URLを書けば自前 CDN/ホストも 使えます。外部ホスト配信での CDN 利用は WebGIS(外部HTTPサーバーへの配信) を参照。