gdal2tilesから生成された個々のタイルの緯度経度境界を計算します


16

同じマップに表示したいgdal2tilesを使用して生成された複数のタイルソースがあります。そのため、タイルを提示するときは、どのソースからタイルを提供するかを決定し、境界をチェックする必要があります。

(gdal2tilesによって生成されたファイル構造から)ズーム、x、およびyのみに基づいて単一のタイルの緯度経度境界を計算する方法を知っていますか?ところで:計算を支援するためにAPIからいくつかの機能を呼び出す必要がある場合に備えて、私はGoogle Maps API v3を使用しています。

私が純粋にズーム、x、およびyに制限されている理由は、タイルがマップ上のオーバーレイによって呼び出されるだけでなく、マップ外に印刷できるカスタム印刷機能もあるためです。

回答:


22

数学の説明は次のとおりです。

http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

…コマンドラインユーティリティのソースコードとオンラインデモを含みます。

また、非常に単純な数学です。

function tile2long(x,z) { return (x/Math.pow(2,z)*360-180); }

function tile2lat(y,z) {
    var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
    return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}

y軸のXYZ / GoogleとTMSの違いに注意してください。

GoogleマップAPI V3を介して、あまりにもあなたに必要な機能を提供 .fromPointToLatLng()しますmap.getProjection()


私は同じ問題を抱えているので、上記の解決策を理解しようとしています。上記のソリューションで私は1をする必要がありますか?まず、tile2long()およびtile2lat()を使用してx、yを変換し、lat / longにズームします。2.ステップで作成された緯度/経度を使用して境界を作成しますか?どうすればいいですか?
ヴィシャル

@Petr c ++に何かありますか?
マジッド・ホハティ

タイルサイズは考慮されませんか?
ムハンマドウメル

@ petr-pridalこれはポイントです。私の知る限り、タイルはエリアまたはサーフェスです。境界ボックスのコードを提供してもらえますか?前もって感謝します。
ハーバート

この記事gist.github.com/tmcw/4954720から、TMSは同じタイルですが、逆方向にインデックス付けされています。これは変換式です:Math.floor(Math.pow(2、z)-y-1)
ハガイ


0

これは私の作業コードです:

Googleイメージマップタイプオーバーレイのjsfiddleサンプル

jsfiddle Googleオーバーレイ画像の別のサンプル

function tile2long(x,z) {

  return (x/Math.pow(2,z)*360-180);

}





function tile2lat(y,z) {

  var n=Math.PI-2*Math.PI*y/Math.pow(2,z);

  return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));

}





 var x = coord.x;

 var y = coord.y;

 var z = zoom;



 var NW_long = tile2long(x,z);



 var SW_long = tile2long(x,z);

 var SW_lat =  tile2lat(y+1,z);



 var NE_long = tile2long(x+1,z);

  var NE_lat =  tile2lat(y,z);







  var export_bbox = SW_long + ',' + SW_lat + ',' + NE_long + ',' + NE_lat;



     var url_param = '&format=png&size=256,256&transparent=true&f=image&bboxSR=4326&imageSR=4326';





   var url_layers =''





       var root_url = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=';



     var tile_url = root_url + export_bbox + url_param + url_layers;

maptilerは座標値からbboxを取得してズームします

グーグル座標数ズーム、変換、緯度経度などの計算方法...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.