シームレス標高サービス実験公開-仕様


 シームレス標高サービスでは,標高タイル画像やそれを利用した陰影タイル等を,ウェブ地図の一般的なタイルセット形式で提供します.これらのタイルセットはそのまま単独で利用できるほか,各種演算を行って加工したり,様々なタイル地図と重ね合わせることで,ウェブサイト構築やインターネットを利用したアプリケーション開発で利用できます.また,緯度経度を指定して標高値を取得するための標高取得APIも提供します.
 なお,本サービスでは国土地理院が提供する地理院タイル等を標高データソースとして利用しています.本サービスを利用する場合は,データソースの出典表示など,元データの利用規約に従う必要があります.

 ※本サービスはPNG標高タイルの仕様及び活用法検討のための実験公開です.仕様は予告なく変更されことがあります.

バージョン

1.0.0 ( 2016-05-20 )

タイルのサンプルビューア

準備中

タイル一覧

 本サービスでは以下の4種類のタイルを提供します.これらをここでは「タイプ」と呼んでいます.

サンプル タイプID タイルリソーステンプレート クエリー
パラメータ
PNG標高タイル elev http://gsj-seamless.jp/labs/elev2/elev/{z}/{y}/{x}.png source,
res,
prj,
size
陰影タイル shaded  http://gsj-seamless.jp/labs/elev2/shaded/{z}/{y}/{x}.png sourcem
res,
size
azimuth,
elevation,
hf,
gannma
段彩タイル tints   http://gsj-seamless.jp/labs/elev2/tints/{z}/{y}/{x}.png source,
res,
size
法線タイル normal  http://gsj-seamless.jp/labs/elev2/normal/{z}/{y}/{x}.png size

基本事項


 本サービスで提供するタイルの基本的な仕様は,地理院タイルやグーグルマップで用いられている標準的な地図タイルに準じています.測地系は世界測地系(WGS84)です.

 基本的なタイルテンプレートは次のようになります.

http://gsj-seamless.jp/labs/elev2/{type}/{z}/{y}/{x}.png
?source={source}&res={res}&prj={prj}&size={size}

  • {type}: 画像タイプ.タイプIDで指定.elev(PNG標高タイル),shaded(陰影タイル),tints(段彩タイル)またはnormal(法線タイル)
  • {z}: ズームレベル
  • {y}: タイルY座標
  • {x}: タイルX座標
  • {source}: 標高データソース.データソースIDで指定.デフォルトは'gsi10m'(地理院タイル 標高タイル)
  • {res}: 標高分解能.'m'(1メートル)または'cm'(1センチメートル)で指定.デフォルトは'm'
  • {prj}: 投影法.melcator(Webメルカトル,デフォルト)またはlatlng(正距円筒図法)で指定
  • {size}: タイル画像のピクセルサイズ.17, 33, 65, 129, 256(デフォルト), 257のいずれかを指定

 クエリーパラメータを全て省略するとデフォルト設定のタイルが利用できます.さらに画像タイプ毎に用意されているオプションのクエリーパラメータを指定することもできます.使用できるクエリパラメータの組み合わせは,以下のように画像タイプにより限られています.
 投影法のmelcatorは半径6378137mの球体メルカトール図法(EPSG:3857)です.latlngは正距円筒図法(緯度経度をそのまま座標値に読み替えたもの)でズームレベル0はタイル2枚で全世界を表します.

使用できるtypeとクエリーパラメータの組み合わせ一覧
type source res prj size
elev  gsi10m m melcator 17,33,65,129,256,257
latlng
cm melcator
gsi20131217dd5
gsi20140216dd5
gsi20140322dd5
gsi20140704dd5
gsi20141204dd5
gsi20150301dd5
gsi20150728dd5
gsi20151209dd5
gsi20160303dd5
cm  melcator
shaded gsi10m cm melcator
normal gsi10m m melcator

 タイル取得に成功すると一般的には256×256ピクセルのPNG形式の画像(MIME image/png)を返します.パラメータが不正な場合はエラー(400 Bad Request)を返します.有効なデータが存在しない場合は404 Not foundを返します.

 ピクセルが表すデータは,仕様上はそのピクセルの北西(左上)の位置の値であり,ピクセルの範囲を代表するような値(平均値,中央値など)ではありません.ただし,タイルによっては出力時の計算を簡略化しているため厳密ではありません.通常のウェブ地図での利用ではあまり問題になりませんが,統計処理などを行う場合には問題になることがありますので注意してください.
 陰影タイルや法線タイルで利用している法線ベクトルの計算方法は,その地点と,東隣及び南隣の標高値の3点を使用して求めています.また,各ズームレベルのタイルは,同じズームレベルでの標高データから計算しています.

