玄天黄地

学生時代、箸にも棒にも掛からなかったアホの子が、やっと普通のアホになれるか?

道路地図のベクトルタイル

まえおき

 この記事は、

qiita.com用の記事です。


昨年までの状況

 私は道路地図を作る財団で仕事をしています。私が今の職場に来たのは 2020年ですが、この団体は 1988年から仕事をしていますので、今の目で見るとやや Old Fashined な部分はあります。

 現在のデジタル道路地図データは、あの頃に設計されたもので、

  1. 道路のネットワーク構造をグラフで表現する
  2. グラフは、一次元複体と論理的に同等な図形に、属性値を持たせたものとする
  3. GIS が高価な時代だったので、大型計算機でバッチ編集できるような固定長の書式を採用する
  4. 当時の計算機のメモリ空間が貧弱だったので、極力切り詰めた書式とする

のような考え方でした。令和の現在の視点で見ると時代遅れですが、あの頃の計算機環境を考えると画期的だったと思います(今、このことを誇りたいのではなく、単に先人の悪口を言いたくないだけです)。なんせ、GIS を導入しようとしたらハードウェアとソフトウェアのそれぞれにベンツ1台分とか掛かった時代です。パソコンはようやく i80386 が登場した頃で、クロック周波数はまだ12MHzとか、メモリ空間も数MBytes しかない時代、GIS を動かしたければスペック・価格とも1桁上の WS を買わなければならない時代でした。

 これを、曲がりなりにも30年以上にわたって維持管理してきたわけです。システム寿命が30年あるってそこそこ偉いと思います。

ーーー

 そのような時代のデータですので、これまではオフラインでCD-ROM等に格納して提供してきました。昭和の頃はパソコンに装着可能な安価な CD-ROM ライターはまだありませんから、当時は多分 MT 渡しだったのだろうと思います(調べていません)。

 当然、このやり方では令和の時代になじみません(というか、平成中期には既にメインストリームから外れつつあったと思います)。

 昨年のこの記事では、なので、ウチの DB を PostGIS に格納してみる、という記事を書いたのでした。

今年の状況

 さて、PostGIS への格納と、それをリモート接続した QGIS からアクセスすることには、今年初春には既に成功していました。データ量がギガバイトまでいかないおかげで、アクセスもストレスなくできています。
 しかし、ウチのDBを利用してくれている顧客の大半は、QGIS が使えません。QGIS 自体は短いものなら半日、少し長くても3日程度の研修で最低限の操作ができるようになりますが、それは昭和の時代のワープロ研修と同じで、覚える気持ち満々の人だけに当てはまる話です。
 また、PostGIS でネット越しにデータアクセスをしようと思うと、クライアント側でポートを開放する必要が出てきます。実は、これはセキュリティ管理者の立場ではあまり嬉しくありません。なによりも、セキュリティ管理者が GIS に理解がなければ、そもそもポートの開放を認めたりはしないと思います。

 

ベクトルタイルへ

 ところで、QGIS の比較的新しいバージョンでは、地理院地図ベクトルタイルに直接接続ができます。Mapbox の ver.1 で .pbf に変換したデータであれば、正しく url を入れれば読み込むことができるわけです。

 ウチのデータは、論理的互換性を維持したままで、shapefile に変換することはできました(顧客の中には shapefile 形式で欲しいと言ってくるところがそこそこあります)。もともと、道路網をモデル化すれば一次元複体を採用するのは自然なので、データ形式shapefile と相性の良いモデルになるのは当然だとも言えます。

 であれば、うちのデータも .pbf に変換してネットアクセスできるようにすればいいのではないか。こう思い至ったのが9月のことでした。

 

 ベクトルタイルになった地理院地図を QGIS でアクセスしてみて分かったことは、

  1. ポートが開いていなくてもアクセスできる
  2. 基本的に readonly なので、サーバ側もクライアント側もセキュリティを維持しやすい
  3. shapefilePostGIS とは異なり、レイヤを初心者が簡単にはローカル保存できない(つまり、不正コピーを作るのがそれだけ難しい)

