高度データを得る方法

get-heightmap.png

Google Elevation APIを利用する場合

Google Map API V3のgoogle.maps.ElevationService
あるいは。
Google Earth COM API
で取得出来るらしい。
URLを作るだけで高度がゲットできる。
たとえば、このレーダーを取得した位置 緯度 35.8431139 経度139.406984の位置を取得したかったらこうする。

http://maps.googleapis.com/maps/api/elevation/xml?locations=35.843113,139.406984&sensor=false
sensor、というのはURLをリクエストする機器がGPSセンサーを持っているかどうか。たとえば携帯電話から発するならsensor=trueにする。
パソコンからリクエストする場合はセンサーがないからどうでもいいのだが、
sensor=false or falseがないとREQUEST_DENIEDというエラーになる、ので仕方なく書いた。
xmlのところをjsonにすればJSON形式のデータにもできる。

http://maps.googleapis.com/maps/api/elevation/xml?locations=緯度,経度&sensor=false
そして、このURLからこのようなデータを得ることが出来る。

<status>OK</status>
<result>
<location>
<elevation>92.7716980</elevation>
<resolution>152.7032318</resolution>
</result>
</ElevationResponse>

複数の緯度経度を得たいなら | で区切る。

locations=39.7391536,-104.9847034|36.455556,-116.866667

参考にしたサイト:Google ElevationAPI

緯度経度を小数にするには

153°59′11″

読み方は
153度59分11秒
である。
60分=1度
3600秒=1度
小数に変換したかったらこうする

(1)
\begin{align} 度+\frac{分}{60}+\frac{秒}{3600} \end{align}

使用制限

Google Yahoo
1日あたりのURLリクエスト数 2500
1回のリクエストの地点数 512 100
1日あたりの地点数 25000
1回のURLの文字数 20481 2048
緯度経度の最大精度2 小数点以下 6 桁

google mapの1回のURLの文字数は2048と書いてあるけど実際に2048文字のURLをリクエストしたら

HTTP Error 414:Request-URI Too Large

のエラーになる
1916文字だってウワサもある
私の実験によると1916でもだめで1800はokだった。

国土地理院の場合

国土地理院基盤地図データのダウンロードサイト
ID,パスワードは以下の通りです。

抜群に精度がよさそうだけど、決められた範囲に分かれてるので、あとで好きにデータを統合するのが面倒くさい。

日本の緯度経度の範囲

区 分 場   所 世界測地系 日本測地系
経 度 緯 度 経 度 緯 度
最 東 端 東京都南鳥島 153°59′11″ 24°16′59″ 153°59′25″ 24°16′42″
最 西 端 沖縄県 与那国島 122°56′01″ 24°26′58″ 122°55′59″ 24°26′38″
最 南 端 東京都 沖ノ鳥島 136°04′11″ 20°25′31″ 136°04′20″ 20°25′14″
最 北 端 北海道 択捉島 148°45′14″ 45°33′28″ 148°45′30″ 45°33′19″

大体(26.0,126,4)-(47.8,152.8)かな

取得した高度をどのように正規化するか??

値はメートル単位で返ってくる

  <result>
    <location>
      <lat>34.8700000</lat>
      <lng>137.5800000</lng>
    </location>
    <elevation>193.0723267</elevation>
    <resolution>610.8129272</resolution>
  </result>

データとしてしまっておくとき、
またはレンダリングする際に、正規化してバイナリで保存したいけど、
どんな風に正規化したらいいかな?
ちなみに関東周辺の範囲の高度は

最小=-2089.540772,最大=2484.944092

だった。
地球の最大深度は6000m以上
日本海溝の最も深いところは8020m[2]
エベレストの最高標高は8848m
富士山の標高は3776 m
実際にGoogle Elevation APIで得られた結果は
緯度経度(23.0,126,0)~(50.0,153.0)の範囲の高度は

最深い=-9564.059570,最高い=2514.288574m

だった
heghtmapを作ってみたらこうなりました
heightmap.png
フルソースコードはgitで!

サポートサイト Wikidot.com