KASUGAI Canvas v6.17.0

.kasc 設定仕様 — インスペクター設定の完全な書式

📝 インスペクター設定(完全版)

管理(⚙)→ プロジェクト → インスペクター で .kasc 形式を編集・適用します。このページが設定仕様の正本です。ユーザーがテキストエリアに入力したレイヤー・ベースマップ・カメラプリセットを読み込み、CesiumJS Viewer へ反映します。設定の読み込みはブラウザ内で完結し、HTTP 通信は行いません。

設定方法

管理(⚙)→ プロジェクト → インスペクター のテキスト欄に、以下の形式で行ごとに入力し「登録」を押してください。設定行は順不同です。

xyz: OpenStreetMap | https://tile.openstreetmap.org/{z}/{x}/{y}.png
base: 地理院タイル 全国最新写真 | https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg | 出典:国土地理院 | maxZoom=18
base: 地理院タイル 標準地図 | https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png | 出典:国土地理院 | maxZoom=18
3dtiles: 東京都/千代田区(建築物LOD1) | https://example.com/tileset.json | off
geojson: 東京都/行政区域 | https://example.com/行政区域.geojson | on
geoparquet: 全国/施設ポイント | https://example.com/facilities.parquet | on
flatgeobuf: 全国/国ポリゴン | https://example.com/countries.fgb | on
duckdb: 全国/河川(上位100件) | https://example.com/rivers.parquet | on | limit=100
sql: 圏内の施設 | SELECT * FROM 'https://example.com/facilities.parquet' WHERE ST_Intersects(geometry, ST_MakeEnvelope(139.7, 35.6, 139.9, 35.8))
background: #ffffff
title: 春日井市 防災マップ
info: https://example.com/project-info.html
cam: 東京駅|35.653108|139.761449|h=2200.6|p=-30
bookmark: bookmarks.xml
legend: 凡例|https://example.com/legend.png

基本書式

種類:タイトル|URL|出典|オプション名=値|on/off

URLが DATA/... 等の相対パスなら projects/<project>/ 直下(DATA/ は慣例のサブフォルダ)に解決。ローカルサーバーでクラウド接続中は cloud:<パス> で接続中ストレージ(ルートフォルダ基準)のファイルを参照できます(Range 対応)。任意位置の on/off(false 可・大文字小文字不問)で初期表示を指定。

.. はプロジェクトフォルダの1つ上への参照です。例: ../DATA/x.geojson は、通常プロジェクトでは全プロジェクト共有の projects/DATA/、外部プロジェクト(.kasc をダブルクリック登録したもの)では .kasc のあるフォルダと並列の DATA/ に解決されます。プロジェクト群フォルダに projects.json(群マニフェスト)を置くとその上もスコープになり、../../DATA/x でワークスペースルート(複数のプロジェクト群が共有する DATA/)まで参照できます(マニフェストが無い構造では1階層上まで・それより上は拒否)。

設定種類

納品用ローカル化は <プロジェクト名>_local/ ワークスペースを生成します(共有選択が既定)。HTTP(S) データは共有選択時に _local/DATA/http/(複製 .kasc からは ../DATA/http/ 参照)、専用選択時に複製内 DATA/http/ へ出力され、既存のローカル参照は DATA/local/・../DATA/local/ へ書き換えられます。3dtiles: 行のリモート URL は tileset.json から参照ツリーごと DATA/http/3dtiles/ に取得します(ベースマップ相当の Google Photorealistic 等は対象外)。xyz: 行のリモート {z}/{x}/{y} テンプレートはタイル本体を取得せず、ユーザーがタイルを配置する受け皿 DATA/http/xyz/<name>/ を生成して参照を書き換えます(元 URL は http/_sources.json に記録。受け皿内の _README.txt に配置手順を同梱)。ローカルの DATA/.../{z}/{x}/{y}.png 参照はディレクトリごと DATA/local/ へ複製されます。sql: 例 | SELECT * FROM read_csv_auto('../DATA/http/x.csv') のように SQL のファイル参照も相対パスで保存できます。FROM/JOIN 直後や対応する read_csv/read_parquet/read_json/ST_Read 系の第1引数にある DATA/ 相対参照を、描画・属性検索時に現在のプロジェクトから解決します。通常の文字列値は変更しません。