というような特徴があることです。QGIS もビュワーとしては使えるが、編集やローカル保存ができない形で公開できるということですね。

 これ、著作権を放棄せず、有償で見せているデータについて、単に閲覧に供するためだけの保持の仕方としては結構使えるのではないかと思いました。言い換えると、利用者に特別な利用権限付加の動作がいらないということです。

 これでは再利用が難しいという声はあるかも知れませんが、再利用したい方(それなりに再利用に必要なスキルを持っておられる方)には、従来通り有償で加工しやすい書式で提供すれば良いだけのことです。これまでは、そういう方には、昭和以来の固定長書式ファイルの他に、shapefile でも提供してきましたが、今後はアクセス権限を設定して PostGIS へのアクセスも認めるようなことも考えられます。

 

ベクトルタイルのビュワー

 ベクトルタイルを見る場合は、QGIS 以外のビュワーがある方が便利です。

 多くの人に(権限を気にせずに)見てもらおうと思うならば、地理院地図と同様にウェブサイトから見えることがもっとも自然です。幸い、地理院地図Vector のサイトは fork 可能ですので、これを fork して、デフォルトで最初にアクセスする .pbf の url をウチのベクトルタイルになるように調整することとしました。地理院地図が「他機関の情報」として「著作権を尊重しつつ他機関の情報も閲覧下さい」としていることと、本質的には同じことです。ですので、(2021.12.11 時点ではまだ公開していない)ウチのサイトも、地理院地図(ベクタだったり、ラスタだったり)を重ね合わせ表示できるように作ろうと思っています。地理院地図タイルが比較的オープンなライセンスを採用してくれているので、こういうことが合法的に実行できます。

 

API

 本家の地理院地図の場合、サイトの画面の右上にドロップダウンメニューがあって、そこから「距離計測」とか「簡易作図」のような機能を呼び出すことができます。

 デジタル道路の場合、道路管理者だけが必要とするようないくつかの機能を実装する必要が出てきます。これらの機能は、DB に対する API として実装することになるわけですが、ビュワーが Webサイトなので、WebAPI として実装し、機能は場合によってはサイトのドロップダウンメニューから「距離計測」等の同等の UI で呼び出せるようにするのが良いだろうと考えています。

 このあたりは、想定利用者のスキルレベルを低めに設定して(QGIS をすぐには理解できないような人たちだと見なして)考えています。

 地理院地図にもない機能として、3年前と現在で道路網の形状が異なる(新設された道路があって、グラフ構造として対応の付かない場所がある)場合であっても、正しく対応が取れることを保証するための API を、データ構造付き(付加情報を設計する)で用意しようと考えています。これは実は結構大がかりな作業で、これがあるためにこの記事を書いている時点でまだお見せできるサイトが存在しないのです。このあたりも、昭和期に初期設計をした時点ではハードルが高すぎて実装できなかったのだろうな、と思っています。

 

ベース・レジストリとして?

 ベース・レジストリとして考えた場合、データの修正要求は誰でも提出できると思いますが、データの修正権限は限られた一部の人にのみ与えられることになります。仮に、性善説に立って、悪意ある修正要求が出てこないものと考えても、善意+誤解による誤った修正要求が出てくることには対応が必要で、それを提出者の責任に帰すのは無理です。ベース・レジストリWiki 系のデータとは、そこが決定的に異なると考えます。

 ウチのデータは、これからはベース・レジストリ的な方向に向かうと考えています。ただ、こちらも道は平坦ではなく、公証性を求められることも将来は想定しなければなりませんし、網羅性や即時性(情報セキュリティ的には可用性と完全性)をどこまで保証できるのか(現時点では最高レベルではないので)といった課題も解決が求められるようになるのかな、と思っています。

 

 ベクトルタイルの採用は、ベース・レジストリを目指す(かもしれない)レベルのデータが、著作権を維持したままで高みを目指す基本的なツールになりそうだと考えています。ウチのシステムは、これまで30年以上も安定運用してきました。これからも何十年か安定運用を続けるために、最先端の技術ではなく、少し枯れた技術を確実に導入して行きたいと、情弱な私は考えています。

 

