Skip to content

Latest commit

 

History

History
48 lines (30 loc) · 2.35 KB

File metadata and controls

48 lines (30 loc) · 2.35 KB

MPack PoC

新しい地図配信フォーマット「MPack」の概念実証 (Proof of Concept) プロジェクトです。

English version is here

デモページはこちら: https://code4history.dev/MPack_PoC/

概要

本プロジェクトは、以下の要件を両立する新しいファイルフォーマットの実装と検証を目的としています。

  1. あらゆるCRSへの対応: Webメルカトルに限定されず、任意の座標参照系 (CRS) を持つタイル地図をサポートすること。
  2. 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