base: ベースマップ(先頭が既定・| off で非初期選択) | maxZoom= / tileSize= / opacity= / proxy=off (タイトルの "グループ/名前" はベースマップ選択で折りたたみ可能なグループとして表示)
base: 表示名 | transparent | (ベースマップ透明=地表透明を初期選択。レイヤーリストには加えず表示モードのみ指定)
base: 表示名 | none | (ベースマップなしを初期選択)
xyz: タイルレイヤ | 同上+off / minZoom=(minimumLevel=) / bbox=西経,南緯,東経,北緯 (URL は DATA/.../{z}/{x}/{y}.png のローカルテンプレートも可)
wms: WMSレイヤ | WMSエンドポイント | off / layers=名前,名前 / styles= / format=image/png / transparent=true / version=1.1.1 / opacity= / maxZoom= / bbox= (GetMap を256pxタイルへ分解してEPSG:3857で要求。追加パラメータはURL側へ ?key=value で記述可)
wmts: WMTSレイヤ | タイルテンプレート or KVPエンドポイント | off / layer= / style= / tilematrixset=EPSG:3857 / format= / matrixprefix= / opacity= ({z}/{x}/{y} または {TileMatrix}/{TileRow}/{TileCol} テンプレートはそのまま利用。それ以外は GetTile KVP クエリを自動構築)
3dtiles: レイヤ | off / proxy=off / ground=off / zoffset=  (URL が tile.googleapis.com なら Maps API キーを自動付与。key= は .kasc に書かない。テレインのない2Dエンジンではバウンディングボリューム最小高を推定して z=0 平面へ自動接地。ground=off で無効化、zoffset= で高さを手動補正)
geojson:(layer:) / geoparquet: / flatgeobuf: レイヤ | off / proxy=off / render=primitive|entity / style=QMLファイルURL / attr=出典(3番目のフィールドに出典を直接書くことも可)
gpkg:(geopackage:) GeoPackageレイヤ | off / table=地物テーブル名 / where=条件(SQLite式) / limit=件数 / columns=列,列 / bbox=auto(表示範囲連動・既定ON) / bbox=off(常時全件描画) / render=primitive|entity / style=QMLファイルURL / attr=出典 (layer_styles のQGIS埋め込みスタイルを自動適用)
duckdb: SQL絞り込みレイヤ | where=条件 / limit=件数 / geom=列 / lon=・lat=列 / format=parquet|csv|json|read / columns=列,列 / covering=xmin,xmax,ymin,ymax / table=地物テーブル名(gpkg) / bbox=auto(表示範囲連動・既定ON)|bbox=off(常時全件描画) / render=primitive|entity(既定entity) / proxy=on(ローカルサーバー経由で取得) / style=QMLファイルURL / attr=出典
sql: 任意SELECT文レイヤ | sql:タイトル|SELECT ... (タイトル後の | 以降はすべてSQL・| 使用可・末尾 | off で非表示・| render=entity で entity 描画・| attr=出典 で出典表示・| style=QML で QGIS スタイル適用・:bbox で表示範囲連動)
default_style: point|line|polygon | スタイル未指定地物の既定スタイル(下記参照。地物側の simplestyle や style=QML が優先)
cam: カメラプリセット | cam:名|緯度|経度|h=高さ|p=ピッチ|d=方位
bookmark: QGISブックマーク | bookmark:XMLファイルURL (QGIS のブックマークエクスポート XML・qgis_bookmarks 形式を読み込み、各ブックマークをカメラプリセットへ展開。geo_webview の /kasugai エクスポートでは bookmarks.xml として自動出力。カメラパネルの「XML保存」「XML読込」ボタンでも同形式でプリセットを出し入れできる)
theme: テーマ名 | 表示するレイヤタイトル[|タイトル…] (QGIS マップテーマ相当の可視性プリセット。`*` で全表示。レイヤーパネル上部のテーマ選択から適用すると各レイヤ行の on/off が書き換わる)
fly_geojson: Flyパス | s=速度 h=高さ p=ピッチ step= loop=true v=基準(camera/center)
info: InfoパネルHTML / legend: 凡例画像 / background: 背景色 / title: アプリ表示名 / yahooAppId: Yahoo検索ID
plugin: プラグインID | key=value | off (plugins.json カタログ・ストレージプラグインをこのプロジェクトで有効化。レイヤーはプロジェクトスコープ)
cloud: クラウド自動接続 | cloud:リモート名|ルートフォルダ(パスorフォルダURL・省略可)|perm=write|drive=K|install=off (ローカルサーバー版のみ・読み込み時に /api/cloud/serve を自動実行・rclone 未導入なら自動インストール・cloud:stop で停止・末尾 | off は接続しない)
  • option には opacity=0.8、maximumLevel=18(または互換 alias maxZoom)、tileSize=256、proxy=off などが使えます。xyz: 行ではさらに minimumLevel=(minZoom)と bbox=西経,南緯,東経,北緯 が使え、bbox を指定すると範囲外へのタイル要求が発生せず flyTo もその範囲を向きます(ローカルタイル配置時の範囲限定に有効)。
  • プロジェクトは projects/<project> 単位で切り替えます。設定ファイル内に project 項目はありません。
  • plugin: は web/plugins.json カタログまたは管理タブのストレージプラグインの ID を指定し、そのプロジェクトでのみプラグインを起動します(例: plugin: reinfolib | datasets=price,shelter)。key=value はプラグインの manifest.options にマージして渡され、真偽値・数値・カンマ区切り(配列)を解釈します。起動したプラグインのレイヤーはプロジェクトスコープになり、プロジェクト切替や行の削除・| off 指定でレイヤー除去+停止(dispose 呼出し)されます。指定できるのはカタログ/ストレージの ID のみで、外部 URL の直接指定はできません。
  • attr=出典・行の3番目フィールドの出典は、< で始めると HTML として描画できます(例: <a href="https://example.jp">国土地理院</a>)。描画時に許可リストでサニタイズされ、a/img/装飾タグ(b・i・em・u・br・span・small・sub・sup)と http(s):/相対 URL のみが有効になります(スクリプト・イベント属性・その他タグは除去)。詳細は セキュリティ対策 を参照してください。
  • title: 表示名 はレイヤーパネル左上のタイトル(既定「KASUGAI Canvas」の部分)とブラウザタブのタイトルを差し替えます。プロジェクト名や納品先名を表示する用途を想定しています。エンジン名の小表記(Cesium 等)は残り、行が無い・空値なら既定表示に戻ります。複数行ある場合は最後の行が採用されます。

