Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Maplat – Historical Maps Viewer, guarantees nonlinear bijective projection

1,310 views

Published on

FOSS4G 2017 TOKYO / KANSAIでのMaplat発表資料

Published in: Technology
  • Be the first to comment

Maplat – Historical Maps Viewer, guarantees nonlinear bijective projection

  1. 1. Maplat – Historical Maps Viewer, guarantees nonlinear bijective projection 大塚恒平 (Kohei Otsuka) 1
  2. 2. 日本語発表です 2
  3. 3. Self-introduction 3
  4. 4. • 大塚恒平 (Kohei Otsuka) • エンターテイメント分野で位置情報業界14年 • Mapion社 - 位置情報ゲーム「ケータイ国盗り合戦」立ち上げに参加 企画開発双方のディレクション、シナリオ作成、プログラム実装 • ATR-Promotions (現Stroly社) - 古地図アプリ「ちずぶらり」シリーズ立ち上げ に参加 企画開発双方のディレクション、プログラム実装、特許開発 • 現在は本業はHERE Technologies社で地図コンテンツ/プラットフォーム双方 の技術サポート業務 • Code for NARA横浜支部所属の元、Maplatを始めとしてCode4XMap、地蔵プ ロジェクトなどを私的に運営 4
  5. 5. What is Maplat? 5
  6. 6. 古地図/絵地図で街歩きができ るアプリ/基礎技術 6 © OpenStreetMap © 会津若松観光ビューロー
  7. 7. MIT ライセンス 7 https://github.com/code4nara/Maplat/wiki でgithub公開中
  8. 8. 8 動作サンプルも公開中 https://bit.ly/aizumap (会津若松版サンプル)
  9. 9. データエディタは別プロジェクト https://github.com/code4nara/MaplatEditor/wiki 9
  10. 10. 商用アプリへの採用実績 10 © 上越市 © 村山市 ※過去バージョンMaplatのため、全単射 変換等にはまだ対応していません
  11. 11. 特徴 11
  12. 12. • 古地図を歪めず、美しさを損ねずに現代地図と切り替え /リアルタイム重ね合わせ(世界初) • 中心位置だけでなく、方角/縮尺もピッタリ変換(Web版 では世界初) • データ側エラーがなければ、あらゆる古地図間で座標系 全域1対1座標変換(全単射変換)を保証(世界初/特許申請 予定) • 全てオープンソース • 座標変換ロジック(turf.js)、エラー検出ロジック (mapshaper)、表示API(OpenLayers4)まで、FOSS4Gで構成 • 既存のTMS/WMTS古地図とも共存可能 • 高機能データエディタ 12
  13. 13. 古地図ビューア 13
  14. 14. GPS 表示On/Off ホーム位置に戻る Maplatプロジェクト ページへ(外部リンク) 背景地図切替 スライダ 重ね合わせ地図 (古地図/絵地図) 切替スライダ 重ね合わせ地図透明度調整 アトリビューション表示 方角表示& 回転リセット表示 14現行ビューア(CodeName: Otter-bay)
  15. 15. 地図切替 重ね合わせ地図 切替スライダの 切替&クリック で古地図切替 背景地図切替 スライダの切替 &クリックで 背景地図切替 それぞれの スライダ クリックで 背景地図/ 古地図切替 15 © OpenStreetMap © 国土地理院
  16. 16. 古地図透明度切替 透明度スライダで背景地図とのリアルタイム比較可能 16 © 国土地理院
  17. 17. GPS連動位置表示切替 GPSボタンで 現在地を位 置精度 含めて表示 地図を切り替えても対応するGPS位置を計算し表示継続 17 © 国土地理院
  18. 18. POI表示 POIピンクリッ クで、対応 データポップ アップ表示 データ表示 だけでなく、 Wikipedia等 外部ソース の埋め込み 表示も可能 18
  19. 19. データ作成 19
  20. 20. MaplatEditorで対応点データ作成 新規地図追加 現行コード ネーム:taotie 20
  21. 21. メタデータ入力 メタデータ属性は今後随時追加 メタデータ 入力タブ 地図画像 アップロード (自動タイル化) 21
  22. 22. 対応点入力 対応点入力 タブ 与えられた対 応点から変換 用三角形網を 自動計算 古地図/対応地 図とも、マッピ ングしやすいよ う自由に回転可 能 地図4隅の対応 点は独自ロジッ クで自動計算 22 © OpenStreetMap
  23. 23. 対応地図切換 対応地図を切換 可能、地理院過 去航空写真、今 昔マップ等 23 © 国土地理院
  24. 24. トポロジーエラー検出 トポロジーエ ラー発生時は 自動検知 エラー発生点 表示 エラー発生点に ジャンプ エラー解消困 難な際はエ ラー許容モー ドに変更も可 能(全単射変 換は保証され ない) 24 © OpenStreetMap
  25. 25. 即座の変換テスト 左クリックで即 座に変換テスト 起動 古地図ó対応地 図、どちらの方 向でもテスト可 能 将来的に、縮尺 方角のテストに も対応 25 © OpenStreetMap
  26. 26. 全単射変換 26
  27. 27. 全単射変換とは • どんな地図の間でも、同じ点 を連続変換すれば必ず同じ場 所に戻る • 地図の内部だけではなく、地 図外の座標領域含め一意に相 互変換 • ただし、データのトポロジー エラーが解決されている事が 必要(エラーの有無は MaplatEditorで判定可能) 27
  28. 28. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 28 © Stroly
  29. 29. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 29 © Stroly
  30. 30. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 30 © Stroly
  31. 31. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 31 © Stroly
  32. 32. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 32 © Stroly
  33. 33. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 33 © Stroly
  34. 34. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 34 © Stroly
  35. 35. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 35 © Stroly
  36. 36. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 36 © Stroly
  37. 37. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 37 © Stroly
  38. 38. 類似技術との比較 (連続変換) Maplat Stroly 変換点は、 Maplat側で トポロジー エラー解決 のため数点 加えた以外 は同じデー タを使用 トポロジーの維持が保証される技術 なので、エンタメ用途だけでなく、 公的な用途(地籍図への適用など) が考えられる 38 © Stroly
  39. 39. 全域でのラウンドトリップ変換 39 Maplatによる変換 Strolyによる変換 ラウンドトリップ後の 平均変換誤差(ピクセル) Maplat: 1.79e-10 Stroly: 10.65 変換速度(2601回変換) Maplat: 85ms Stroly: 232ms https://jsfiddle.net/kochizufan/vs3o6erj/
  40. 40. 類似技術での擬似全単射対応 • Strolyでは全単射変換はできないが、「少しでも」全単射「っぽく」見 せる手法で特許取得 • Strolyで全単射変換できないことと、全単射機能自体が重要な機能であるこ との証明になる => それをネイティブにできるMaplatの新規性 • 特許5810411号 • 請求項2 • 前記第1地図および前記第2地図のうちの一方の地図から、他方の地図への表示の切り替えを実行し た後、前記他方の地図の表示中に、前記他方の地図について、表示される領域が変更されるような 操作を行うことなく、再び、前記一方を表示するような切替操作が前記受付手段を介してなされた と、前記表示情報に基づき判断した場合、前記第1および第2の注視点について、前記非線形変換を 行うことなく、前記他方から前記一方を表示するための表示の切り替え処理を行う • 請求項9 • (前略)…表示切替の指示が複数回繰り返された際に、前記非線形 変換による変形誤差に応じた前記対応する位置の前記表示画面 上の表示位置の誤差が所定値以下となるように、前記表示制御 手段による表示を調整する調整手段を含み…(後略) 元の場所に戻らない場合は、数度双方向変 換を繰り返し、収束したならその値を使う 地図を切り換え、切換先の地図で視点を動 かさずに元の地図に戻る場合は、座標変換 処理せずに元の場所に戻す 40
  41. 41. 技術詳細 41
  42. 42. 三角形網を用いた変換手法 42
  43. 43. 三角網内の変換の定義 この領域の変換 は定義可能 三角形網生成 はFOSS4Gの turf.jsを利用 43 古地図側 対応地図側
  44. 44. 三角網内の変換の定義 この領域の変換 は定義可能 三角形網生成 はFOSS4Gの turf.jsを利用 44 古地図側 対応地図側
  45. 45. 三角網内の変換の定義 この領域の変換 は定義可能 三角形網生成 はFOSS4Gの turf.jsを利用 45 古地図側 対応地図側
  46. 46. 三角網外の変換の定義(1) 地図外郭に対応する 四角形を独自定義 46 古地図側 対応地図側
  47. 47. 三角網外の変換の定義(2) 47 古地図側 対応地図側地図外郭頂点と対応点重心 を頂点とする三角形を定義 し、地図外はその三角形を 無限延長して変換
  48. 48. 周辺対応点との距離比率を考慮し た加重変換 48
  49. 49. 距離を考慮した加重変換 A A B B C C 古地図側 対応地図側 古地図特有の距離の歪ん だ表現を、そのまま変換 すると端部分で急に変換 比率が変化する 比率変化をマイル ドにするため、周 辺対応点との距離 平均を指標として 加重変換 49
  50. 50. 距離を考慮した加重変換の例 50 © OpenStreetMap
  51. 51. トポロジーエラーを解消し 全単射変換保証 51
  52. 52. 全単射保証前のロジック 正変換と逆変換で異なる 三角網を使用、変換先で のトポロジーエラーは無 視される(単射でない) トポロジーエラー ※現行ロジックでもトポロジーエ ラー存在時はこのモードで動かす ことも可能 52
  53. 53. 全単射保証後のロジック 正変換と逆変換で一致す る三角網を使用するため、 全単射が保証される 53
  54. 54. トポロジーエラー発生時の対応 トポロジーエラーを検知 し、単純なものは自動修 正&複雑なものはエディタ 上で修正を促す トポロジーエラー 54
  55. 55. トポロジーエラーの2類型 A A A A B B B B C C C C DD D D ケース 1) ケース 2) 55
  56. 56. トポロジーエラー ケース1 A A B B C C DD エラー) 解消) 繋ぎ変えを行えば エラー解消=>自動 解消機能を実装済 A A B BC C DD 56
  57. 57. トポロジーエラー ケース2 エラー) 解消) A A B BC C D D A A B B C C D D トポロジーエラー 解消用対応点を追 加し、エラー解消 E E 手順は確立しているが自動化までは できていない => 手動で修正 57
  58. 58. サンプル 58
  59. 59. • 1番のお勧めは会津若松版 (先述) • 英語環境からアクセスすれば国際版も稼働中 • その他のサンプル • 一部、データが古く全単射変換未対応のもの もあります • 上田市版 (https://bit.ly/uedamap) • 盛岡市版 (https://bit.ly/moriokamap) • 鯖江市版 (https://bit.ly/sabaemap) • 奈良市版 (https://bit.ly/naramap) • その他のプロジェクトとのコラボレーション • 地蔵プロジェクト (https://github.com/code4nara/JizoProject/wiki)との コラボレーション https://bit.ly/narajizomap 59
  60. 60. 今後の展開 60
  61. 61. 直近の展開 • スタンプラリー機能と組み合わせた商用観光ソリューショ ンに採用予定 • Geoアクティビティコンテストで協業者が発表します • 他ソースの自動コンパイル機能 • Stroly, David Ramsey Collection, MapWarperなどの他ソースから自動変換 • JavaScript以外への展開 • 個人的にはXamarin展開を優先したい 61
  62. 62. 独自ノウハウの拡充 • 点と点だけでなく、線を線に変換する技術検討中 • 地図の定義と変換テーブル、タイル画像をセットとしてまとめて配信 できるデータフォーマット検討中 • WebからはHTTP Byte Rangeリクエストでランダムアクセス • サーバレスでの関連諸技術検討中 => 懇親会ライトニングトークで • 古地図タイル化をサーバレスで実施 • 分散型古地図共有リポジトリ • 古地図データの登録を受け付ける登録API • 古地図の存在はUTFGridで検知 => ベクトルタイルで検知 両者を点ではなく線として変換する 62 © OpenStreetMap
  63. 63. 副産物の活用 • 生成した対応点を元にシンプレートスプライン変換画像のTMSタ イル等も提供 • 時代を橋渡ししての位置特定用途等に寄与 (明治期の地図の海岸線を使って、江戸期の海岸線の位置特定など) • 三角網での、実距離との比較を元に古地図/絵地図の歪み要 素の比較指標を定義 • 古地図内での注視点ごとの歪み度合いを時代比較して主題の変化を確認 • 古地図ごとに最適な変換(Maplatを使うか、TMSタイルに変換するか)を評価す る指標にもなりうる 63
  64. 64. 将来の展開 • 3D Maplatの実現 • 国土地理院の標高タイル形式でMaplat古地図タイル向けの標高タイルを定義す ることは可能(というか既にテスト作成済み) • Cesiumで読み込ませて古地図タイルと表示する事で、古地図の3D表示が実現可能 • 高さの値の正規化要否は検討要 • 鳥瞰図、写真Maplatの実現 • 比較対象投影地図側に高さ情報を含んだ投影を想定 • 鳥瞰図上で現在地表示、写真を3D地図に重ね合わせ • 古写真、浮世絵と現代写真、3D地図の重ね合わせ 64
  65. 65. 日本発のFOSS4Gソリューション として広く世界に知られるよう 頑張ります 65
  66. 66. 66

×