2021/12/13公開
 点群PNG(Point Cloud PNG)とは,画像フォーマットであるPNG形式を利用してポイントデータを扱うためのフォーマットです.
 ここで扱うポイントデータは,2次元または3次元の位置座標を持つもので,それらに関連付けられる付加情報を含みます.
 点群PNGはリストPNG ver. 0.2の派生フォーマットです.

ファイルフォーマット

 ファイルフォーマットはウェブブラウザーで一般的に利用できる画像フォーマットであるPNG(Portable Network Graphics, ISO/IEC 15948:2004)を使用し,PNGのカラータイプはRGBが利用できる以下のいずれかを使用します.

データ型

 点群PNGでは数値データをピクセルに変換して使用します.仕様上定義されるデータ型には以下の5種類があるほか,ユーザーカラムでは任意のデータ型を使用できます.
データ型ピクセル数
RGB1ピクセル
符号無し整数24ビット符号無し整数1ピクセル
48ビット符号無し整数2ピクセル
符号付き整数24ビット符号付き整数1ピクセル
48ビット符号付き整数2ピクセル
※このデータ型は画像ファイルとの入出力で使用するものです.RGBと整数のみですが,後述するように利用時に係数やオフセットを使用するので実際には小数も扱えます.
 RGBは,ピクセルをそのまま色として取得します
 24ビット符号無し整数では,1ピクセルのRGB値(r,g,b)から以下の式で値(v)を取得します.
v=216r+ 28g+b
 48ビット符号無し整数では,2つのピクセルのRGB値,第1ピクセル(r1,g1,b1)及び第2ピクセル(r2,g2,b2)から以下の式で値(v)を取得します.
v= 240r1+ 232g1+ 224b1+ 216r2+ 28g2+ b2
 24ビット符号付き整数では,1ピクセルのRGB値(r,g,b)から以下の式で値(v)を取得します.
r'= { r, (r<27) r-28, (r27)
v=216r'+ 28g+b
 48ビット符号付き整数では,2つのピクセルのRGB値,第1ピクセル(r1,g1,b1)及び第2ピクセル(r2,g2,b2)から以下の式で値(v)を取得します.
r1'= { r1, (r1<27) r1-28, (r127)
v= 240r1'+ 232g1+ 224b1+ 216r2+ 28g2+ b2
 不透明度を使用する場合は255(最大)を指定することを推奨します.不透明度に0が指定された場合,そのピクセルを含むデータは無効値として扱います.

ピクセルの配置

 数値データを表す各ピクセルは画像内に通常のラスタースキャン順に配置します.すなわち,画像の左上端から開始してまず右方向へ配置し,右端に達したら1行下の左端に移動してまた右方向へ配置します.これを配置するデータが無くなるまで繰り返します.
 画像の末端部で配置するデータが存在しないピクセルの色は規定しません.

データ構造

 配置する情報はヘッダーとポイント情報からなり,この順で配置します.
 ヘッダーに使用するピクセル数は可変で,これをヘッダー長と呼びます.
 各ポイント情報は概念的には1つの固定長レコードで表現され,ポイント情報内の個々の数値データをカラムと呼びます.なお実際には,ポイント情報はカラム毎にデータを保存します.
 また,ポイントの数量をレコード数と呼びます.

ヘッダー

 点群PNGメインファイルのヘッダーでは,データのタイプ,ヘッダー長,レコード数,カラム数,カラム定義,点群PNGのサブタイプ,地図投影法,座標情報などを示し,構造及び配置順序は以下の通りです.また,それらの後にヘッダー長で示した長さまでユーザーヘッダーを指定することができ,その使用方法は任意です.
フィールド名ピクセル数データ型内容
type 1 RGB R: リストPNGバージョン依存番号, 1に固定
G: 点群PNGメインファイル識別子, 1に固定
B: 点群PNGバージョン依存番号,1に固定
headerLength 1 符号無し整数 ヘッダー長(ピクセル数)
recordCount 2 符号無し整数 レコード数
columnCount1符号無し整数カラム数
infoX 1 RGB R: (上位4ビット) カラムデータ型,3(符号付き整数)に固定
  (下位4ビット) X座標カラムピクセル数, 範囲は1~2
G: X座標オフセットピクセル数, 範囲は0~2
B: X座標係数常用対数(符号付き8ビット整数),範囲は-128~127
offsetX 0~2 符号付き整数 X座標オフセット
デフォルト値 0
infoY 1 RGB R: (上位4ビット) カラムデータ型,3(符号付き整数)に固定
  (下位4ビット) Y座標カラムピクセル数, 範囲は1~2
G: Y座標オフセットピクセル数, 範囲は0~2
B: Y座標係数常用対数(符号付き8ビット整数),範囲は-128~127
offsetY 0~2 符号付き整数 Y座標オフセット
デフォルト値 0
infoZ 0~1 RGB R: (上位4ビット) カラムデータ型,3(符号付き整数)に固定
  (下位4ビット) Z座標カラムピクセル数, 範囲は0~2
