2021/10/01更新
点群PNG(Point Cloud PNG)とは,画像フォーマットであるPNG形式を利用してポイントデータを扱うためのフォーマットです.
ここで扱うポイントデータは,2次元または3次元の位置座標を持つもので,それらに関連付けられる付加情報を含みます.
ファイル構成
点群PNGでは
点群PNGメインファイルと
点群PNGサブファイルの2つのフォーマットを規定します.1つの有効な点群PNGファイルセットは,1つの点群PNGメインファイルとそれに関係付けられる0個以上の点群PNGサブファイルからなります.点群PNGメインファイルおよび点群PNGサブファイルは
リストPNG ver.0.1の派生フォーマットです.
基本仕様
ファイルフォーマット
ファイルフォーマットはウェブブラウザーで一般的に利用できる画像フォーマットであるPNG(Portable Network Graphics, ISO/IEC 15948:2004)を使用し,PNGのカラータイプはRGBが利用できる以下のいずれかを使用します.
- 2: Truecolour
- 3: Indexed-colour
- 6: Truecolour with alpha
データ型
点群PNGでは数値データをピクセルに変換して使用します.仕様上定義されるデータ型には以下の4種類があるほか,ユーザー定義カラムでは任意のデータ型を使用できます.
- RGB (1ピクセル)
- 24ビット符号無し整数 (1ピクセル)
- 48ビット符号無し整数 (2ピクセル)
- 24ビット符号付き整数 (1ピクセル)
RGBは,ピクセルをそのまま色として取得します
24ビット符号無し整数では,1ピクセルのRGB値(
r,
g,
b)から以下の式で値(
v)を取得します.
48ビット符号無し整数では,2つのピクセルのRGB値,第1ピクセル(
r1,
g1,
b1)及び第2ピクセル(
r2,
g2,
b2)から以下の式で値(
v)を取得します.
24ビット符号付き整数では,1ピクセルのRGB値(
r,
g,
b)から以下の式で値(
v)を取得します.
不透明度を使用する場合は255(最大)を指定することを推奨します.不透明度に0が指定された場合,そのピクセルを含むデータは無効値として扱います.
ピクセルの配置
点群PNGでは,値を表す各ピクセルは通常のラスタースキャン順に配置します.すなわち,画像の左上端から開始してまず右方向へ配置し,右端に達したら1行下の左端に移動してまた右方向へ配置します.これを配置するデータが無くなるまで繰り返します.
配置する情報は先頭部のヘッダーとそれに続く0個以上のポイント情報からなります.ヘッダーに使用するピクセル数は可変で,ヘッダー長と呼びます.各ポイント情報に使用するピクセル数はファイル内で同一でなければならず,それをレコード長と呼びます.また,ポイントの数量をレコード数と呼びます.
なお,PNGの圧縮効率を上げるため,画像サイズの幅はレコード長の整数倍でなければなりません.
点群PNGメインファイル
点群PNGメインファイルは点群PNGファイルセットの中核となるもので,座標情報を含みます.
ヘッダー
点群PNGメインファイルのヘッダーでは,データのタイプ,ヘッダー長,レコード長,レコード数,点群PNGのサブタイプ,地図投影法,座標情報などを示し,構造及び配置順序は以下の通りです.また,それらの後にヘッダー長で示した長さまでユーザ定義フィールドを指定することができ,その使用方法は任意です.
フィールド名 | ピクセル数 | データ型 | 内容 |
type |
1 |
RGB |
R: リストPNGバージョン依存番号, 現在は0に固定
G: 点群PNGメインファイル識別子, 現在は1に固定
B: 点群PNGバージョン依存番号,現在は0に固定
|
headerLength |
1 |
符号無し整数 |
ヘッダー長(ピクセル数) |
recordLength |
1 |
符号無し整数 |
レコード長(ピクセル数) |
recordCount |
2 |
符号無し整数 |
レコード数 |
subType |
0~1 |
RGB |
デフォルト値 (1,1,24)
R: 点群PNGサブタイプ, 1: 2D点群,2: 3D点群
G: 地図投影法, 0: 未定, 1: ウェブメルカトル, 2: 緯度経度
B: 地図投影法オプション
(ウェブメルカトルの場合)ウェブメルカトル次数, 範囲は0~47
(緯度経度の場合)未使用,0固定 |
infoX |
0~1 |
RGB |
デフォルト値 (49,0,0)
R: (上位4ビット) 3に固定
(下位4ビット) X座標カラムピクセル数, 範囲は1~2
G: X座標オフセットピクセル数, 範囲は0~2
B: X座標係数常用対数,符号付き8ビット整数 |
offsetX |
0~2 |
符号付き整数 |
X座標オフセット デフォルト値 0 |
infoY |
0~1 |
RGB |
デフォルト値 (49,0,0)
R: (上位4ビット) 3に固定
(下位4ビット) Y座標カラムピクセル数, 範囲は1~2
G: Y座標オフセットピクセル数, 範囲は0~2
B: Y座標係数常用対数,符号付き8ビット整数 |
offsetY |
0~2 |
符号付き整数 |
Y座標オフセット デフォルト値 0 |
infoZ |
0~1 |
RGB |
デフォルト値 (49,0,3)
R: (上位4ビット) 3に固定
(下位4ビット) Z座標カラムピクセル数, 範囲は0~2
G: Z座標オフセットピクセル数, 範囲は0~2
B: Z座標係数常用対数,符号付き8ビット整数 |
offsetZ |
0~2 |
符号付き整数 |
Z座標オフセット デフォルト値 0 |
X,Y,Z座標情報でオフセットピクセル数に0が指定された場合は,オフセット用のヘッダー(offsetX,offsetY,offsetZ)は使用しません.また,subTypeフィールド以降は末尾の側から省略可能です.
ポイント情報
ポイント情報では,各ポイントの位置や色,ID,スタイルなどの情報を示します.ポイント毎に配置し,各ポイントの構造及び配置順序は以下の通りです.
カラム名 | ピクセル数 | データ型 | 内容 |
x | 1~2 | 符号付き整数 | X座標値 |
y | 1~2 | 符号付き整数 | Y座標値 |
z | 0~2 | 符号付き整数 | Z座標値 |
color | 0~1 | RGB | 表示する色 |
id | 0~1 | 符号無し整数 | ポイントを識別するID
|
class | 0~1 | 符号無し整数 | 表示スタイルを指定するクラス
|
ヘッダーでサブタイプ(subTypeフィールドのR値)に2D点群(1)が指定された場合,zカラムは省略されます.colorカラム以降は省略可で,それらが省略された場合は残りのピクセルを左に詰めます.classカラム以降にはユーザー定義カラムを指定でき,使用方法は任意です.
座標値の変換
ポイント情報の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/2
oとなります.
緯度経度の場合のX,Y座標の単位は度数となります.
ウェブメルカトル,緯度経度いずれの場合も,Z座標の単位はメートルとなります.Z座標係数常用対数のデフォルト値は4で,これは垂直分解能1mmに相当します.
データ範囲外
画像の末端部の配置するポイント情報が存在しないピクセルの色は規定しません.
点群PNGサブファイル
点群PNGサブファイルは,各点の座標以外の情報を含みます(座標以外の情報は,点群PNGメインファイルにも含めることができます).
点群PNGサブファイルの仕様はほぼ
リストPNG ver.0.1と同様です.ただし,点群PNGサブファイル内のレコードの数と順序は,対応する点群PNGメインファイルのポイント情報の数と順序に一致させなければなりません.また,点群PNGサブファイルでヘッダーを記述する場合は,type属性では,派生フォーマット識別子(G)には未定義を表す0を設定します(1は,点群PNGメインファイルの場合に使用します).