ベクターデータ形式の使い分け

ベクター系の行タイプは大きく2系統に分かれます。全件読み込み系(geojson:/geoparquet:/flatgeobuf:)はファイル全件を読み込んで描画し、ベクター検索パネルで属性検索できます(描画件数の上限を超える場合は表示範囲内の地物のみ描画し、カメラ移動で追随)。クエリ系(duckdb:/sql:)は SQL で絞り込み、表示は見えている範囲だけ・検索は常にファイル全件を対象にします。gpkg: も既定で bbox=auto のクエリ系(表示は範囲のみ・検索は ⏷ フィルターや属性一覧で全件対象)として動作します。常時全件を描画したい場合は bbox=off を付けると全件読み込み系(検索パネル対象)に戻ります。

【全件読み込み系】全件読み込み・ベクター検索パネル対象
  小〜中規模・全件表示        → geojson:(事前変換が最速・最単純)
  中規模・Parquet をそのまま  → geoparquet:(利便性重視・変換不要で置くだけ)
  中規模・FlatGeobuf をそのまま → flatgeobuf:(変換不要・ストリームで逐次デコード)
  中規模・QGIS 成果物          → gpkg:(GeoPackage。layer_styles の QGIS スタイルも自動適用)

【クエリ系】SQL 絞り込み・表示範囲のみ描画・検索は常に全件
  大規模・広範囲・絞り込み    → duckdb:/sql:(Parquet の利点が発揮される)
  大規模・QGIS 成果物          → gpkg:(bbox=auto が既定。where= でさらに絞り込み可)

