国土地理院の標高 PNG
国土地理院では標高データをタイルで配信しています。テキスト形式のほか、 PNG 形式でも配信されています。
配信されている標高 PNG 画像は、こんな画像です。
仕様
こんな画像を見ても、どこが高くて、どこが低いのかわかるような気もしないでもないですが、具体的にどのくらいの標高か判断することは難しいです。しかし標高 PNG は、 $RGB$ の色情報から標高値を計算できるようになっており、計算機で扱いやすい形式になっています。
\begin{align}
& x = 2^{16} R + 2^8 G + B & \\
& h = xu & ( x < 2^{23} ) \\
& h = NA & ( x = 2^{23} ) \\
& h = (x-2^{24})u & ( x > 2^{23} )
\end{align}
- 標高タイルの詳細仕様
- PNG標高タイル -Web利用に適した標高ファイルフォーマットの考察と実装-(西岡芳晴・長津樹理、情報地質第26巻第4号、2015)
つまり…どういうことだってばよ?
一見するとややこしい式に見えますが、2進法で考えると比較的わかりやすいです。
たとえば、 $(R, G, B) = (0, 3, 255)$ のとき、 $x = 00000000 \ 00000011 \ 11111111_{(2} = 1023_{(10}$ となります。
国土地理院が提供する標高 PNG の場合は $u = 0.01$ なので、 $h = xu = 10.23$ と計算することができます。
$(R, G, B) = (128, 0, 0)$ のときは、無効値 $NA$ を表す特別な値です。
たとえば、 $(R, G, B) = (255, 255, 255)$ のときは $x = 2^{24}-1$ より、 $h = (x-2^{24})u = -0.01$ となり、負数を表します。
色としては
$h = 0.00$ である $(R, G, B) = (0, 0, 0)$ は黒色です。そこから標高が増えるにつれ、徐々に青みが増していき $h = 2.55$ のとき $(R, G, B) = (0, 0, 255)$ すなわち青色になります。
更に標高が増え、 $h = 2.56$ になると「繰り上がり」が生じて $(R, G, B) = (0, 1, 0)$ になります。色としては、ほぼ黒に戻ることになります。標高が高くなるにつれ、それが繰り返され、徐々に緑がかっていくことになります。
逆に海抜0メートル地帯などの標高がマイナスのエリアでは、 $h = -0.01$ である $(R, G, B) = (255, 255, 255)$ すなわち白から、徐々に黄色い色に推移していきます。
水域等のデータ欠損地や、山間部等のデータ未提供地では臙脂色で表現されます。
整理すると
こんな感じすね。