G: Z座標オフセットピクセル数, 範囲は0~2
B: Z座標係数常用対数(符号付き8ビット整数),範囲は-128~127
offsetZ 0~2 符号付き整数 Z座標オフセット
デフォルト値 0
infoColor 0~1 RGB R: (上位4ビット) カラムデータ型,1(RGB)に固定
  (下位4ビット) カラムピクセル数,1に固定
G: オフセットピクセル数,0に固定
B: 係数常用対数,0に固定
infoId 0~2 RGB R: (上位4ビット) カラムデータ型,2(符号無し整数)に固定
  (下位4ビット) カラムピクセル数,範囲は1~2
G: オフセットピクセル数,0に固定
B: 係数常用対数,0に固定
infoClass 0~1 RGB R: (上位4ビット) カラムデータ型,2(符号無し整数)に固定
  (下位4ビット) カラムピクセル数,1に固定
G: オフセットピクセル数,0に固定
B: 係数常用対数,0に固定
userColumnDefs 不定 ユーザーカラム定義
ユーザーカラムを使用する場合は,リストPNG ver.0.2の仕様に従って記述
subType 1 RGB R: カラム使用フラグ
 カラムを使用する場合は1,使用しない場合は0を指定
 第1~4ビット: 未使用(0), 第5ビット: z,第6ビット: color,第7ビット: id, 第8ビット: class
G: 地図投影法, 0: 未定, 1: ウェブメルカトル, 2: 緯度経度
B: 地図投影法オプション
(ウェブメルカトルの場合)ウェブメルカトル次数, 範囲は0~47
(緯度経度の場合)未使用,0固定
userHeader 不定 使用方法は任意
 2D点群の場合は,infoZは使用しません.
 X,Y,Z座標情報でオフセットピクセル数に0が指定された場合は,オフセット用のヘッダーフィールド(offsetX,offsetY,offsetZ)は使用しません.
 infoColor, infoId, infoClassは,ポイント情報でそれぞれcolor, id, classを出力しない場合は使用しません.

ポイント情報

 ポイント情報では,各ポイントの位置や色,ID,スタイルなどのカラムを記述します.カラムの内容と配置順序は以下の通りです.ファイル内ではカラム毎にピクセルを配置し,カラム内の順番はすべてのカラムで一致させます.
カラム名ピクセル数データ型内容
x1~2符号付き整数X座標値
y1~2符号付き整数Y座標値
z0~2符号付き整数Z座標値
color0~1RGB表示する色
id0~1符号無し整数ポイントを識別するID
class0~1符号無し整数表示スタイルを指定するクラス
 ヘッダーのカラム使用フラグ(subTypeフィールドのR値)に従って,z, color, id, classの各カラムは省略されます.classカラム以降にはユーザーカラムを使用でき,使用方法は任意です.ユーザーカラムを使用する場合は,ヘッダーのuserColumnDefsにカラム定義を記述する必要があります.

座標値の変換

 ポイント情報のx, y, zカラムには整数として保存されますが,それらはヘッダーの係数常用対数とオフセット値を使用して,元データに変換して使用されます.
 ヘッダーで指定されるX,Y,Z座標の係数常用対数は,座標値を割る係数の常用対数(10を底とする対数)を表します.例えばこの値が4の場合は,10000で割って元データに変換することを表し,元データの小数点以下4桁までが保持されていることになります.
 係数常用対数がfactorlog, オフセット値がoffsetのとき,取得値v0(整数)から変換値vを求める変換式は以下のようになります.
v = ( v0 + offset ) / 10factorlog

ウェブメルカトル次数

 投影法でウェブメルカトルを使用する場合は,地図の水平分解能を示すためのウェブメルカトル次数を指定します.
 ここでウェブメルカトル次数と呼んでいるものは,地球全体を表す地図の横幅の大きさを,2を底とする対数(二進対数)で表したものです.
 この値は,Leafletのズームレベルに8を加えた値に相当します(256pxタイルの場合).例えば,ウェブメルカトル次数24は,ズームレベル16に相当します.

地図投影法と座標値の単位

 点群PNG自体は地図情報に限定されず,X,Y,Z座標の単位に制限はありませんが,ヘッダーsubTypeフィールドで地図投影法を指定すると,X,Y,Z座標の単位も決定されます.
 ウェブメルカトルの場合のX,Y座標の単位は,ウェブメルカトル次数がoの場合,地球全体を表す地図の横幅を1としたときの1/2oとなります.
 緯度経度の場合のX,Y座標の単位は度数となります.
 ウェブメルカトル,緯度経度いずれの場合も,Z座標の単位はメートルとなります.例えばZ座標係数常用対数が4の場合は垂直分解能1mmに相当します.