2020年のMaplat周辺成果を振り返る (PWAタイルキャッシュ"Weiwudi"、古地図を扱う新概念"HTGCL"など)

この記事は[FOSS4G Advent Calendar 2020](https://qiita.com/advent-calendar/2020/foss4g)の23日目の記事を、27日目が過ぎてから書いているものです。
今年もいくつかのAdvent Calendarに参加して、多くを12/20の週末に書き溜めていたのですが、書き溜められなかったものはやはり次の週末まで書けませんでした。
申し訳ありません。

昨年度は[Maplat Advent Calendar 2019](https://qiita.com/advent-calendar/2019/maplat)と称して全日Maplat関連の記事をAdvent Calendarとして提供させていただいた拙作のオープンソース、古地図ビューアの[Maplat](https://github.com/code4history/Maplat/wiki)ですが、2020年もいくつかの特筆すべき成果がありました。
それを振り返らせていただきたいと思います。

### PWA地図アプリ向けタイルキャッシュservice workerフレームワーク"Weiwudi"
まずはこれまで、FOSS4Gの場では未言及の成果から。
オフラインでもWebアプリをネイティブアプリのように動作させるための仕様として、[PWA (Progressive Web App)](https://www.internetacademy.jp/it/design/homepage/what-is-pwa-functions-merit.html)というものがあります。
このPWAで地図アプリケーションを作る際に、地図タイルのオフライン利用可能なキャッシュを制御し、現在のキャッシュ容量の取得や事前一括ダウンロード、キャッシュ一括削除などができるservice workerのためのフレームワークを作ってみました。

詳細は、先日[PWA Advent Calendar 2020](https://qiita.com/advent-calendar/2020/pwa)で記事を書いてみたので、読んでみてください。

* [PWA地図アプリ向けタイルキャッシュservice workerフレームワーク"Weiwudi"を開発した](https://qiita.com/kochizufan/items/b2fe0dffd326f79cf6be)

私自身が自分事としてはほぼラスタタイルのユースケースしか持っていないので、まだ対応しているのはラスタタイルのみですが、ベクタタイルのユースケースも理解して作りこめば、ほぼそのままベクタタイルのキャッシュフレームワークとしても使えると思います。
ぜひ、ベクタタイルに詳しい方の支援がいただきたいです。

### 古地図を扱う新概念"HTGCL"を提唱
これについては、[FOSS4G Japan 2020 Online](https://www.osgeo.jp/events/foss4g-2020/foss4g-2020-japan-online/foss4g-japan-2020-online-coreday)でも発表させてもらった内容になります。
その際の資料はこちら。

[![thumbnail](https://files.speakerdeck.com/presentations/0ee4febad83b4a81abfc50e9e2878e0e/slide_0.jpg?16665828)](https://speakerdeck.com/kochizufan/foss4g-japan-2020)
[Introduction of HTGCL (Historical Topographic Ground Control Line) - New paradigm of handling historical map in GIS -](https://speakerdeck.com/kochizufan/foss4g-japan-2020)

Maplatの座標変換での新機能で、古地図と現代地図の位置を対応させる際に、線（道路や河川など）を線に対応させるものがあります。
![thumbnail](https://files.speakerdeck.com/presentations/0ee4febad83b4a81abfc50e9e2878e0e/slide_17.jpg?16665845)
従来のGISなどでの座標変換では、古地図と現代地図を対応させる際には、GCP(Ground Control Point)と呼ばれる点と点（たとえば現代地図の交差点と対応する古地図の交差点、など）を対応させて、点と点の間は計算で補完して対応させてきました。
しかしこの点を元に対応付ける方法だと、点と点を結ぶ線などは、中間で座標の対応がズレる場合などが発生してしまいます。

Maplatでは線を線に対応して変換させられるので、このような座標変換ズレは発生しません。
この、古地図座標変換での新しい「対応線」という概念を、対応点の際のGCPになぞらえて、HTGCL(Historical Topographic Ground Control Line)と名付けました。
![thumbnail](https://files.speakerdeck.com/presentations/0ee4febad83b4a81abfc50e9e2878e0e/slide_20.jpg?16665845)

このHTGCLの概念はMaplat関連で現れたものとはいえ、座標変換時の概念なので、それをGISに逆輸入して、昔ながらの古地図をgdalwarpなどでwarpさせてWMTSタイル地図を作るようなプロセスの座標変換にも使えます。

![thumbnail](https://files.speakerdeck.com/presentations/0ee4febad83b4a81abfc50e9e2878e0e/slide_22.jpg?16665845)
HTGCLを用いた古地図画像WMTSタイルとGDALを使ったWMTSタイルを比較したところ、多くの利点が存在することが分かりました。

![thumbnail](https://files.speakerdeck.com/presentations/0ee4febad83b4a81abfc50e9e2878e0e/slide_24.jpg?16665845)
たとえば、左がGDAL、右がHTGCLによる変換ですが、GDALでは道や川がループになってしまったり、地図に穴が空いたりしているのでもわかるように、複雑な変換だと非連続で同相が保てない変換が生じてしまうのに対し、HTGCLだと歪んではいても同相を維持する変換ができていたり、
![thumbnail](https://files.speakerdeck.com/presentations/0ee4febad83b4a81abfc50e9e2878e0e/slide_25.jpg?16665845)
同様に左がGDAL、右がHTGCLによる変換ですが、GDALによる変換では道路が大きく実在の位置とズレて変換されるのに対し、HTGCLだときちんと道路が道路上に変換できていたり、といった点が挙げられます。
この手法を新たな古地図処理のアプローチとして、学会誌などに論文なども寄稿したいと考えています。

このHTGCLによる古地図のWMTS変換機能は、Maplatの古地図データ編集ツールである[MaplatEditor](https://github.com/code4history/MaplatEditor/wiki)に機能としてつけようと思っていますが、残念ながらまだ現在のところ付与できていません（内部的には機能は完成しているのですが、UIがうまく定義できず、公開に二の足を踏んでいます）。
できるだけ早く公開できるようにしますので、公開されればぜひ、gdalwarpなどのオルタナティブとして使ってみてください。

### いくつかのMaplat活用事例が登場
Maplatですが、オープンソースで公開されているものの、多くは私自身がデモ用として公開している「[ぷらっと奈良](https://s.maplat.jp/r/naramap/)」や「[ぷらっと館林](https://s.maplat.jp/r/tatebayashimap/)」などを除いては、採用事例はあまりありませんでした。
が、2020年にはいくつかの採用事例が決定しました（決定までで、登場は来年に回るものもありますが）。

#### ひがしなりまち歩きアプリ
大阪市東成区の街歩き用アプリとして、Maplatが採用されました。
* [「ひがしなりまち歩きアプリ」を公開します](https://www.city.osaka.lg.jp/higashinari/page/0000507330.html)
* [ひがしなりまち歩きアプリ](https://higashinari-walk.fun/)
コンテンツは毎年更新され（2021年も早々に更新予定です）、成長していくアプリケーションになっています。

#### 群馬県館林市、玉村町歴史史料活用アプリ
群馬県館林市、玉村町ながらそれらの市町村ではなく、[ぐんま史料ネット](https://www.facebook.com/GunmaSiryoNet/)の活動の一環としてですが、現地の市町教育委員会の方々なども巻き込みながら、歴史史料調査とその公開の場としてのMaplatアプリを作成予定です。
玉村町のMaplatは存在しないため、新たに作る予定ですが、館林に関しては、「ぷらっと館林」がすでにある程度の知名度を得ているので、ぷらっと館林の中で調査成果が公開される予定です。
2021年3月ごろの公開予定で、こちらも年々成果が成長する予定ですので、お楽しみに。

#### MaaSアプリでの採用予定
まだ完全には決まっていないため具体的案件は出せませんが、複数の街のMaaSアプリの地図UIとして、Maplatが採用される可能性があります。
また詳細を明かしてよくなれば、続報します。

=============================
2021年もMaplatは躍進を続けたいと思いますので、ぜひ注目していただければと思います。