-
-
Notifications
You must be signed in to change notification settings - Fork 3
Concepts.ja
MaplatTin の背景と理論: TIN 変換・同相写像・strict/loose モード・ Maplat エコシステムとの関係。
- MaplatTin が提供するもの
- TIN ベースの同相変換
- strict と loose モード
- エッジ制約
- 頂点モード(plain / birdeye)
- Y 軸モード
- MaplatCore / MaplatTransform との関係
- 関連項目
MaplatTin は Maplat ビューアの 中核である座標変換を実装したスタンドアロン JavaScript ライブラリです。 制御点(GCP)と境界を受け取り、Triangulated Irregular Network(TIN)を構築し、 2つの平面座標系間の双方向変換を生成します。
MaplatTin は OpenLayers に依存しません。そのため純粋な Node.js での オフライン前処理(例: MaplatTransform パイプラインの一部)にも、ブラウザでも動作します。
MaplatTin の定義的特性は、変換が以下を満たすことです:
- 非線形 — 各三角形が独自のアフィン写像を持ち、全体として滑らかに 曲げられる変換となります。
- 同相 — 変換は連続かつ連続な逆写像を持ち、元の画像の位相が保存 されます。折り返しや引き裂きは発生しません。
- 双方向・全単射(strict モード時)— ソース平面上の各点はターゲット平面上の 唯一の点へ、その逆も同様に写像されます。
これが Maplat が古地図を正確な現代地図へ元の画像を歪めずに重ね合わせる 中核特性です。
- 制御点(GCP)を Delaunay アルゴリズムで三角分割します
(
delaunator参照)。 - 各三角形について、3つの GCP ペアから局所アフィン写像を計算します。
- 点を変換する際、その点を含む三角形を(検索インデックス経由で)特定し、 そのアフィン写像を適用します。
- 逆変換も同じ三角分割を用い、アフィン写像を反転させます。
三角分割が双方向全単射を保存できない場合(位相崩壊 — 通常は制御点が
折り返し三角形を作る場合)、MaplatTin は strictMode で3つの挙動を
切り替えます:
strictMode |
updateTin() 後の strict_status
|
挙動 |
|---|---|---|
"strict" |
STATUS_STRICT または例外 |
厳密な位相を要求。不可能なら updateTin() が例外を投げます |
"auto"(デフォルト) |
STATUS_STRICT または STATUS_LOOSE
|
まず strict を試み、失敗したら loose へフォールバック |
"loose" |
STATUS_LOOSE |
全単射が保証されなくても常に許可 |
STATUS_LOOSE では順方向変換は機能しますが、逆変換の結果が一意でない
可能性があります。往復保証が重要な場合(例: ユーザー向け地図重ね合わせ)
は STATUS_STRICT を使用してください。順方向のみで十分な前処理
パイプラインでは STATUS_LOOSE を使用できます。
制御点に加え、setEdges(edges) で制約付きエッジを受け付けます。
これらのエッジは三角分割へ強制的に挿入されます。2つの制御点が接続された
ままであるべき場合(例: 道路・川・境界に沿う)で、デフォルトの Delaunay
三角分割がそのエッジをスキップする場合に有用です。
内部の EdgeBound 制約エンジンが幾何学的な再三角分割を処理します。
詳細は tests/edgebound/ スイートを参照してください。
vertexMode は境界頂点の扱いを制御します:
-
"plain"— ソース平面の境界をそのまま使用します。 -
"birdeye"— 鳥瞰図調整を適用します。ソース画像が透視歪みを持ち、 三角分割前に部分補正すべき場合に有用です。
多くの地図は "plain" を使用します。"birdeye" は透視感のある絵地図向けの
特殊モードです。
画像座標は通常 Y が下向きに増加し、地図座標は Y が上向きに増加します。
MaplatTin は yaxisMode でこれを処理します:
-
Tin.YAXIS_FOLLOW— ソース Y 軸がターゲットと同方向。 -
Tin.YAXIS_INVERT(デフォルト)— ソース Y 軸がターゲットに対して反転。
橋渡しする座標系に応じて選択してください。ピクセル → Web メルカトル変換
(Maplat のユースケース)では通常デフォルトの YAXIS_INVERT が正解です。
-
MaplatCore(
@maplat/core) は MaplatTin をライブビューア変換の内部で使用します。OpenLayers 描画と Maplat アプリデータプロトコルを MaplatTin の周囲に wrap します。 -
MaplatTransform
(
@maplat/transform)は MaplatTin を用いてオフラインバッチパイプライン 向けのコンパイル済み変換データを事前計算する前処理ツール群です。
MaplatTin 自体は最も低レベルな構成要素: 純粋な座標計算のみで描画も I/O も 持ちません。
英語版はこちら / Read this page in English
- Home
- Tutorials.ja — 利用手順
- API-Reference.ja — API の概念と利用パターン
- MaplatCore Wiki — MaplatCore が MaplatTin をどう使うか
- README
- 🇬🇧 English (Home)
- 🇯🇵 日本語 (Home.ja)
English
日本語
- 📄 README / README.ja
- 📚 docs/api/ — API signatures
- 🗺️ Ecosystem Map(現在外部非公開)
- 🌐 Product site / 製品サイト
- 🏢 Nayuta, Inc. / コーポレートサイト