超大規模・全件表示            → タイル化(MVT/PMTiles 等・別経路)

Parquet の利点(圧縮・述語プッシュダウン・row group スキップ・列プルーニング・Range Request)は「読まない部分を作れる」ときにだけ効きます。全件を読んで表示するだけなら、変換済み GeoJSON の方が速くて単純です。geoparquet: は絞り込みを持たず常に全件読み込みなので、広範囲データや条件絞り込みが必要な場合は duckdb:/sql: を使ってください。

読み込みタイミング:全件読み込み系レイヤーは、必要となった初回(表示ON、属性・値一覧やベクター検索パネルでレイヤーを選択した時点)にダウンロード+デコードします。ベクター検索パネルのレイヤー選択肢には未読み込みのレイヤーも「(未読込)」付きで表示され、選択すると読み込み後に索引されて検索できるようになります。「全選択」で文字検索を実行すると、非表示・未読み込みのレイヤーもその時点でまとめて読み込んで検索対象にします。表示中のレイヤーだけを対象にしたい場合は「表示レイヤ」を選択してください。off のレイヤーは起動時に読み込まれません。取得結果はメモリに保持されるため、2回目以降の表示切替・ドレープ変更・属性一覧では再取得せず即座に反映されます(キャッシュはインスペクター/プロジェクト変更で破棄)。クエリ系は条件ごとに結果が変わるため毎回クエリします。

QGIS スタイル(style=):ベクター系レイヤー全般に style=QMLファイルのURL を付けると、QGIS のレイヤースタイルファイル(.qml)を取得して描画に適用します。単一シンボル・属性値による分類(categorizedSymbol)・数値段階(graduatedSymbol)・ルールベース(RuleBased・QGIS 式のサブセットを評価)の各レンダラに対応し、シンプルマーカー/SVG・ラスタ/フォントマーカー、実線・破線、単色塗り・ハッチ/ドット/画像パターン塗り、ラベル(<labeling> のシンプル/ルールベース)を再現します。データ定義プロパティ(式による色・サイズの上書き)や縮尺依存ルール(概算のカメラ距離へ変換)も反映します。式関数 is_layer_visible('レイヤー名') にも対応し、別レイヤーの表示状態を参照した条件付きスタイルが使えます(レイヤー名はタイトル・ID・グループパスで照合、見つからないレイヤーは非表示として扱います)。QGIS で再現困難な要素(ジオメトリジェネレータ・ヒートマップ等)は最も近い表現にフォールバックし、コンソールに警告を出します。render=primitive 経路では色・サイズ・線幅のみ適用(形状・破線・パターンは簡略化)。.kasc プロジェクトと同じ場所に .qml を置けば相対パスでも解決します。

GeoPackage の埋め込みスタイル:gpkg:(または duckdb: で .gpkg ファイル・format=gpkg を指定した場合)は、QGIS の「スタイルを保存 → データベースに保存」で GPKG 内の layer_styles テーブルに書き込まれる QML を自動的に読み取り、useAsDefault のスタイルを描画に適用します。データとスタイルを1ファイルで配布できます。style= を明示した場合はそちらが優先されます。複数の地物テーブルを持つ GPKG は table=テーブル名 で対象を指定できます。GPKG は SQLite として読み込みます。sql.js(SQLite WASM)を Web Worker 内で遅延ロード・実行するため、デコード中も地図の操作をブロックしません。ファイル全体の初回ダウンロードは必要ですが、開いた DB は Worker が保持するため、bbox=auto の表示範囲再クエリ・⏷フィルター変更・属性一覧のクエリは再ダウンロード無しで実行されます。なお sql.js の WASM 本体はランタイム永続キャッシュの対象外(通常のHTTPキャッシュのみ)です。

GeoPackage の埋め込みスタイル:なお default_style: 行で地物の既定スタイルを指定できます(後述の専用節を参照)。

地物の既定スタイル(default_style:)

ベクター系レイヤー(geojson:/geoparquet:/flatgeobuf:/gpkg:/duckdb:/sql:)の地物で、スタイル指定を持たない項目に適用する既定値を、ジオメトリ種別ごとに1行ずつ設定します。配色をプロジェクト単位で調整したいときに使います。地物ごとの優先順位は次のとおりです。

