1．はじめに
物理探査の探査測線や海域調査での船舶の航跡など，地質学では地図上にポリライン(折れ線)を表示して扱う機会が多い.ウェブ地図におけるポリライン描画は, MapServer等を用いてサーバサイドで生成した画像を出力するWMS, GeoJSONファイルを使用してクライアントサイドでSVGに変換して描画する手法のいずれかを用いることが多い.屈曲点が多い場合，前者ではサーバの処理負荷が増し高速化は難しい．後者は屈曲点数増加がデータファイルの容量増加に繋がってデータ転送時間が増すとともに，SVG変換処理にも時間を要する．よってこれらの手法でウェブ地図上での大量ポリライン高速描画を実現することは難しい.本件では西岡(2021a)が提唱した点群PNGを改良した新仕様を用い，それをポリライン描画に応用したウェブアプリケーションを開発したのでこれを紹介する.
2.データ
本件では産業技術総合研究所が公開する白嶺丸重磁力データ(石原, 2021)を使用し、点群PNGの最新バージョン0.6(西岡, 2021b)を用いてデータファイル(以下，点群PNGファイルという)を作成し，これを使用した．本件では磁気異常補正値を一切保持しない航海を除いた残りの航海の測定点をデータ化，点群PNGファイルを作成した．航海数は79件，測定点数は5,646,957件である.点群PNGファイルは一つの測定点に対してその位置,磁気異常補正値，航海番号(航海情報を抽出するために新規で付した航海の連番)を保持している．各点は航海別，時系列順でその値をピクセルの色情報に変換して保持している.測定点の情報とは別に航跡描画用の情報として航海ごとに,航海番号,当該航海最初の測定点のインデックス値,測定点数，航跡表示用の色をそれぞれ保持している.
3.アプリケーションの概要
アプリケーションはウェブ地図ライプラリのLeafletを用いて開発しており,測定点と航跡の描画にはWebGLを利用している(図1).アプリケーションはウェブプラウザウインドウ内での地図全域表示を基本とし，画面左にアプリケーション操作のためのパネルを設けている．基本的な操作は全て地図上のマウス操作で完結する.アプリケーションは測定点が保持する位置に基づき，各点を地図上に展開する．測定点の出力色は磁気異常補正値に応じて決定する.デフォルトでは点群PNGファイルに格納されたピクセル色をそのまま出力し，設定により別途用意したカラーパレットを用いた出力に変更する機能を装備する.アプリケーションは測定点だけでなく航跡も描画する.航跡は航海ごとに分割して表示する．陸を横断する航跡が認められるが，これは航海中の回航時における測定がなく，屈曲点が省略されたことに起因すると推察する.測定点は３ピクセル四方の正方形,航跡は幅１ピクセルのポリラインで描画する.測定点をクリックするとその点が保持する地磁気異常補正値とその点を測定した航海に関する情報を表示する.アプリケーションは航跡のクリックにも対応し、航跡クリックの際は当該航海に関する情報を表示する.航海を識別することが可能である利点を活かし，特定の航海のみを抽出してその航跡と保持する磁気異常補正値を表示する機能も装備する(操作パネルから選択する).
4.アプリケーションの解説と動作原理
アプリケーションの動作原理について、WebGLによる
描画処理の概要を述べ，それに基づくアプリケーションの挙動について記述する.
4.1 WebGLによる描画処理の概要
WebGLでの描画は概ね以下の手順で実行される. (1)頂点データの取得本件における頂点とは測定点(航跡の屈曲点)を指す. (2)出力先(フレームバッファ)の指定ディスプレイ(デフォルトのフレームバッファ)に出力するだけでなく，仮想ディスプレイ(別途作成するフレームバッファ)を選択することが可能である. (3)各項点の位置座標をディスプレイ上の座標に変換頂点シェーダ(プログラム)を用意し、取得した頂点の位置座標をディスプレイ表示で用いる座標に変換する. (4)各頂点の出力色の決定フラグメントシェーダ(プロラグム)を用意し，出力する際の点(もしくはポリライン)の色を決定する. (5)出力モード(プリミティブ)の指定WebGLでは点，線，三角形での描画が基本であり，これらを組み合わせて様々な事物を描画する．描画したい事物に応じて出力モードを指定する. (6)出力
指定した出力先と出力モードで演算結果を出力する.
4.2アプリケーションの処理手順
出力処理は地図の拡大・縮小の完了時，地図移動の完了時に実行し、地図が操作されていない時は不要な演算を実行しない．これにより大量の点を描画しているにも関わらす，アプリケーションは軽快に動作する.アプリケーションは最初に頂点(測定点)データを受け取る.受け取ったデータに対してCPUによる前処理を施してGPUに転送し,以降の処理はGPUで実行する. GPUでの処理は以下の流れに沿う(図2) . (1)フレームバッファでの描画その1フレームバッファを作成し，出力モードを点として各頂点を航海番号色で出力，その結果を保存，フレームバッファを破棄する. (2)フレームバッファでの描画その2フレームバッファを作成し、出力モードを線として航海ごとに航跡を航海番号色で一旦出力し、クリックを容易にするため線を拡張する(太くする)処理を施す．得られた結果を保存し、フレームバッファを破棄する. (3)フレームバッファでの描画その3フレームバッファを作成し、出力モードを点として各頂点を地磁気異常補正値色で出力，その結果を保存，フレームバッファを破棄する. (4)航跡出力デフォルトのフレームバッファ(ディスプレイ)に対して出力モードを線にし，航海ごとに航跡を航跡表示色で出力する。 (5)測定点の出力デフォルトのフレームバッファ(ディスプレイ)に対して， (3)の結果を必要に応じて色変換，出力する．最終的にはディスプレイへの出力の他に， (1)各点を航海番号で出力した結果, (2)航跡を航海番号色で出力した結果, (3)各点を磁気異常補正値で出力した結果の３つを得る.地図クリックの際その位置座標を取得し、保存した各結果のどの位置に相当するかを計算する．得られた位置における各結果のピクセル色を調べ,  (1)の結果でピクセル色が非透過であれば点をクリックしたとみなし， (1)と(3)から航海番号と地磁気異常補正値をそれぞれ取得する.  (1)の結果でピクセル色が透過で， (2)の結果でピクセル色が非透過である場合は航跡がクリックされたとみなし，(2)の結果で得られたピクセル色から航海番号を取得する.いずれの出力結果でも当該位置のピクセル色が透過であった場合はデータのない地点がクリックされたとみなす.
5.アプリケーションの意義
本件では560万件を超える点の数にも関わらず各測定点をその値に応じて色付けして出力するとともに，測定点を屈曲点とする航跡を描画することが可能であり，GPUによる並列処理の恩恵を受け軽快な動作を実現している．アプリケーションは描画だけでなく，点やポリラインの属性値を保持し，それらをクリックすることで地磁気異常補正値や航海番号の取得を可能にしている．値の取得にはGPUに転送された頂点データを用いており，別途CPUのメモリ空間に膨大なオプジェクトを保持しておく必要もない.本件の意義は上記の内容にとどまらない．これらの仕組みを応用して点やポリラインに識別子を保持させることで,それらに紐づくデータを別途データベースに保持し，必要に応じてそれらを引き出して表示させることも可能になることが予想できる.
6.おわりに
点群PNGは現在正式公開に向けて仕様調整の最終段階にある。著者らは点群PNGを用いて複数のアプリケーションを開発してその有効性を確認しているが、いずれも試作段階である．今後は実用的なアプリケーションや点群PNGファイルを簡便に扱うことができるライプラリ等を開発して公開し，点群PNGの普及を図りたいと考えている.
文
数
石原丈実(2021)白嶺丸重磁力データ.産総研地質調査総合センター研究資料集, No.714,産総研地質調査総合センター. 2p西岡芳晴(2021a)ウェプアプリケーションで点群を高速に扱うための仕様”点群PNG”の考案.情報地質, vol.32, no.2, pp.39-42. https://doi.org/10.6010/geoinformatics.32.2_39西岡芳晴(2021b)点群PNG. https://gsj-seamless.jp/labs/pcpng/ (確認日2022年５月20日)