PNG標高タイル ( タイプID: elev )


タイルリソーステンプレート

http://gsj-seamless.jp/labs/elev2/elev/{z}/{y}/{x}.png
http://gsj-seamless.jp/labs/elev2/elev/{z}/{y}/{x}.zip
(zipは,pngファイルをzip圧縮したものです)

クエリーパラメータ

 source: 標高データソース.データソースIDで指定.デフォルトは'10m'(地理院タイル 標高タイル)
 res: 標高分解能'm'(1メートル)または'cm'(1センチメートル)で指定.デフォルトは'm'
 prj: 投影法.melcator(Webメルカトル,デフォルト)またはlatlng(正距円筒図法)で指定
 size: タイルのピクセルサイズ.17, 33, 65, 129, 256(デフォルト), 257のいずれかを指定

レスポンス

256×256 32bit PNG
データが存在しないピクセルは黒色透明(RGBA=0,0,0,0)

 富士山周辺(z=9, y=202, x=453,デフォルト設定)

http://gsj-seamless.jp/labs/elev2/elev/9/202/453.png

 上記と同じ位置の標高分解1センチメートル(res=cm)

http://gsj-seamless.jp/labs/elev2/elev/9/202/453.png?res=cm

陰影タイル ( タイプID: shaded )


タイルリソーステンプレート

http://gsj-seamless.jp/labs/elev2/shaded/{z}/{y}/{x}.png

クエリーパラメータ

 source: 標高データソース.データソースIDで指定.デフォルトは'10m'(地理院タイル 標高タイル)
 res: 標高分解能'm'(1メートル)または'cm'(1センチメートル)で指定.デフォルトは'm'
 size: タイルのピクセルサイズ.17, 33, 65, 129, 256(デフォルト), 257のいずれかを指定
 azimuth: 光源方向の方位角(360度法,北を0とし時計回り),デフォルトは315(北西)
 elevation: 光源方向の仰角(360度法,水平を0度,垂直を90度),デフォルトは45(旧60から変更)
 hf: 高さの誇張係数(1が誇張なし),デフォルトは1
 gamma: ガンマ補正係数,デフォルトは1

レスポンス

256×256 32bit PNG
データが存在しないピクセルは黒色透明(RGBA=0,0,0,0)

補足

 デフォルトの設定(ソースID=10m,標高分解能=m)の場合は,作成済みの法線タイルを元に計算するため比較的高速に利用できますが,それ以外はリアルタイムにPNG標高タイルから法線を計算するため若干生成に時間がかかります.

 富士山周辺(z=9, y=202, x=453,デフォルト設定)

http://gsj-seamless.jp/labs/elev2/shaded/9/202/453.png

 上記の光源を北東方向仰角60度に変更

http://gsj-seamless.jp/labs/elev2/shaded/9/202/453.png?azimuth=45&elevation=60

段彩タイル ( タイプID: tints )


タイルリソーステンプレート

http://gsj-seamless.jp/labs/elev2/tints/{z}/{y}/{x}.png

クエリーパラメータ

 source: 標高データソース.データソースIDで指定.デフォルトは'10m'(地理院タイル 標高タイル)
 res: 標高分解能'm'(1メートル)または'cm'(1センチメートル)で指定.デフォルトは'm'
 colors: カラーパレット.詳細は後述

レスポンス

256×256 32bit PNG
データが存在しないピクセルは黒色透明(RGBA=0,0,0,0)

カラーパレットの指定

 デフォルトでは,各標高値に対する色は,おおむね国土地理院の地理院タイル(色別標高図)と一致するように設定しています.
 クエリーパラメータcolorsを指定するとこの配色を変更できます.colorsでは,標高(メートル,整数)と色(6桁16進数RRGGBB)のペアをカンマ区切りで列挙します.ペアーは標高値の昇順に並べてください.最初の標高値よりも低い標高はそのペアの色で,それ以降は,その標高値と一つ手前の標高値の間をグラデーションで描画します.以下の例を参考にしてください

凡例画像

 凡例画像は以下のURLで取得でいます.colorsクエリーパラメータを指定するとカラーパレットの変更に対応した凡例画像を取得することもできます.

http://gsj-seamless.jp/labs/elev2/tints/legend.png

 富士山周辺(z=9, y=202, x=453)で取得できる段彩タイル(デフォルト設定)

