logo
ホーム •  フォーラム •  日本語wikiトップ •  アカウント情報 •  サイト内検索 •  新規登録
 ログイン
ユーザー名:

パスワード:


パスワード紛失

新規登録
 メインメニュー
 米国サイト
 オンライン状況
22 人のユーザが現在オンラインです。 (4 人のユーザが フォーラム を参照しています。)

登録ユーザ: 1
ゲスト: 21

ocaxucaq もっと...

Re: 新旧のシーナリーを併用する

このトピックの投稿一覧へ

なし Re: 新旧のシーナリーを併用する

msg# 1.6.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2
depth:
24
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015-3-21 2:55 | 最終変更
toshi  長老   投稿数: 1143
hideさん、こんばんは。
toshiです。

5234531.stgや5234531.btg.gzといったタイルファイルのインデックス番号(tile index または bucket indexと呼ばれます)についての話題です。

引用:
  ■e139n35 フォルダの中身:      北
  5234552.btg.gz 5234553.btg.gz 5234554.btg.gz 5234555.btg.gz
  5234544.btg.gz 5234545.btg.gz 5234546.btg.gz 5234547.btg.gz
  5234536.btg.gz 5234537.btg.gz 5234538.btg.gz 5234539.btg.gz
西5234528.btg.gz 5234529.btg.gz 5234530.btg.gz 5234531.btg.gz東
  5234520.btg.gz 5234521.btg.gz 5234522.btg.gz 5234523.btg.gz
  5234512.btg.gz 5234513.btg.gz 5234514.btg.gz 5234515.btg.gz
  5234504.btg.gz←芦ノ湖を含む    5234506.btg.gz 5234507.btg.gz
  5234496.btg.gz             南      ↑      5234499.btg.gz
                                三浦半島

ある場所のtile indexを確認したい場合には、mapserverの地図を使うのが便利で簡単です。

SDSU / OSGeo / FlightGear Landcover Database Mapserver
http://mapserver.flightgear.org/

1. 画面上半分の地図をクリックして見たい場所に移動するか、下半分の表の1行目または2行目に見たい場所の情報を入力します。
たとえば、RJTTなら
Airport code - OpenLayers: ICAO: RJTT
と入力して[ICAO]ボタンをクリックします。

2. ブラウザ全体に地図が表示されるので、画面右側の+をクリックし、下から2番目の
FG Scenery buckets
にチェックを入れます。

引用:
数字の命名法則自体はナゾのまま。従ってファイル名だけを見て、地球規模で自分が欲しい場所のタイルを見つけることは、まだ無理です。命名の法則をご存じの方は、どうか教えてください。

Tile indexの命名規則を調べてみましたところ、英語wikiの
http://wiki.flightgear.org/Tile_Index_Scheme
および、SimGearのソースコード
http://sourceforge.net/p/flightgear/simgear/ci/next/tree/simgear/bucket/newbucket.cxx
の2つの情報でほぼ理解できました。

隣り合うタイルのindexが飛び飛びに見えるのは、緯度経度を2進数にして、さらに10進数に戻していることに起因しています。

以下、RJTTを具体例として、タイルのindexが5234531になることを計算で求めます。
※南半球の場合や西経の場合はマイナスの緯度経度で表すのですが、ちょっと計算方法が異なるところがあるため、説明は割愛します。

先ほどのmapserverの地図でも分かるように、1つのタイルは横長の長方形になっていて、日本のような中緯度の地域のタイルの大きさは、
縦(緯度方向) 0.125度
横(経度方向) 0.25度
です。

横幅については、wikiに表があって、緯度に応じて0.125〜360度の間で離散的に変化します。

また、長方形の左下の緯度と経度をタイルの基準点とし、基準点に基づいてindexを計算します。
RJTT(N35.549、E139.788)を含むタイルの基準点は
緯度35.500、経度139.750
になります。

さらに、基準点の緯度経度を整数部分と小数部分に分け、小数部分をタイルの大きさで割り算をします。
lat=35
y=0.500/0.125=4 (yは0〜7の整数)
lon=139
x=0.750/0.25=3 (xは0〜3の整数、低緯度では0〜7の整数)

最後に、次の計算をするとindexが求まります。

tile index = (lon+180)*2^14 + (lat+90)*2^6 + y*2^3 + x
=(139+180)*16384 + (35+90)*64 + 4*8 + 3
= 5234531

計算は以上ですが、2進数を使って書き下してみると、上の式の2のべき乗の意味合いが明瞭になります。
10進数と2進数の変換は、windows標準添付の電卓(関数電卓表示)でも簡単にできます。

      10進数, 2進数
lon+180: 319, 100111111 (9bit)
lat+90:  125, 01111101 (8bit)
y:         4, 100 (3bit)
x:         3, 011 (3bit)

lon+180(9bit)、lat+90(8bit)、y(3bit)、x(3bit)の順に2進数を並べると
100111111 01111101 100 011

これを10進数に変換すると
5234531
となり、tile indexが得られていることが分かります。

tile indexから緯度経度を逆算する場合は、2進数で考えた方が分かりやすいと思います。
左右のtile indexが1つずつ増えるのに対し、上下のtile indexが8つずつ増えるのも、このためです。

長くなりましたが、以上です。
投票数:4 平均点:10.00

投稿ツリー

  条件検索へ


 検索

高度な検索
 新しい登録ユーザ
ocaxucaq 2019-12-12
ojyvyn 2019-12-12
alejiwyl 2019-12-12
yvilejyn 2019-12-12
rehisare 2019-12-12
uqykabo 2019-12-11
okodetu 2019-12-11
erydepaqu 2019-12-11
qpnezxom 2019-12-11
ocakeqohi 2019-12-11
 最近の画像(画像付)
植生図を利用した北... (2019-6-16)
植生図を利用した北...
空が真っ暗に (2019-5-18)
空が真っ暗に
植生図を使用した富... (2019-4-15)
植生図を使用した富...
春の嵐METAR回復 (2019-2-23)
春の嵐METAR回復
FlightGear 2018.3.2... (2019-2-14)
FlightGear 2018.3.2...
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Theme designed by OCEAN-NET