このあと

 このサイト(Qiita ではなく、私のはてなブログ)で過去記事として書いているように、一次元複体として記述している道路のネットワーク構造から、車線別構造を自然に定義したいと思っています。

 ISO/TC204 では、GDF5.1 が既に International Standard になっており、現在は GDF6.0 が検討フェーズに入っています。しかし、ISO/TC211 から見た場合、必ずしもベストな書き方になっていないかも知れない、として指摘も頂いている状況です。

 私の中では、この問題はアイデアレベルでは解決済みで、

  1. 道路網が一次元複体の構造を持つこと自体は多くの人が認めている
  2. 自動車道に限定すれば、その一次元複体は一回連続微分可能であるという仮定を付加しても問題ない
  3. すると、道路網は単連結ではない一次元多様体の構造を持つ、とも言える
  4. 微分多様体なので、至る所に管状近傍が定義できる(定義可能範囲は、大雑把に言って、道路の最小曲率半径以内のエリアである)
  5. この管状近傍の概念を使えば、車線は元の道路網と数学的に整合する形で定義できる(誰もまだやっていないようだが)
  6. 道路中心線が基本となる多様体で、車線境界は法ベクトルバンドル(道路の言葉で言う「横断面」)の滑かな切断として与えられる。
  7. 車線の分岐合流は、車線を二次元の位相多様体と見て、接着写像で与える

ということを定式化(ISO/TC204の言葉で記述)すれば良いのだろう、と思っています。ただ、私の数学力と根気では、構想倒れに終わる可能性も高そうです。

 

 それより前に、DB の原本を PostGIS に移行して、編集もその上で GIS で行えるようにする方が先かな、と考えます。昭和のレガシーを、当時の人の偉業はたたえつつも、今の手法に地道に置き換えることがより重要なわけですね。

今更、作用素を持つ群

浅野・永尾、「群論」、岩波全書 は学生時代の標準教科書だった。
当時の教官は、学科が推奨する教科書に関係なく、4月にいきなり有限群の表現論の話を始め、勇気ある学生が「先生、教科書のどのあたりか分かりません」と質問したときに「あ、多分第6章ね」とあっさり仰って、学生が半減期1週間で崩壊、250人は入れそうな大講義室に満員だった筈が6月には20名もいないくらいに閑散とし、前期試験の合格者は1名だけだった(あと、7人に追試が許されたはず)。アホの子の私は5月中に脱落したような気がする。

まあ、私が箸にも棒にもかからないアホだった話はこれくらいにするが、以下の記述もそういうアホの子が書いているので、内容がアホであることは容赦願いたい。

上記「群論」は、第3章で作用素を持つ群、第5章で作用素が群であるような集合を扱う。長い間両者の関係が分かっていなかった。(アホや)

重要なのは、もちろん、集合上の作用素群である。ただ、群の理解が十分ではない初学者には難しすぎる。で、

  • 任意の集合には、自己写像が定義できる
  • 自己写像写像の合成に関して結合法則を満たすならば、自己写像全体は半群をなす
  • 自己写像全体の集合は群をなすとは限らない
  • 自己写像全体の集合の中に、群をなす部分集合があるならば、その群についてのみ議論を進めることには意義がある
  • 自己同形写像全体の集合は群をなす
  • 群の自己写像全体の集合は、必ず半群をなす
  • 従って、群の自己写像全体の集合から、群をなす部分集合を見つけることは容易
  • この「自己写像全体の集合の中にある、群をなす部分集合」が作用素群である
  • 作用素群を使って、群の性質を解き明かしているのが第3章
  • 可換群の場合には、もう少し進んだ結果が得られる、と解説しているのが第4章
  • 作用素群を、群ではなく一般の集合に施す、と言っているのが第5章の第1節
  • 作用素群を持つ一般の集合」の話は広すぎるが、「広い」とは書いていない(自力で解れ、と暗に言っている ← 長らく気づけなかったアホの子)
  • 第5章は、それ以降は作用素群の話は明には登場せず、有限群の基本的な性質の話に移ってしまう
  • 作用素群を持つ一般の集合」の話は、他の教科書(例えば、位相空間の自己同相写像とか、ヒルベルト空間上のフーリエ変換とか)に、アホには分からないように登場している

 というようなことのようだ。

最近やっと、こういう理解が言語化できるようになった。

言語化できたことを以て、箸にも棒にもかからないアホから、普通のアホに昇格できたと思ってもいいかなぁ。

管状近傍

