新しい地図配信フォーマット「MPack」の概念実証 (Proof of Concept) プロジェクトです。
English version is here
デモページはこちら: https://code4history.dev/MPack_PoC/
本プロジェクトは、以下の要件を両立する新しいファイルフォーマットの実装と検証を目的としています。
- あらゆるCRSへの対応: Webメルカトルに限定されず、任意の座標参照系 (CRS) を持つタイル地図をサポートすること。
- IIIF/Maplat機能の包摂: 複数画像の格納、単独の画像ファイルとしての互換性維持、そして多彩かつ部分的アクセス可能なメタデータの格納を実現すること。
MPackフォーマットは、標準的な Cloud Optimized GeoTIFF (COG) と DuckDB データベースを結合した構造を持ちます。
- 単一ファイル: ファイル自体は正当な TIFF 画像として振る舞います。一般的な画像ビューアでは通常の画像として認識・表示されます。
- メタデータの埋め込み: ファイル末尾に DuckDB データベースを格納しています。これにより、IIIFマニフェストやMaplat設定のような複雑な構造化データをSQLでクエリ可能です。
- 部分的アクセス: 地図タイルとメタデータの双方が HTTP Range Request を介して利用されます。クライアントは必要な画面範囲のタイルのみを取得し、必要なメタデータのみをクエリするため、ファイル全体をダウンロードする必要がありません。
- Frontend: Vite, TypeScript
- Map Rendering: OpenLayers, geotiff.js
- Metadata: DuckDB-Wasm (埋め込まれたDB部分のクエリ)
pnpm install
pnpm dev注意: vite preview コマンドは Range Request の処理が不完全な場合があるため、動作検証には適さないことがあります。
本フォーマットは HTTP Range Request に依存しているため、ビルド後の確認には対応したサーバー(http-server 等)を使用してください。
pnpm build
npx http-server dist