地物の simplestyle プロパティ(marker-color / stroke / fill 等)
    > style= の QML スタイル(レイヤー全体)
    > default_style: 行(この設定)
    > エンジン既定色

地物側にその項目の指定があれば地物側が優先され、default_style: はあくまで「未指定項目の穴埋め」です。style= の QML が適用されたレイヤーには適用されません。設定はプロジェクト(.kasc)スコープで、同じ種別の行を複数書いた場合は後の行が採用されます。

default_style: point   | color=#3388ff | size=48 | symbol= | opacity=1
default_style: line    | color=#ff0000 | width=2 | opacity=0.8
default_style: polygon | fill=#3388ff | fill_opacity=0.3 | stroke=#000000 | stroke_width=1 | stroke_opacity=1
種別キー意味既定
point color=(marker-color=・fill= も可) ポイントの色(Cesium: ピンの色 / 2D: ドットの塗り色)エンジン既定
size=(marker-size= も可) ピンのピクセルサイズ。small(24)/medium(48)/large(64) の名前または数値。2D エンジンでは約1/6のドット半径で描画(48 → 半径8px)48 / 2D は半径5px
symbol=(marker-symbol= も可) Cesium ピンに描く Maki アイコン ID または1文字。2D エンジン・primitive 経路では無視なし(通常のピン)
opacity=不透明度 0〜11
line color=(stroke= も可)線色エンジン既定(Cesium: 黄)
width=(stroke-width= も可)線幅(ピクセル)2 / 2D は 1.5
opacity=(stroke-opacity= も可)不透明度 0〜11
polygon fill=(color= も可)塗り色エンジン既定(Cesium: 黄α0.39)
fill_opacity=(opacity= も可)塗り不透明度 0〜1。省略時はエンジン既定の半透明を維持(アルファ付き色でも指定可)約0.4
stroke=(outline=・line= も可)輪郭色—
stroke_width=(width=・outline_width= も可)輪郭幅(ピクセル)—
stroke_opacity=(outline_opacity= も可)輪郭不透明度 0〜11
  • 色は #rgb・#rrggbb・#rrggbbaa・rgba(...)・色名など CSS 色指定が使えます。不透明度は「色のアルファ × opacity 値」で決まります。ポリゴン塗りだけは不透明色を指定しても既定の半透明を維持します(fill_opacity=1 で不透明にできます)。
  • ポリゴンの輪郭:Cesium 版では stroke=・stroke_width=・stroke_opacity= のいずれかを指定した場合のみ輪郭を描きます(通常は輪郭なし。地物側の stroke プロパティがあればその色が優先)。ドレープ(地形/3D Tiles へのクランプ)時は周線をポリラインで描きます。2D エンジンではポリゴンに常に輪郭があるため、未指定時はエンジン既定の輪郭色が使われます。
  • ポイントの描画差:Cesium(entity 経路)はピン形状で描画し size= はピンの高さ(px)。render=primitive(バッチ描画)と 2D エンジンはドット描画のため約1/6の径に換算します。
  • 地物側の指定との併用:GeoJSON プロパティの marker-color/marker-size/marker-symbol/stroke/stroke-width/stroke-opacity/fill/fill-opacity(simplestyle)が各項目に優先します。例えば default_style: line | color=#ff0000 でも stroke プロパティを持つラインはその色で描かれます。
  • 適用対象:entity・primitive(render=primitive)の両描画経路、および全エンジン(Cesium / MapLibre / OpenLayers / Leaflet)に適用されます。エンジン切替でも同じ .kasc がそのまま使えます。
  • 種別は point/p/marker/dot、line/l/polyline、polygon/poly/area/fill の別名を受け付けます。解釈できない種別の行は無視されます。

使用例:属性を持たない公共測量データを区別したい場合:

default_style: point   | color=#e34a33 | size=32
default_style: line    | color=#636363 | width=1.5
default_style: polygon | fill=#fef0d9 | fill_opacity=0.6 | stroke=#b30000 | stroke_width=1.5
geojson: 公共測量 | DATA/public_survey.geojson

