Geoアクティビティコンテスト2021、奨励賞受賞の発表
古地図アプリM、その後の進化大塚 恒平 – Code for History1
View Slide
目次• 2018 Mの復習• その後の発展 (1) 線を線に変換する技術• その後の発展 (2) 線を線に変換するGIS出力• その後の発展 (3) 地図をオフライン販売できる技術• 利用事例の紹介• まとめ2
2018 Mの復習3
古地図や絵地図といった不正確な地図を、歪めずに正確な地図と対応付けられる技術© OpenStreetMap © Utouto Tanken-tai4
既存のGISは古地図の美観を損なうが、Mは古地図の美観、情報を歪めない• 既存のGISによる重ね合わせ5• Mによる重ね合わせ
同相変換(全単射1対1変換)を保証• 同相変換とは、どんな地図の間でも、同じ点を連続変換すれば必ず同じ場所に戻ること、かつその性質が連続していること• 地図の内部だけではなく、地図外の座標領域含め一意に相互変換• ただし、データのトポロジーエラーが解決されている事が必要(エラーの有無はMaplatEditorで判定可能)• 特許取得済み(6684776号)6
一般的GISデータとMデータの比較 7データ仕様 汎用 Web GIS データ形式 (WMTS/TMS) M データ形式データビューア Google Maps API, HERE maps API,Leaflet, OpenLayers, MapBox GJ JSMMデータエディタ MaptilerQGIS + gdal2tilesMaplatEditor (HTGCL (後に説明) を利用)MaplatEditor説明 • 標準データフォーマットはメルカトル図法での正確な地図を提供• 不正確な地図は、この仕様では次の2つの要素を同時に満たしつつ提供することはできない• 地図画像を歪めない• 全ての地図上の点を正確な経緯度と対応付ける• 不正確な地図を、次の2つの要素を同時に満たしつつ提供することができる• 地図画像を歪めない• 全ての地図上の点を正確な経緯度と対応付ける備考 WMTS: Web Map Tile ServiceTMS: Tile Map Service
その後の発展 (1)線を線に変換する技術8
線を線に変換する技術とは 9• 2018年のM発表で今後の開発を予告されていた技術• 既存のMだけではなく、既存のGISでの座標変換技術含め、座標変換の基準となるのは対応点(GCP: Ground Control Point)⇒位置が正確に合うのは対応点周辺のみ、点と点を結ぶ線の対応づけなどは行えなかった
• 三角網の辺をまたぐような方向の移動で、線と線の対応付けが機能しない場合がある既存のロジックの問題点 10現代地図古地図
• 対応線 (HTGCL) の概念を導入し、対応線は必ず三角網の辺とすることで、対応線上の点は必ず対応線上に変換される対応線 (HTGCL) の導入現代地図対応線(HTGCL)古地図11※ HTGCL: Historical Topographic Ground Control Line
• 線を線に変換できることで、正確な経緯度での車両の現在位置を、簡略化した図像上に表示するロケーションシステムでの活用ユースケースも喚起• 実際の採用例:愛知県豊橋市バスロケシステム「のってみりん」• エンドユーザ向けシステムだけでなく、社内向け車両管理システムなどでも、簡略図上に表記した方がわかりやすいユースケースも路線図などでのユースケースも喚起 12
その後の発展 (2)線を線に変換するGIS出力13
線を線に変換する技術はGISでも有用か 14• Mは古地図を歪めない技術だが、古地図を歪めるGISの手法も意味がないわけではない• 全ての対応点が正確に位置合わせされたうえで一望できる• 既存の多様なGISツールで活用できる• 全てはユースケース次第• 対応点 (GCP) ベースでの座標変換はGISにも存在するが、対応線(HTGCL) ベースでの座標変換はGISには存在しない• HTGCL座標変換でのGISデータ生成も有用なのではないか仮説
座標変換性能自体の特徴比較Method Rely on Pros ConsGIS(GDAL, シンプレートスプライン)GCP• データ作成が容易• 変換結果が全体的にスムース• 変換が連続的でなかったり、双方向的でなかったりする場合がある• 線を線に変換できないM HTGCL• 同相変換• 線を線への変換• 三角網の辺をまたぐ部分で変換が鋭角的になる場合がある• トポロジーエラーが発生した場合、手作業での改善が骨の折れる作業15• MaplatEditorにHTGCL変換でのWMTSタイル出力機能をつけてみた
線を線に変換したGISデータの生成例 16既存GIS技術 (GDAL with GCP) HTGCL• 緑の線は現代の道路の位置を示している。既存技術だと、古地図側の道路は大きくカーブを描いて破壊的に変形され、現代の道路の位置に沿わない。• HTGCLを用いた変形では、古地図側の道路は幾分かは歪むものの、基本的に現代の道路の位置にぴったりと沿っている
同相変換の有用性についても確認 17既存GIS技術 (GDAL with GCP) HTGCL• (線を線に変換するために複雑なGCPを設定しているせいもあるが) 既存技術では変換の連続性と双方向性が失われ、道路がループや8の字状に変換されている• はげしく歪んで変形してはいるものの、座標の連続性と双方向性は強力に維持されたまま変換できている
線を線に変換する技術はGISでも有用か 18• Mは古地図を歪めない技術だが、古地図を歪めるGISの手法も意味がないわけではない• 全ての対応点が正確に位置合わせされたうえで一望できる• 既存の多様なGISツールで活用できる• 全てはユースケース次第• 対応点 (GCP) ベースでの座標変換はGISにも存在するが、対応線 (HTGCL)ベースでの座標変換はGISには存在しない• HTGCL座標変換でのGISデータ生成も有用なのではないか仮説• 結論: 線を線に変換する技術は既存GISでも有用そう• GeoTiffへの変換機能などもユースケース吟味の上、必要ならば開発したい
その後の発展 (3)地図をオフライン販売できる技術19
20PWAとは?• “progressive web app”の略• オフラインで動作• ブラウザの背後で“service worker”というプロセスが走る• Service workerはページの開始前に必要なファイルを取得しキャッシュする• Service workerはプロセスからの処理要求に従い、アクセスしたファイルやデータをIndexedDBなどにキャッシュする• プッシュ通知• ホーム画面に登録可能• アプリストアへの登録不要• ネイティブアプリ的なUI/UX
21PWA構成ServiceworkerWebIndexedDBなどWebサーバリクエスト リクエストキャッシュキャッシュされたリソースはオフラインで利用可能
22Web地図をPWA化する際の困難• PWAを動かすためのhtml、javascriptやcssだけでなく、地図タイル画像もキャッシュしなければ、オフラインで動作させることはできない• 全世界の兆レベルの地図画像を全部キャッシュするのは当然現実的ではない• アプリに必要な範囲、あるいはユーザの望む範囲の地図タイルだけ選択してキャッシュするには、アプリ作成者は球面メルカトル座標やWMTS仕様を十分に理解し、必要なタイル画像のリストを作成してキャッシュする必要がある
23Weiwudi – Web地図タイルを扱うためのServiceworkerフレームワークServiceworkerWeb地図APIIndexedDBWeiwudi地図タイルサーバ• URL変換• タイル画像をindexedDBに蓄積タイル画像タイル画像タイルリクエスト タイルリクエスト魏武帝 (Weiwudi)
24Weiwudiがやってくれること• Mをオフライン動作させるために開発した仕組みだが、古地図画像タイルのPWA化だけでなく、普通のWebGISでのWMTSタイル地図のPWA化にも使えるよう設計されている• 単に基本設定をおこなって設置するだけでも、ユーザの表示した範囲の地図タイルは自動でIndexedDBにキャッシュされる• キャッシュされた地図タイルはオフラインで利用可能• ユーザの操作により、経緯度、ズームの範囲を指定して、その範囲のタイルを全て一気にダウンロードしキャッシュできる• キャッシュした画像の一斉解放も可能
25• 現状はラスタタイルのみに対応しているが、原理上ベクタタイルにも対応可能(なはず)ベクタタイル対応はスタイルの扱いなどを調査の上、対応を進める• Mbtilesを使った一括ダウンロードに対応する• Mbtilesは地図タイルを一括処理するための仕様• Mbtiles形式のデータは、既存のGIS市場の中で利用されている資産• Mbtilesデータを読み込み、画像を展開してindexedDBにWeiwudi仕様で格納するserviceworkerがあれば普通に有用次の開発項目: ベクタタイル、Mbtilesを使った一括ダウンロード
26• 全ての地図データをたった1つのファイルでダウンロードできる機能の存在は、商用の有償Web地図を配信するのにとても便利!!!• タイルでの配信のみの場合• 何百、何千枚ものタイル画像ひとつひとつの配信システムに、ユーザごとのアクセス認証を加える必要が生じ、システムが複雑化• さらに表示範囲などでアクセス制御しようとするとさらに複雑化• Mbtilesで配信=>Service workerに蓄積の場合• コンテンツ全てが1つのファイルとなるので、ユーザの認証処理の直後の1つのURLへのアクセス制限だけ考慮すればよく、システムが単純化• 表示範囲の制御なども、表示範囲だけを含むMbtilesを生成すればいいだけなので簡単• 副次効果として、PWAの元々の役割であるオフライン閲覧可能などの利点もWebで地図を単一ファイルで販売できるプラットフォームとして機能できる可能性
利用事例紹介27
28• 線を線に変換する機能を活用• バスロケーションシステム「のってみりん」: 愛知県豊橋市、紹介済み• 文化財の調査や普及、活用に利用• 群馬歴史資料継承ネットワークとの協力活動• 群馬県館林市、「ぷらっと館林」 (Code for History作成) での、館林市石造物調査データの公開• 群馬県佐波郡玉村町、「ぷらっと玉村」 (史料ネットとの協力作成) での、文化財地図の活用• 大阪市東成区での採用• 区の文化財やオープンデータを活用した「ひがしなり街歩きアプリ」公開広がる利用事例
館林市事例: 石造物調査を公開 29URL: https://s.maplat.jp/r/tatebayashimap/
玉村町事例: ぷらっと玉村公開開始 30URL: https://s.maplat.jp/r/tamamuramap/
• 大阪市大 (当時) により街歩きイベント開催東成区事例: ひがしなり街歩きアプリ 31URL: https://higashinari-walk.fun/• 東成区役所による公式サイト© Osaka City Univ.
まとめ32
• Mはその開発を通じて、線を線に変換する技術や、地図タイルのキャッシュ・オフライン利用技術を確立• それらの技術は、Mだけではなく、既存GIS技術での活用もみこまれる• 線を線に変換できるWMTSタイル生成• WMTS地図のオフライン利用、地図有償配信基盤• Mは既存の文化財活用のユースケース、新しい路線図利用のユースケースの双方で、利用例を増やしているまとめ 33
EndUser: kochizufanGithub pages: https://code4history.dev/E-mail: [email protected]Slide: https://speakerdeck.com/kochizufan/geoactivity2021 34