ジオイド面を R3 に埋め込まれた球面と同相な二次元多様体と見て鉛直線を法バンドルと見た時、標高が -10mより高く、かつ、+10mより低いようなエリアを考えると、これがジオイド面の管状近傍になる。

これは物理屋や測量屋にとっては比較的分かりやすい話なのだが、数学書はもちろんこんな身近な例を書いてくれない(特に昔の数学書は)。

 

ベルトモデル(再3

管状近傍とベルトモデル

 

23日の記事の続き。服部先生の『多様体』(岩波全書)の第6章冒頭の記述を、道路向けに書き直してみたら、こうなった。 元の記述は、任意の次元で成立するように書かれていますが、道路の話なので、二次元多様体(地表面もしくは道路面)に埋め込まれた一次元多様体(道路中心線)を想定して書いています。

(括弧書きは、元の教科書にない記述です)

 

ーーーー

 

 R2(地表面もしくは道路面)の中の1次元部分多様体M(道路中心線に相当)を考えよう。x∈Mに対してTxM(道路中心線の接線方向、いわゆる縦断方向)のRにおける直交補空間をTxM(いわゆる横断方向)とする。M上で定義された正の値をとる連続な関数ε(x)を適当にとり、,

Vx={x+vv∈TxM,‖v‖≦ε(x)}

とおく。ε(x)をうまくとれば(Mが道路中心線の場合は、一般自動車の最小回転半径を下回らない範囲で曲率半径が設定されるはずであるので、ε(x)として道路の設計曲率半径をとればよい)、x≠yなる x,y に対してVx∩Vy=∅となることが予想される。この予想は実際に成立することが証明される(不成立なら、曲率半径がもっと短いことになる)。

 V=∪x∈MVx⊂R2は、R2におけるMの近傍である。

 

 一方、Mの法ベクトルバンドルN(M)は、TR2|M(地表面もしくは道路面の全ての接線で張られる面のうち、接点が道路中心線上あるものに限定したものに相当)の部分バンドル

TM={v∈TxR2|M | v∈TxM

と同一視された。上の関数ε:M→Rに対して、

TM(ε) ={v∈TxR2|M | v∈TxM,‖v‖≦ε(x)}

とおくと、TM(ε) とVとは vx+v により1対1に対応する。これは、x≠yに対してVx∩Vy=∅ であったからである。いわば、VはMの法バンドルをMのR2における近傍として実現したものと考えられる。

 このような近傍Vを部分多様体Mの管状近傍という(Vは道路中心線Mに対応するベルトモデルとなる)。

 任意の C多様体N の C部分多様体M に対して管状近傍が存在し、しかも本質的には一意であることは、管状近傍定理で保証される。したがって、道路中心線の位置に多少の誤差があったとしても、実際の道路区域を対応する管状近傍として定式化する場合に一意性が保障されるので、道路中心線(一次元多様体であって一次元複体)と実際の道路区域(ベルトモデル)とは一意的に対応するのである。

 また、道路中心線に対して3次元の管状近傍を考えるならば、それは道床+路面上空間を含むようなトンネル状の空間として得られるであろう。路面で区切った縁付きの多様体は、自動車通行可能な3次元チューブとして得られるのである。

ベルトモデル(再2

道路中心線の最小曲率半径は、普通自動車の最小回転半径よりも小さくならないので、道路中心線を道路面に(多様体として)埋め込んだ場合に得られる管状近傍の定義範囲(法バンドル方向の長さの下限)は下に有界な値が取れる。前回の記事は、このことを書きました。

 

すなわち、管状近傍の定義可能範囲は道路縁の多少外側まで広がっているということになります。(道の駅とか高速道路の SA など、例外はあり得ますので、そのような場合をどうするかは別途考えなければなりませんが)。

当面、上記括弧書きのような例外を除外して考えることとすれば、道路縁のすぐ外側にある道路標識などについても、その立地地点が道路中心線の管状近傍に含まれますので、道路中心線の接空間を x軸、道路中心線の法バンドル方向を y軸として一意的な座標値で表現できることになります。

 

管状近傍の存在は、道路中心線が(自動車道であるため)1次元の可微分多様体で表現できることが本質です。これが徒歩道だった場合は、道路中心線は可微分性が保証されないところでした。

現実のデジタル道路は、折れ線近似で表現されており、全域で可微分性が保証されているわけではありません(離散化の宿命)。しかし、ある道路区間を(p0, p1, ・・・, pN-1, pN)のように N+1 個の点列で近似した場合、p1 から pN-1 までの区間については、その区間と前後の隣接区間から外接円が2つ定義でき、それらの曲率半径の逆数を内分することで適当な曲率を設定することができます。実際には、曲率半径があらかじめ定めた上限値を超えた場合は、∞とみなすこととすれば良いでしょう。

 

半年前に書いていたベルトモデルは、私が管状近傍という概念を理解していなかったために、まどろっこしい記述になっていましたが、本質的には同じことでした。

ベルトモデル(再

自動車道のベルトモデルについての話を半年ぶりに書きます。

 

前回までは、道路中心線を1次元の多様体(至る所滑かな一次元複体)だと見て、その多様体上の各点で法線バンドルを考え、その法線が有限の長さになるようにすれば、道路面を2次元多様体で表現できるはず、と書きました。

 

道路中心線を含む(が埋め込まれている)2次元多様体としては、地表面を考えるのが最も自然ですが、立体交差をどう扱うかは少し面倒でした。代わりに、3次元空間に埋め込まれている連結な2次元多様体(ただし単連結ではない)に道路中心線が埋め込まれているものとします。この2次元多様体は、法バンドルとして鉛直線方向を持つことができます(鉛直線方向は、常に路面とは横断正則性を持つ)。

 

道路中心線は、徒歩道とは異なり、最小曲率半径に下限を持たせることができます。その下限は、普通乗用車の最小回転半径と同等以上の値を取るはずです。このような道路中心線は、2次元多様体内で管状近傍を持つことができ、現実の道路縁をこの管状近傍の内側に取ることができます。すなわち、路面は道路中心線の管状近傍と同一視できます。

 

この管状近傍を自動車道のベルトモデルとして考えれば、道路中心線はベルトモデルの射影になるので、位相が整合的であると考えることができます。

というよりも、今まで私があほだっただけで、この考え方以外にベルトモデルをすっきり定式化することはないと思われます。

 

以前のモデルへの疑問(メモ)

内部メモですので、殆どの方には意味をなさないと思います。



▽単なるポリゴンとベルトとを区別するものは何か?

・セマンティックには明らかだが、数学的なモデルとしてどのように記述をすればその違いが明示できるのか。

・図示したら分かるというのは論外。それでは大量のデータを計算機処理する、ということには全く無力である。

 

▽ターミナルラインは、本当は、自動車が領域内に入ってくるものと出て行くものとを区別できなければならないのではないか。

・2つのベルト A, B がターミナルラインを共有しているものとして、A を構成するターミナルラインは「出て行く」属性を持っているならば、B を構成するターミナルラインは「入ってくる」属性を持っていなければならない。(でなければ、車はターミナルラインを越えてとなりのベルトへ移動できない)

・ターミナルラインの属性を二値でしっかり表現して、隣接ベルト間の出入りの関係をしっかり記述できなければ、隣接ベルトの接続エラーが確認できないのではないか。

 

▽交差点のように、3本以上のターミナルラインが含まれるようなベルトにおいては、どこから入ってどこから出て行くかという「通過交通」の組み合わせが、実際の通行可能方向と一致しない場合があるのではないか。

・具体的には、中央分離帯付き上下線の十字路においては、8本のターミナルラインが含まれるようなポリゴンとして交差点が形成されるが、機械的に「入る」と「出る」の組み合わせを考えると、直進、左折、右折、Uターンの4通りの通行形態が4方向について考えることができる。実際の交差点は、右左折禁止とか転回禁止のような制限が設けられていることが多いが、それを表現する方法がないのであれば、実用的とは言いがたいのではないか。

 

▽サイドラインは、自動車が横断することを許すのか、許さないのか。

・車線境界としてのサイドラインであれば、自動車の横断は許される(車線変更として)。

・道路縁としてのサイドラインであれば、自動車の横断は原則許されない。

・これらの区別を表現する方法が示されていないので、実用性が不十分なのではないか。

・サイドラインの向こう側が路側帯だったり導流帯だったり非常駐車帯だったりする場合も、同様に困るのではないか。