duckdb: / sql:(SQL絞り込みレイヤ)

初回利用時に DuckDB-WASM を CDN から遅延ロードします(Worker 内で実行)。duckdb: は単一ファイルを読み込み、where=/limit= を適用して描画します。sql: はタイトル後の | 以降をすべて SELECT 文として実行します(クエリ内で | 使用可・|| 演算子も可)。末尾オプションとして | off(非表示)・| render=entity|primitive(描画方式)・| attr=出典(右下の出典表示。値に | は含められません)を付けられます。クエリ内の URL は絶対指定が必要です。なおクエリ系レイヤーが非表示の場合は、表示ONまたは属性・値一覧で選択されるまで WASM 自体をロードしません。

ランタイムの永続キャッシュ:DuckDB-WASM のランタイム資産(WASM 本体約33MB・Worker スクリプト・spatial 拡張約22MB・parquet/httpfs 拡張、計約60MB)は cdn.jsdelivr.net と extensions.duckdb.org から取得しますが、Service Worker(sw-duckdb.js=DuckDB-WASM 永続キャッシュ)がこれらの取得を横取りしてブラウザの CacheStorage に永続保存します。そのため実際のダウンロードはバージョンごとに最初の1回だけで、2回目以降の起動・再読み込み・ブラウザ再起動後もキャッシュから即座に読み込まれます(通常のHTTPキャッシュと違い、ブラウザ任せの失効がありません)。キャッシュキーは URL そのまま(@duckdb/duckdb-wasm@1.32.0・拡張 v1.4.3 のようにバージョン入り)のため、DuckDB のバージョンが上がると新しい資産が自動的にダウンロードされ、起動時に旧バージョンのエントリだけが削除されます。Worker 内部のフェッチ(Worker スクリプトの読み込み・拡張 INSTALL の内部取得)も対象で、DuckDB 以外の通信には一切介入しません。Service Worker は HTTPS または localhost でのみ有効で、静的ホスティングでも動作します。ブラウザのサイトデータ削除でキャッシュも消えるため、その場合は次回利用時に再ダウンロードが発生します。詳細は ランタイム永続キャッシュ を参照してください。

対応ファイル形式(format= 指定または拡張子から自動判別):

format=省略        → 拡張子自動判別(.parquet / .csv / .tsv / .json / .fgb 等)
format=parquet     → Parquet / GeoParquet(read_parquet)
format=csv | tsv   → CSV / TSV(read_csv_auto。lon=/lat= 列でポイント化、WKT/WKB 列も可)
format=json|geojson→ JSON / GeoJSON テキスト(read_json_auto。FeatureCollection は format=read 推奨)
format=read        → Shapefile / FlatGeobuf(.fgb) 等(ST_Read。spatial 拡張必須・非 COI 環境・リモート URL では動作しません。*.fgb は拡張子からも自動判別されます。GeoPackage は gpkg:/sql.js 経路へ自動振り分け)

Parquet では述語プッシュダウン・row group スキップ・列プルーニングが効くため本機能の本来の対象です。それ以外の形式は全件読み込みになりますが、「絞り込んだ分だけ描画オブジェクトを作る」「事前変換不要」「SQL で加工できる」利点は共通です。

ジオメトリ列は GEOMETRY 型 → geometry/geom/wkb 等の慣用名 → BLOB 列の順に自動検出し、geom= で明示も可能です(WKB・WKT・GeoJSON テキストを受理)。緯度経度列のみのデータは lon=/lat= でポイント化できます。format=read は spatial 拡張の ST_Read(Shapefile・FlatGeobuf 等)を使いますが、非 COI 環境ではスレッド生成に失敗しリモート URL も読めないため、通常の配信環境では利用できません。なお where= の値には | を含められません(条件が複雑な場合は sql: を使用)。

取得プロキシ(proxy=on・ローカルサーバー版のみ):duckdb: に proxy=on を付けると、ファイルの取得をローカルサーバーの /api/fetch 経由に切り替えます。CORS 非対応の外部サーバーにあるデータを読めます。/api/fetch は Range/HEAD リクエストを転送するため、Parquet の部分読み(メタデータ・row group スキップ)はプロキシ経由でも有効です。既定は直接接続で、静的配信環境やバックエンド非対応時は指定しても直接接続になります。sql: のクエリ内 URL には適用されません。Range 非対応のサーバーへ全件 GET が必要な形式(CSV/JSON 等)では 20MB 上限があります。

