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) |
✓ | ✓ | ✓ |
- 視点の引き継ぎ:
x,y,scale,rotation,crs(またはlat,lon,zoom、パーマリンク)で指定した表示状態を各エンジンで再現。.kascのcam:行として書き出す - タイル行:
.kascのxyz:/base:/wms:/wmts:行としてタイル参照を引き継ぐ(外部タイルサービスを参照。geo_webview 自身のタイル配信は v3.29.0 で廃止) - ベクターデータ: 表示中レイヤを
DATA/フォルダのファイルとして受け渡す(GPKG/GeoJSON/GeoParquet/FlatGeobuf は変換せずネイティブ参照) - スタイル引き継ぎ: QGIS レンダラを
.qmlファイルとして受け渡し、クライアント側でコンパイル(Cesium の entity/primitive 経路・Re:Earth のトランスレータ) - クエリ系記述:
/kasugaiはソースが許す範囲でクエリ系行を出力する — CSV/TSV(delimitedtext・ogr)はduckdb:(format=/lon=/lat=/geom=)、フィルタ付き GPKG はgpkg:+where=、フィルタ付き Parquet はduckdb:+format=parquet+where=。sql:(任意 SELECT)は QGIS に相当ソースが無いため出力しない。3D Tiles レイヤ(QgsTiledSceneLayer)は3dtiles:、ローカル XYZ テンプレート(file:///…/{z}/{x}/{y}.png)はタイルツリーごとDATA/へ複製。QGIS の WMS ラスタレイヤ(type=xyz以外)はwms:行(layers=/styles=/format=付き)として出力し、Canvas 側が GetMap を 256px タイルへ分解して描画する - 追従モード:
?follow/?present付きで開いた Canvas ページ(Cesium 含む4エンジン。GSI Maps は未対応)は/present/stateをポーリングし、QGIS キャンバスの移動にリアルタイム追従(プレゼン・画面共有用) - 双方向ナビゲーション:
パーマリンク受信(
/received)と External Control により、クライアント→QGIS 方向の視点共有も可能。KASUGAI からの逆方向はqgis-importプラグインが/kasugaiを呼ぶ形(取り込みのみ — Canvas 側の編集結果は QGIS へ戻らない)
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 依存)。
利用経路:
- 【▶ WebView】—
ホスト版エンジン(
stable/<engine>/?kasc=<URL>)で開き、 データは内蔵サーバー:8089/export-data/から供給(via=hosted。 要インターネット・HTTP サーバー稼働) - 出力される
<engine>.html—HOSTED_BASEとしてエクスポート時の チャンネル URL を焼き込み。ローカルにエンジンが無い環境のフォールバック index.html経路3 — ホスト版エンジンへの直リンク一覧
チャンネルはパネルの CDN: コンボ(QSettings
kasugai_hosted_channel)で
切替。stable/unstable のほか、末尾
/ の完全URLを書けば自前 CDN/ホストも
使えます。外部ホスト配信での CDN 利用は WebGIS(外部HTTPサーバーへの配信)
を参照。