Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

国連ベクトルタイルツールキットについての理解 20200924 #22

Open
hfu opened this issue Sep 24, 2020 · 8 comments
Open
Labels
ja 日本語 / in Japanese language

Comments

@hfu
Copy link
Member

hfu commented Sep 24, 2020

UNVT を用いたベクトルタイル運用について

  • 国連ベクトルタイルツールキットは、ベクトルタイルの生産(produce)、提供(host)、図式(style)、最適化(optimize)を取り扱うもの。生産・提供・図式・最適化という4要素は定訳ではなくて揺らいでいるが、produce, host, style, optimize の4要素は概念として安定している。ここでは、この4要素を一つにまとめて運用と言うことにする。
  • 運用の基本的な流れは、下図のとおりである。

  • ソースデータ、ベクトルタイル、ウェブ地図それぞれのコンテンツの持ち方は標準化されている。ベクトルタイル設計情報とベクトルタイル描画情報について、UNVT のオリジナリティが混入する余地がある。
  • 個々のソースのデータ仕様・レイヤ構造に基づいてベクトルタイル生産プログラムの入力(GeoJSON のストリームで、GeoJSON Text Sequence という名前で標準化されているもの)としていく処理は、個別に JavaScript または Ruby のプログラムをカスタマイズする。
  • これまでの経験に基づけば、少なくとも開発途上国での能力構築では、ソースデータのレイヤ構造をなるべく忠実にベクトルタイル設計に反映することが有利である。
  • 描画情報についても、可視化具合の要望や目的によって個別に検討することになる。他方で、描画情報のフォーマットは Mapbox Style に事実上標準化されている。
  • 特に地形図の描画情報は複雑かつ多量であり、数千行のファイルになる。この数千行のファイルを手作業で作成するのは困難であるから、Human-Optimized Congfiguration Object Notation (HOCON) というフォーマットを活用して、より安全かつ効率的に管理するノウハウを UNVT では持っている。
  • UNVTで使用する主要な地理空間情報ソフトウェアは5~6種類で、すべて既存のオープンソースソフトウェアである。(下図のとおり、実際は 7 種類であった。地理空間情報に特化していないソフトウェアまで含めたフルセットの内容については、https://github.com/unvt/equinox を参照いただきたい。)

  • タイル生成範囲は osmium コマンドのパラメータで矩形またはポリゴンを指定して行った例がある。
  • 複数のデータソースを一括変換したり、図郭などの地域ごとに生成したタイルセット(mbtiles ファイル)をコマンドまたはサーバ側で結合して、図郭単位に分割されたジオデータベースから、図郭の継ぎ目をつないだベクトルタイルセットを作るノウハウも持っている。

システム関連

  • Raspberry Pi を用いて能力構築を試みているところであるが、Windows やエンタープライズ Linux が導入されたマシンでのUNVT作業環境構築は、セキュリティソフトとの相性やライブラリの互換性等解決しなければならない課題が多い。Raspberry Pi 4B を用いれば共有された実績に乗ることができ、現実的な時間制約の中で確実に導入することができる。
  • Leaflet 等によるウェブ地図ポータルすでに稼働しているサーバがあれば、UNVT で生成したベクトルタイルをホストするために特段サーバ上の設定を変える必要はない。

ベクトルタイルのメリット

  • 画像タイルに比べて軽量であり、回線の帯域やサーバのストレージを節約できるので、事業コストの削減と事業ループのスリム化がはかれる。
  • この結果、ウェブ地図コンテンツの迅速で効率的な更新が可能となる。
  • UNVTであれば、RaspberryPi と WiFiがあれば場所を選ばずベクトルタイル運用(生産、提供、図式、最適化)が可能である。この特徴が生き、かつ既存システムが対応していないユースケースを見つけることは有効。
  • スタイル設定を変更することで、適切な属性があれば多言語の切り替え表示などが可能となる。複数の文字体系を持っている国の政府方針との整合性などを訴求価値にできる可能性がある。

今後の能力構築に向けて

  • 日本人専門家チームは、相手国への渡航再開までに、@hfu が作成している UNVT のテキスト 等によりベクトルタイル生成作業手法を習得することを試みることができる。習得に必要な時間は20時間程度と見込まれる。
  • Githubのアカウントがあれば、適切な情報管理のもとで Github 上での共同作業やテストが可能となる。
  • 必要に応じて、オンラインによる勉強会、実技講習の開催を検討する。
  • 日本人専門家チームは、技術指導のため、オペレーション・マニュアル等のトレーニング・マテリアルを作成できる。
  • 渡航再開後、カウンターパートにベクトルタイルおよびUNVTの概要とメリットを説明し、UNVT導入の合意を得ることが考えられる。
  • 渡航再開後、早期にカウンターパート機関での本格的なトレーニングを実施したい。
@john1-1
Copy link

john1-1 commented Sep 25, 2020

ありがとうございます。最後の1行は変換ミスと思われます。
→渡航再開後、早期にカウンターパート機関での本格的なトレーニングを実施したい。

@hfu
Copy link
Member Author

hfu commented Sep 25, 2020

@john1-1 ご指摘通り、変換ミスでした。ご提案通り原文を修正しました。ご指摘ありがとうございました。

@hfu hfu added the ja 日本語 / in Japanese language label Sep 25, 2020
@JinIgarashi
Copy link
Member

@hfu UNVTについていまひとつ私は理解できていないのですが、UNVTのオーガニゼーションの下にあるリポジトリがそれぞれどの役割を持っているのか、ちゃんとわかるようなドキュメントが必要と思います。
今回ルワンダ全国のParcelsデータのタイル化をした際にUNVTの仕組みを使えば簡単にできるかなと思いましたが、そもそもツールを使い始めるためのスタート地点がどこかがよく分からず断念しました。
どこかに初めから最後までのステップを省略せずにまとめたチュートリアルなどはあるのでしょうか?

あとUNVTを分かりにくくしているのはリポジトリの名前もあるのかと思います。これは@hfuのこだわりなのかもしれませんが、本当に広く普及させたいなら英語でわかりやすい名前をつけるべきです。新参者には全てのリポジトリが暗号のように見えます。

@hfu
Copy link
Member Author

hfu commented Sep 25, 2020

@JinIgarashi ありがとうございます。ドキュメントの不足はご指摘のとおりと思っております。他方で、ドキュメントの充実における私の能力は非常に頼りない、とここ3年にわたり痛感しているところです。

一つには、 UNVT 自身が継続的に改善されているものであることから、また一つには、UNVT の実施においては多様なソースデータ、多様な配備先環境に合わせて UNVT 自身が融通無碍に変化する必要があることから、パッケージとして UNVT が固まるということは当面はないのかもしれないと思っています。特定のソフトウェアパッケージとしてとりまとめ、そのパッケージの活用を推進することを目的とするプレイヤーが少なくとも現在は存在しない、というのが私の現状認識です。

初めから最後までのステップを省略せずにまとめたチュートリアルは、存在しないと理解しています。それに多少近いのが unvt/washi#1 だと思いますが、これ自身もここ半年、ここ一年で subject to change です。

レポジトリ名が分かりにくいというのもご指摘通りだと思います。要因の一つは、「レポジトリを作るとき、作っている私自身がこのレポジトリがどうなるか分からない」ということです。

内容を具体的に示す名前をつけようとすると、内容をあらかじめ整理しなければなりませんが、内容をあらかじめ整理するというアプローチを藤村はとれずにおります。また、あまり意味のある名前をつけてしまうと、something の改良版として something2 のような名前をつけなければならず、まさに私のこだわりとして、そういった名前を意図的に回避しているというところがあります。

ある意味、現時点において、私自身は「本当に広く普及させたい」という思いを持っていないということかもしれません。あらゆる新参の方に、レポジトリの名前を見れば分かるようにプロジェクトを設計する能力を、藤村は持っていません。私自身が持っている個別具体のプロジェクトを回しながら、共有できるものを共有している、というのが実態だと思います。

新参の方がいらっしゃって、具体的に UNVT で何かを実施したいとお考えの場合には、現時点では「このドキュメントを読め」というご案内ではなく「どういうことをなさりたいのか伺う」というアプローチをとると思います。

技術論としては、いま本格的なドキュメントを整理しようとすると、作るはじから陳腐化してしまうだろうということを恐れています。

また、汎用性のある唯一の UNVT を作る、ということは手に余ることから、今後も、例えば依拠する計算機環境に応じて、複数の UNVT パッケージが作られ、維持され、ユーザがいなくなればそのいくつかは消えていくということを予想しています。

とはいえ、何らか具体的な研修員層に対して、何らか具体的な能力構築を行う、という機会を捉えてドキュメントを作っていきたいと思います。

「UNVTのオーガニゼーションの下にあるリポジトリがそれぞれどの役割を持っているのか」について、ちょっと書いてみますね:

unvt レポジトリそれぞれの役割

現在主要なもの

  • pm: プロジェクト管理用のレポジトリ
  • washi: 地理空間情報当局での能力構築を想定したドキュメント
  • equinox: Raspberry Pi OS のための UNVT インストーラ
  • nanban: Docker に UNVT を導入するための Dockerfile
  • naru: osm.pbf ファイルのためのベクトルタイル設計ファイルとベクトルタイル図式ファイル

その他のレポジトリを少し見てみましたが、作った私からみても、現在において説明するに値しないレポジトリであるように認識しています。

@JinIgarashi
Copy link
Member

@hfu ありがとうございました。まだツールとして発展途上でドキュメント整備が難しい点理解しました。まずは藤村さんが色々なデータソースから作っていると思われるoptgeoの中のリポジトリについて今後新しく作る際に、どういった手順で実行していったのか、きちんと残していくというのはどうでしょうか?

そうすることによって、将来的に例えば

  • シェープファイルのデータソースの場合はこのリポジトリのREADMEが参考になる
  • PostGISの場合はこのリポジトリ
  • ・・・
    みたいにリンク集を作れば、それだけでも、UNVTツールを使いたい人にとっては理解を促進させるものになると思います。
    現状のoptgeoのリポジトリは作成した結果しかなく、その過程がないので、UNVTでどこまでできて、どこからは自分でやらないといけないのかが見えないです。

名前が大事と思ったのは、この前mapbox-gl-jsのドキュメントにPR出した時に、Mapboxの人に名前と実態があってないのがあるからと言われたことがきっかけでした。

@hfu
Copy link
Member Author

hfu commented Sep 25, 2020

@JinIgarashi ありがとうございます。

ドキュメントよりも作業のほうに適性がある私のような人間にとって、ご指摘の通り「作業をしながら記録を残していく」というのは有望な方法のような気がします。

記録を残すにあたり、スクリーンショットを気軽に貼り込めるという点で GitHub Issues を使うのが良さそうだと思っています。

スウェーデンのベクトルタイル 作成については、リンク先のような形でドキュメントを書いています。
optgeo/terrangkartan-vektor#1

書き方にはまだ工夫の余地がありそうです。またヒントをいただければ嬉しいです。

ベクトルタイルの設計情報や描画情報を作るにあたって、どのような過程をとることを勧められるか、見えてきたあたりでドキュメントをうまく作っていければと思いました。

広く普及させる段階では、名前は特に重要ですね。広く普及させるに足るパッケージを作り出せた際には、良い名前を考えたいと思います。

引き続きよろしくお願いします。

@JinIgarashi
Copy link
Member

@hfu スウェーデンのベクトルタイル生成の手順書すごくいいですね。後でちゃんと手順追って、UNVTを理解できるようにしたいです。

私も水道ベクトルタイルで作ったツールとかについてドキュメントに少しずつまとめています。
https://docs.water-gis.com

hugoのLearnというテーマを使って作っているのですが、スクリーンショットから直接イメージは貼れませんが、marmeidを使ってマークダウンでシーケンス図とかフロー図とかかけるので、すごく便利です。
Github Actionsでプッシュされたホームページをビルドするようにしたので、ちょっとした更新ならGithubのブラウザ上で簡単にできます。

@hfu
Copy link
Member Author

hfu commented Sep 26, 2020

@JinIgarashi ありがとうございます。https://docs.water-gis.com/en/ 素晴らしいですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ja 日本語 / in Japanese language
Projects
None yet
Development

No branches or pull requests

3 participants