表示範囲連動フィルター:duckdb: と gpkg: は既定で bbox=auto が有効で、カメラ停止ごとに表示範囲で再クエリします(duckdb: は ST_Intersects(geometry, ST_MakeEnvelope(...)) または covering bbox 列への範囲述語、gpkg: は各行の GPkgBinary エンベロープで判定)。sql: はクエリ内に :bbox プレースホルダを書くと同様に範囲連動します(例:WHERE ST_Intersects(geometry, :bbox)。WKB(BLOB)列の場合は ST_GeomFromWKB(geometry) でキャスト)。巨大データを「見ている範囲だけ読む」運用が標準動作です。常時全件描画にしたいレイヤーは bbox=off を付けます(範囲外に出ても地物が消えません)。ST_Intersects の精密判定には spatial 拡張が必要ですが、covering bbox 列があるデータは拡張無しでも近似フィルターとして動作します。

ベクター描画件数の上限(描画は表示範囲・属性は全件):表示 → ドレープ の「ベクター描画件数の上限」(既定 20000、0・空欄=無制限)で、entity 描画するベクターレイヤーの合計描画件数を制限します。大量の entity 生成によるブラウザのフリーズを防ぐ安全弁で、上限を超えたレイヤーはレイヤー一覧に 描画数/全件数 のバッジが付きます。上限を超えた全件読み込み系レイヤーは「ファイル先頭から」ではなく表示範囲内の地物を優先して描画し、カメラを動かすたびにメモリ上の全件データから範囲内の地物を選び直します(再ダウンロード無し)。検索結果や属性一覧から未描画の地物へ飛んでも、その場所で描画が復活します。表示範囲外にデータがある間は 0/全件数 のバッジでデータが残っていることが分かります。切り捨ては描画だけの制限で、ベクター検索・属性一覧・プラグイン API の getLayerGeoJson は常にファイル全件を対象にします。render=primitive のバッチ描画は entity コストを支払わないため上限の対象外です。

フィルター UI:レイヤー一覧の ⏷ ボタンから、duckdb: は WHERE 条件式、sql: はクエリ全文を対話的に変更して再読み込みできます。変更は inspector の .kasc テキストにも反映されます。

描画方式(既定は entity 描画):ベクター系レイヤー(geojson:/layer:/geoparquet:/flatgeobuf:/gpkg:/duckdb:/sql:)は既定で GeoJsonDataSource の entity 描画を使い、地形・3D Tiles へのドレープ(クランプ)に対応します。render=primitive(sql: はクエリ末尾 | render=primitive、その他はオプション欄)を付けると CesiumJS の GeoJsonPrimitive バッチ描画に切り替わります。レイヤー行の render= 指定は表示 → ドレープ の「ベクター高速ドレープ」より優先され、render=entity を書くと高速ドレープが有効でもそのレイヤーだけ entity 描画に戻せます。違いは以下のとおりです。

【entity(既定)】1地物ごとに Cesium Entity を生成
  ・地形/3D Tiles にドレープ可能(clampToGround)
  ・フォーカス・属性パネル等の entity 機能がすべて使える
  ・地物数が多いと生成コストが重い

【primitive(render=primitive)】GeoJsonPrimitive バッチ描画
  ・entity を作らずジオメトリだけをまとめて描画するため大量地物でも軽い
  ・地形ドレープ非対応(高さ0の楕円体面に描画。起伏のある地形では地表に埋まる)
  ・属性はクリック時に picked.properties から表示。ベクター検索の索引対象(描画に使った GeoJSON から索引を構築)

検索は常に全件対象:duckdb:/sql: の検索・絞り込みは ⏷ の SQL フィルターに一本化しており、常にファイル全件を対象に評価します(読み込み済み地物を対象にするベクター検索パネルには登録されません)。bbox=auto と where= を併用した場合、表示は「検索条件 ∩ 表示範囲」になりますが、検索自体は全件に対して行われ、コンソールに「検索ヒット全 N 件 / 表示範囲内 M 件」と併記されます。