http://gsj-seamless.jp/labs/elev2/tints/9/202/453.png

 上記と同じ位置の,GRASS-STRM風色設定

http://gsj-seamless.jp/labs/elev2/tints/9/202/453.png?
colors=-50,0000cd,0,00bfbf,100,75c25d,200,e68080,500,ca9e4b,1000,d6bb62,
2000,b99a64,3000,dcdcdc,3800,ffffff



※この配色は,「Ⅲ.陰影段彩図を作成してGoogle Earthで表示する - 三匹のウリボウ」を参考にさせていただきました.
URL http://space.geocities.jp/bischofia_vb/appmemo/memo3.html

法線タイル ( タイプID: normal )


タイルリソーステンプレート

http://gsj-seamless.jp/labs/elev2/normal/{z}/{y}/{x}.png

クエリーパラメータ

{size}: タイルのピクセルサイズ.17, 33, 65, 129, 256(デフォルト), 257のいずれかを指定

レスポンス

 24bit PNG

画素の値の内容

 PNG法線タイルの画素の色と法線ベクトルの対応は以下のとおりです.
 各軸の正方向は,x軸が東方,y軸が南方,z軸が鉛直上方です.

法線タイルの画素の色 内容> 法線ベクトルとの対応
R値 0~255の数値で法線ベクトルのx成分を表す R=0 → -1
R=255 → +1
G値 0~255の数値で法線ベクトルのy成分を表す G=0 → -1
G=255 → +1
B値 0~255の数値で法線ベクトルのz成分を表す B=0 → -1
B=255 → +1

 法線データが求められなかった場合は,ほぼ水平をあらわすRGB = (128, 128, 255)を使用しています.

サイズ指定

 クエリパラメータ内の{size}でタイルのピクセルサイズを指定することができます. 指定がない場合はデフォルトの256(px)となりますが,この場合は各セルの値はセルの北西端を表し,タイルの東縁および南縁の法線を表現することができません. {size}に17,33,65,129,257のいずれかを指定すると,タイルの最終列および最終行は,タイルの東縁および南縁の法線を表すものとします (すなわち,隣のタイルと法線の値が重複します).

補足

 デフォルトの設定(ソースID=10m,標高分解能=m)以外では利用できません.

 富士山周辺(z=9, y=202, x=453)で取得できるPNG法線タイル

http://gsj-seamless.jp/labs/elev2/normal/9/202/453.png

標高取得API


標高取得APIテンプレート

http://gsj-seamless.jp/labs/elev2/elev?latlng={latlng}

クエリーパラメータ

 {latlng}: 緯度経度を度単位,小数点表示で,カンマ区切りで指定します.必須です.
 {source}: データソースを指定します.デフォルトは'gsi10m'(国土地理院10mメッシュ)です.

レスポンス

 標高値(m単位)を表すテキスト(MIMEタイプ text/plane)返します.標高値はそのタイルセットの最大ズームレベルのcm単位の標高タイルを元に求められます.
 無効データ(タイルが存在しなかった場合も含む)の場合は"e"を返します.
 パラメータが不正な場合はエラーレスポンス(400 Bad Request)を返します.

 富士山山頂付近の標高を取得

http://gsj-seamless.jp/labs/elev2/elev?latlng=35.360628,138.727236
(このURLは"3765.49"を返します)

標高データソース


 シームレス標高サービスでは,以下の建設省国土地理院地理院タイルなどを標高データソースとして利用し,PNG標高タイルに変換して使用しています.
 シームレス標高サービスを利用した結果の再利用に関しては,標高データソースの提供者の規定に従う必要があります.

地理院タイル 標高タイル ( データソースID: gsi10m )

 PNG標高タイルへの変換は,ズームレベル14の元データから,1つずつズームレベルの小さいタイルセットを作成することにより行っています.この時,ズームレベルの大きい方の4つのピクセルのうち,北西(左上)のピクセルの値をズームベルの小さいの方の標高値としています.
 (→国土地理院コンテンツ利用規約
※取得できるタイルの最大範囲は,z=13の場合で,Y=2928~3621, X=6889~7618です.

・地理院タイル 西之島付近噴火活動 標高タイル

 PNG標高タイルへの変換は,ズームレベル15の元データから,1つずつズームレベルの小さいタイルセットを作成することにより行っています.この時,ズームレベルの大きい方の4つのピクセルのうち,北西(左上)のピクセルの値をズームベルの小さいの方の標高値としています.
 (→国土地理院コンテンツ利用規約