Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Maplatの最新状況 –流行りのGTFSともコラボしてみた– 神戸バージョン

Maplatの最新状況 –流行りのGTFSともコラボしてみた– 神戸バージョン

Maplat FOSS4G Kobe 発表

E83ff81bc5a881c33dcff37eb160ce12?s=128

Code for History

October 13, 2019
Tweet

More Decks by Code for History

Other Decks in Technology

Transcript

  1. Maplatの最新状況 –流行りのGTFSともコラボしてみた– 大塚 恒平 – Code for History 1

  2. 目次 • 発表者紹介 • Maplatとは • 座標変換の手法(同相変換保証) • 線から線への変換 •

    EcmaScriptモジュール化 • 他技術との比較 • Maplatの適用例 • 今後の展開(2018年の進捗状況確認) 2
  3. 発表者紹介 3

  4. • 大塚 恒平 • エンターテイメント系位置情報ビジネスで 15 年 • マピオン社(現ワンコンパス社)- 位置情報ゲーム「ケータイ国盗り合

    戦」の立ち上げに参加。ゲームシナリオ作成やプログラム実装など、企画 と技術双方のディレクターとして活躍。 • ATR-Promotions 社(現 Stroly 社)- スマホ向け古地図アプリの立ち上げに参 加。プログラム実装や特許技術開発など、企画と技術双方のディレクター として活躍。 • 現在は HERE Technologies 社において、地図コンテンツとプラットフォーム 双方の営業サポートエンジニアとして勤務。 • 余暇ではボランタリーに、本発表で取り上げる Maplat の開発を含む オープンデータ、オープンソースの活動を行なっている。この8月、新た な Code for Japan の非地域ブリゲートとして Code for History を立ち上 げた。 4
  5. Code for History • MaplatはCode for Naraの元で誕生 • 製作者が関東に移ってもCode for

    Naraの下に間借 りしていたが、出て行けとそろそろちゃんとし た方がいいかなと思いCode for Historyとい う団体を立ち上げた • 特に行動実態はない • 絶賛参加募集中!もれなく会員になれます! 5
  6. Maplatとは 6

  7. 古地図や絵地図を使って街歩きを楽し める地図ビューア技術 7 © OpenStreetMap © Utouto Tanken-tai

  8. 既存の GIS を用いて古地図や絵地図を 扱う際の問題点 (1) • 古地図や絵地図は地域の魅力が詰まっているので、観光や教育用途に とても有用なはず、しかし… • 歴史的素養の少ない一般の人にとって、古地図を読み解いて現在の街

    並みと照らし合わせるのは至難の技 • 既存の GIS は古地図を現在地図に重ね合わせることはできるが、古地 図の側を酷く歪めてしまい、その持つ魅力を半減させてしまう 8
  9. 既存の GIS を用いて古地図や絵地図を 扱う際の問題点 (2) • 既存の GIS が古地図を歪めてしまうサンプル 9

  10. Maplat は古地図を歪めずに正確な地図 の上に重ねることを実現しました 10

  11. 11 座標変換処理をサーバサ イドから、クライアント サイドリアルタイムに: 画面の中心点では、常に 古地図と現代地図の位置 が合うようにする 大まかに中心点周りの方 角と縮尺比を計算し、そ れに合わせ古地図全体が

    大まかに重なるように見 せかける
  12. 座標変換の手法 (同相変換保証) 12

  13. 同相変換とは • どんな地図の間でも、同じ 点を連続変換すれば必ず同 じ場所に戻り、かつ隣の点 と連続することが保証 • 地図の内部だけではなく、 地図外の座標領域含め一意 に相互変換

    • ただし、データのトポロ ジーエラーが解決されてい る事が必要(エラーの有無 はMaplatEditorで判定可能) • 既存GISの技術蓄積を継承 13
  14. 全単射?同相? • FOSS4G 2019 Niigataまでは「全単射 (bijective)」に対応していると主張していた • 国土地理院のえらいひと(鎌田参事官)から、 「全単射だけでなく同相(homeomorphic)も 実現してるから、そう主張した方がいいよ」

    とアドバイスをいただいた • 点の変換が元の場所に戻る(全単射)だけで なく、その点同士の連続性も維持される(同 相)の方が数学的に高度な概念 14 黒幕:鎌田参事官 ©北海道地理空間フォーラム 全単射じゃなく 同相だお
  15. 座標変換の手法 (1) 対応点の三角網を作成する 15 古地図と正確な地図の間に対 応点(GCP)を整備すること で、三角網を生成

  16. 座標変換の手法 (2) 対応点の外包内での変換 16 古地図 現代地図 対応点の外包内では、座標は三 角網を用いたベクタ計算で変換

  17. 座標変換の手法 (3) 対応点の外包外での変換 17 古地図 現代地図 古地図の図郭と対応する頂点を独 自の計算法で現代地図側に定義す ることで、三角網の定義域を拡張

  18. 18 座標変換の手法 (4) 古地図図郭外の変換 古地図 現代地図 古地図図郭の頂点と対応点の重 心とで作られる三角を 4 つ定義

    し、図郭外の点はそれらの三角 のベクタを延長して変換
  19. 線から線への変換 19 New

  20. 20 従来のロジックの問題点 古地図 現代地図 道などの線要素が三角網の辺と交 差していた場合、線上の点がもう 一方の線上に変換されない問題

  21. 21 改善方法: 対応線の導入 (1) 古地図 現代地図 対応線は常に三角網の辺として採 用されるため、それに重なる線的 要素は線に変換される 対応線

  22. 22 改善方法: 対応線の導入 (2) 古地図 現代地図 もし対応線が曲線の場合、補助対 応点を自動的に挿入して三角網を 拡張 対応線

  23. バス路線図などにも活用可能 23 • 宇野バス様配信のGTFSデータ&同等のAPI経由で連携 • 路線描画は路線図側もOSM側も同じ経緯度羅列で描画しています

  24. バス路線図などにも活用可能 24 • 宇野バス様配信のGTFSデータ&同等のAPI経由で連携 • 路線描画は路線図側もOSM側も同じ経緯度羅列で描画しています

  25. 地味にいろんな機能を使ってます 25

  26. ECMASCRIPTモジュール化 26 New

  27. 従来の構成 • モジュール機構はrequire.jsを使用(AMDモジュール) • エディタ(MaplatEditor)を除く全ての実装(コアAPI、標準UI、Android ネイティブライブラリ、iOSネイティブライブラリ)を単独のレポジト リで管理(code4history/Maplat) 27

  28. 新しい構成 • モジュール機構はEcmaScript2015のモジュール機構を使用し、Webpack/Babelで トランスパイル • 三角網生成・座標変換ライブラリ(MaplatTin)、 コアAPI(MaplatCore)、 モバイルネイティブとのGLUE(MaplatMobileGw)、 Androidネイティブライブラリ(MaplatAndroid)、 iOSネイティブライブラリ(MaplatiOS)、標準UI(Maplat)

    をそれぞれ独立リポジトリ化 • リポジトリ間連携はnpm(node package manager)経由で 28
  29. 新しい構成 • モジュール機構はEcmaScript2015のモジュール機構を使用し、Webpack/Babelで トランスパイル • 三角網生成・座標変換ライブラリ(MaplatTin)、 コアAPI(MaplatCore)、 モバイルネイティブとのGLUE(MaplatMobileGw)、 Androidネイティブライブラリ(MaplatAndroid)、 iOSネイティブライブラリ(MaplatiOS)、標準UI(Maplat)

    をそれぞれ独立リポジトリ化 • リポジトリ間連携はnpm(node package manager)経由で 29
  30. 他技術との比較 30

  31. 他技術:Stroly は 2010 年に発表された同種 の古地図処理技術 31

  32. 他技術の用いている座標変換手法 32 古地図 現代地図 Stroly もベクタ計算を用いてい るが、三角網を形成するのでは なく、変換点近傍の3点を用い ており、トポロジが破壊される

  33. 他技術との比較 (1) 双方向変換後のエラー比較 33 Maplat での変換 Stroly での変換 双方向変換後の平均変換誤差 (ピクセル)

    Maplat: 0.00000000018 Stroly: 11.09373539396
  34. 他技術との比較 (2) 対応機能比較マトリクス 34 Items Stroly Maplat 公開の容易さ ✔:編集後すぐ公開可能 ×:手作業デプロイ

    同相変換 × ✔:特許審査中 方角縮尺変換 ×:縮尺変換にバグあり ✔:方角も縮尺もぴったり変換 線から線への変換 × ✔ 地図重ね合わせ ×:切り替えのみ、もっさり ✔:常時重ね合わせ、きびきび オフライン対応 × ✔:PWA 対応 ネットワーク環境 ×:インターネット環境のみ ✔:イントラ、ローカル動作可 HTML 埋め込み対応 ×:IFRAME での埋め込みのみ ✔:DIV 埋め込み、API 制御可能 シェア機能 ×:地図ページのシェアのみ ✔:地図ページと視点のシェア可能 モバイル対応 ×:自社アプリ開発のみ ✔:iOS と Android のライブラリ提供 POI 機能 ×:情報表示のみ ✔:リンクにより動作や遷移制御可 オープンソース × ✔
  35. Maplatの適用例 35

  36. 商用アプリの事例 36 商用アプリの事例では、観光用 途でのスマホネイティブアプリ 採用が多い

  37. 教育的適用事例 37 既存GISよりも親しみやすい特徴を利用して、街の歴史を訪 ねる街歩きフィールドワークなどに採用され、教育的効果 を実証 Geoアクティビティ コンテストで 3冠受賞

  38. 38 デモサイト「ぷらっと〜」シリーズ 展開中 ぷらっと館林 https://s.maplat.jp/r/tatebayashimap/ ぷらっといわき https://s.maplat.jp/r/iwakimap/ ぷらっと奈良 https://s.maplat.jp/r/naramap/ ぷらっと会津若松

    https://s.maplat.jp/r/aizumap/
  39. オリジナルアニメ巡礼地図 も作成し提供 (ぷらっと館林) 39 © 国土地理院 地理院地図タイルを 元に作成 測量成果複製申請も取得済み おそらく測量申請までやって

    作成された初めての 巡礼マップ
  40. 今後の展開 (2018年の進捗状況確認) 40

  41. 直近の展開(2018年) • 他ソースからのデータ変換機能 • Stroly, David Ramsey Collection, MapWarperなどの他ソースからMaplat形式へ 自動変換する機能をMaplatEditorに追加

    • MapWarperはオープンソースなので、それ自身を改造してMaplat表示する 機能を準備 • モバイルネイティブインタフェースの準備 • 未ライブラリ化の動作サンプルは既に公開済み • ライブラリ化は2018年6月公開予定 • API部品化をさらに徹底、表示機能とUI機能を分離 • PWA化の徹底、SPA(Single Page Application)化などはAPIインタフェースを通 じて実現 41
  42. 直近の展開(2019年チェック) • 他ソースからのデータ変換機能 • Stroly, David Ramsey Collection, MapWarperなどの他ソースからMaplat形式へ 自動変換する機能をMaplatEditorに追加

    • MapWarperはオープンソースなので、それ自身を改造してMaplat表示する 機能を準備 • モバイルネイティブインタフェースの準備 • 未ライブラリ化の動作サンプルは既に公開済み • ライブラリ化は2018年6月公開予定 • API部品化をさらに徹底、表示機能とUI機能を分離 • PWA化の徹底、SPA(Single Page Application)化などはAPIインタフェースを通 じて実現 42
  43. 独自ノウハウの拡充(2018年) • 点と点だけでなく、線を線に変換する技術検討中 • 地図の定義と変換テーブル、タイル画像をセットとしてまとめて配信 できるデータフォーマット検討中 • WebからはHTTP Byte Rangeリクエストでランダムアクセス

    • サーバレスでの関連諸技術検討中 • 古地図タイル化をサーバレスで実施 • 分散型古地図共有リポジトリ • 古地図データの登録を受け付ける登録API • 古地図の存在はベクトルタイルで検知 両者を点ではなく線として変換する 43 © OpenStreetMap
  44. 独自ノウハウの拡充(2019年チェック) • 点と点だけでなく、線を線に変換する技術検討中 • 地図の定義と変換テーブル、タイル画像をセットとしてまとめて配信 できるデータフォーマット検討中 • WebからはHTTP Byte Rangeリクエストでランダムアクセス

    • サーバレスでの関連諸技術検討中 • 古地図タイル化をサーバレスで実施 • 分散型古地図共有リポジトリ • 古地図データの登録を受け付ける登録API • 古地図の存在はベクトルタイルで検知 両者を点ではなく線として変換する 44 © OpenStreetMap
  45. 副産物の活用(2018年) • 生成した対応点を元にシンプレートスプライン変換画像のTMSタ イル等も提供 • 時代を橋渡ししての位置特定用途等に寄与 (明治期の地図の海岸線を使って、江戸期の海岸線の位置特定など) • 三角網での、実距離との比較を元に古地図/絵地図の歪み要 素の比較指標を定義

    • 古地図内での注視点ごとの歪み度合いを時代比較して主題の変化を確認 • 古地図ごとに最適な変換(Maplatを使うか、TMSタイルに変換するか)を評価す る指標にもなりうる 45
  46. 副産物の活用(2019年チェック) • 生成した対応点を元にシンプレートスプライン変換画像のTMSタ イル等も提供 • 時代を橋渡ししての位置特定用途等に寄与 (明治期の地図の海岸線を使って、江戸期の海岸線の位置特定など) • 三角網での、実距離との比較を元に古地図/絵地図の歪み要 素の比較指標を定義

    • 古地図内での注視点ごとの歪み度合いを時代比較して主題の変化を確認 • 古地図ごとに最適な変換(Maplatを使うか、TMSタイルに変換するか)を評価す る指標にもなりうる 46
  47. 将来の展開(2018年) • 3D Maplatの実現 • 国土地理院の標高タイル形式でMaplat古地図タイル向けの標高タイルを定義す ることは可能(というか既にテスト作成済み) • Cesiumで読み込ませて古地図タイルと表示する事で、古地図の3D表示が実現可能 •

    高さの値の正規化要否は検討要 • 鳥瞰図、写真Maplatの実現 • 比較対象投影地図側に高さ情報を含んだ投影を想定 • 鳥瞰図上で現在地表示、写真を3D地図に重ね合わせ • 古写真、浮世絵と現代写真、3D地図の重ね合わせ 47
  48. 将来の展開(2019年チェック) • 3D Maplatの実現 • 国土地理院の標高タイル形式でMaplat古地図タイル向けの標高タイルを定義す ることは可能(というか既にテスト作成済み) • Cesiumで読み込ませて古地図タイルと表示する事で、古地図の3D表示が実現可能 •

    高さの値の正規化要否は検討要 • 鳥瞰図、写真Maplatの実現 • 比較対象投影地図側に高さ情報を含んだ投影を想定 • 鳥瞰図上で現在地表示、写真を3D地図に重ね合わせ • 古写真、浮世絵と現代写真、3D地図の重ね合わせ 48 © 大阪市立大学
  49. 2019年の新たな宿題(1) • POI内の検索、ウォークスルー • 大量のPOIがある場合、どのPOIが目 的のPOIなのかをいちいち開かないと わからない • POI内の情報を検索したり、POIの内 容を順番にウォークスルーする機能

    が必須 49 © Stroly, Rising Sun Rock Fes.
  50. 2019年の新たな宿題(2) • 注記への注記機能 • 変体かなその他で書かれた注記は現代人には読めない • また、海外の人にもわからない(日本人が海外の古地図を意外と楽しめるのは、 漢字やローマ字が読めるからではないか、という仮説) • 古地図注記に現代語や多言語化したデジタル注記を加え、オーバーレイや検索で

    きるように 50 きかいが嶋 © Klokan Technologies
  51. 2019年の新たな宿題(3) • 様々な用途に使えるGCPの流通仕様として、Maplatデータ フォーマットを整備 • 既存のGISによる歪ませるアプローチも、街歩きなどには向かないだけで無意味な わけでは全くない <= 同じGCPの情報が使える •

    2018年の今後の展開でも書いた、古地図の注視度インデックスなどにも使えるかも • GCP(および対応線)を古地図のメタデータとして普及させたい • 課題 • トポロジーエラー解消のために便宜的に加えたGCPをちゃんと見分けられるように • GCPの種類(施設の位置の対応、交差点の対応、地物の角の対応、etc)を見分けられるよ うに 51
  52. スポンサー様がつきました • 金銭的寄付からツールライセンス無 償提供まで、助けていただけるよう になりました • いただいた補助をうまく活かして、 ドキュメンテーションやデザインな ど弱い部分の強化を進めていきます 52

  53. 猛者募集(Code for History) • さみしいですっ! • 特にデザインできる人募集 (機能実装したいのに、技術的実装 方法は目星ついていてもUIを思いつ かないために実装に移れていない機

    能が多い) • ドキュメント手伝ってくださる方 53 モサドくん(妻命名)© HERE Mobility
  54. 54 End User: kochizufan Repository: code4history/Maplat E-mail: kochizufan@gmail.com 資料: http://bit.ly/maplat_f4g_kbe