属性値一覧:属性値一覧ウィジェットのレイヤー選択には duckdb:/sql: を含む全ベクターレイヤーが表示されます。選択肢はレイヤー定義から即座に作られるため、データの読み込み完了を待たず起動直後から選択可能です。一覧は読み込み済み地物ではなく DuckDB へ直接クエリして作られ、where= は適用する一方 bbox/limit= は適用せず LIMIT 無しの全件を取得します。ウィジェット内の検索文字は全属性列への ILIKE 述語として SQL に変換されるため、常にファイル全件が検索対象です(表への描画は先頭1000行まで)。

Parquet 最適化:クエリ結果のジオメトリは WKB バイナリで受け取ります(テキスト変換を省き転送量・パース時間・ピークメモリを削減)。columns=列名,列名 で読み込む属性列を絞る列プルーニングが可能です。bbox=auto 時は GeoParquet 1.1 の covering bbox 列(または慣用名の xmin/xmax/ymin/ymax 列、covering= で明示指定も可)への範囲述語を優先的に使うため、Parquet の row group 統計スキップが効き、表示範囲外のデータは読み込み自体を省略できます。

Fly モードの経路設定(fly_geojson:)

fly_geojson: では、GeoJSON の LineString / MultiLineString を読み込み、Fly モードで自動飛行する経路として使えます。複数定義すれば Fly パネルのドロップダウンから選択でき、手動 を選ぶと従来の WASD / マウス操作に戻ります。

fly_geojson: ルートA | https://example.com/route.geojson | speed=60 | height=100 | pitch=-15 | loop=true
fly_geojson: ルートB | https://example.com/routeB.geojson | speed=30 | height=50

URL には外部 URL・プロジェクト相対パスのほか、route:<ルート名> でブラウザ IndexedDB に保存した描画ルートも指定できます(例:fly_geojson: 描いたルート | route:drawn_route_20260918_153000)。IndexedDB はブラウザごとの領域のため、他環境と共有したい場合は GeoJSON を実ファイル化して URL で参照してください。

オプション 意味 デフォルト
speed(s) 地上速度(km/h) 30
height(h) 操作中の高さ補正(m) 0
pitch(p) カメラピッチ(度) -10
step 互換性のため受け付けるが、現在は頂点間を直接移行するため無視 (不使用)
loop(l) 終点で最初に戻してループ false
view(v) ルート座標の基準。camera=カメラ位置(カメラがルート上を飛行)、center=画面中心(ルート点が画面中心に来るよう後方・上空から追従) camera
off 選択肢に表示しない -

fly_geojson: の GeoJSON ルートは LineString / MultiLineString のオリジナル頂点をそのまま使用します。各頂点の z はその点の AGL(地形からの高さ) として解釈します。飛行時の実際の高さは GeoJSON z + 地形高 + flyHeight として計算します。flyHeight は操作中の補正値であり、GeoJSON には含まれません。セグメント内では始点・終点の 3D 位置と地形高を距離に応じて補間します。

グループ化ルール

/・\=通常グループ(一括ON/OFF)、//・\\=排他グループ(同時に1つだけ表示・ラジオ動作)。全グループの初期表示は折りたたみです。

未対応の記法(注意)

Re:Earth GeoSuite 由来の以下の記法は本アプリでは未実装です:layer: によるシステムレイヤ制御、max=/zoom=(maxZoom= を使用)、行単位ドレープ(| terrain 等→表示 → ドレープ のグローバル設定を使用)、attrUrlOpen:、\ による初期展開。

ローカルファイルの追加(デモ用データ・Chromium系)

  1. Inspectorタブ「フォルダを選択」で DATA/ を指定(File System Access API・変更可・IndexedDB保持)
  2. ファイル選択 → 「DATA/ に保存して追加」 で書き込み+設定追記+登録まで一括
  3. 「設定行のみ追加」は追記のみ(手動コピー用)、「今すぐプレビュー」は一時表示
  4. 保存したDATA/ファイルは .kasc と共に配布すればデモサイト化できます