Googleマップのズームレベルは、どの比率の尺度に対応していますか?


83

Googleマップの「ズームレベル」の数字に対する実際の比率に関するリンク(または詳細)を提供していただけますか?

例:Googleマップレベル13 = 1:20000


1
私がこの機能を作成した最初の情報に基づいて、おそらく誰かがそれを使用できます!関数setZoomLevel(meters){//console.log(Zoom level set meters: ${meters}); var zoomfactor = 1; if(meters <1128){zoomfactor = 15; } else if((meters> 1128)&&(meters <2256)){zoomfactor = 14; } else if((meters> 2256)&&(meters <4513)){zoomfactor = 13; } else if((meters> 4513)&&(meters <9027)){zoomfactor = 12; } else if((meters> 9027)&&(meters <18055)){zoomfactor = 11; } else if((meters> 18055)&&(meters <36111)){zoomfactor = 10; } else if((meters> 36111)&&(meters <72
Friis1978

回答:


79

Googleマップまたは仮想地球上にオーバーレイしてタイルスキーマを作成する予定のマップを設計している場合、探しているのは各ズームレベルの縮尺だと思います。これらを使用します。

20 : 1128.497220
19 : 2256.994440
18 : 4513.988880
17 : 9027.977761
16 : 18055.955520
15 : 36111.911040
14 : 72223.822090
13 : 144447.644200
12 : 288895.288400
11 : 577790.576700
10 : 1155581.153000
9  : 2311162.307000
8  : 4622324.614000
7  : 9244649.227000
6  : 18489298.450000
5  : 36978596.910000
4  : 73957193.820000
3  : 147914387.600000
2  : 295828775.300000
1  : 591657550.500000

ソース:http : //webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm


2
@capdragonありがとう。これはよく知られた情報源(ESRI)ですが、どのようにしてこれらのスケールを思いついたのか疑問に思っています。
whuberの

4
合理性は誰にとって重要ですか?質問には合理的な言及はありません。彼は彼の単純な質問に対する単純な答えを望んでいると思う。
CaptDragon

4
@cap理由がなければ、正しい答えと間違った答えを区別することは困難または不可能です。理由がなければ、回答者の権限に頼らざるを得ません。このスレッドの他の返信が投票されている理由と、あなたのものは正しさや率直さとはほとんど関係ありません-あなたの方が最も権威があり、束の中で簡単である-私はかなり確信しています他の人から提供された推論を行う。ところで、私はあなたのものを支持しませんでした。
whuber

3
ありがとう:+1。あなたたちはおそらく地理学者かリモートセンシングの達人でしょう。私は単なるGIS開発者であり、その人が答えに到達するのを助けたいと思っています。私の同僚(PHDタイプ、ダブルMIT専攻)は、彼に簡単な質問をするたびに1時間の講義に入り、途中で私を失います。私は彼にもう質問をしません(科学のマスターがいます)。他の人々は理性的な肉などに興味を持っていることを理解していますが、私たちの多くは彼らが何について話しているかを知るにはあまりにも無知です。私見彼らは彼の質問に答えない混乱の答えだった。
CaptDragon

10
スケールは、ベース2にあるラスタータイル(128、512 ...など)で均等に分割できるように選択されました。Bingも同様にmsdn.microsoft.com/en-us/library/bb259689.aspx
ギャレットホール

44

Googleの従業員によって書かれたこの応答が見つかりました。これはおそらく最も正確な応答です。

これは正確ではありません。メルカトル図法(Googleマップなど)を使用したマップの解像度は緯度に依存するためです。

この式を使用して計算することができます:

metersPerPx = 156543.03392 * Math.cos(latLng.lat() * Math.PI / 180) / Math.pow(2, zoom)

これは、地球の半径が6378137mであるという仮定に基づいています。私たちが使用する値はどれですか:)

から取得:https : //groups.google.com/forum/#!topic / google-maps-js-api-v3 / hDRO4oHVSeM

ところで-私はそれを推測しています:

'latLng.lat()' = map.getCenter.lat()
'zoom' = map.getZoom()

あなたの式に等しいものは何ですか?lat = 2.92とズーム13でそれを行うと、19.08になりました。19.08とは何ですか?
ロドリゴ

4
@ロドリゴメートル/ピクセル
ジャスティンポーネルト

3
この答えは3年後もまだ正確で非常に正確であることを証言できます。これは受け入れられた答えであるはずです。
ジョン

これはxのみに適用されますか、それともyにも適用されますか?Javascript API経由のGoogleマップでは、両方の軸に同じ縮尺が使用されますか?
オールドギーザー

@OldGeezerはい、すべての方向で機能します。メルカトル図法の任意の点での線形歪みは、すべての方向で等しくなります。これが、滑りやすいマップに使用される理由の1つです。ズームインすると、歪みマップがかなり低くなります。スケールを補正すると、これがこの答えです。
smithkm

30

数学を理解しやすくするために(正確な計算ではなく、単に説明のためです):

  • GoogleのWebマップタイルの幅は256ピクセルです
  • コンピューターのモニターに100ピクセル/インチ(PPI)があるとします。つまり、256ピクセルの長さは約6.5 cmです。そして、それはだ0.065メートル

  • 上のズームレベル0、経度の全360度が表示されている単一のタイルに。Googleマップではズームレベル1に自動的に移動するため、これを観察することはできませんが、OpenStreetMapのマップで見ることができます(同じタイルスキーマを使用します)。

  • 赤道上での360度の低下は、地球の円周40,075.16 km(40075160 m)に等しい

  • 除算40075160メートル0.065メートル、あなたが買ってあげる616313361ズームレベル0の規模で、100 DPIとコンピュータモニタのための赤道上を

  • 重要なのは、スケールがモニターのPPIと緯度に依存することです(メルカトル図法のため)
  • ズームレベル1の場合、スケールはズームレベル0の半分です。
  • ...
  • ズームレベルNの場合、スケールはズームレベルN-1の半分です。

また、チェックアウト:http : //wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F


3
縮尺は、実際には、生成されたマップ画像のDPIに依存しています。最も一般的に使用される2つの解像度は、96DPI(Googleマップタイル)と72DPIです。
ササイヴェティック

591657550.500000この回答によれば、96DPIではスケールはレベル0です。しかし、@ CaptDragonによるとレベル1です。Googleマップで計算するには、レベル1から開始することを検討する必要がありますか?
ダグラスナシフローマジュニア

17

それほど簡単ではありません。投影が与えられると、タイルピクセルのサイズは、関心のある領域の緯度に依存します。次に、タイルピクセルサイズを画面のピクセルサイズに変換するという点では、画面とデータが表示される解像度に依存します。画面が使用しているdpi。


2
球体メルカトル(グーグル図法)は、赤道から遠ざかるときに等しい縮尺を維持しません。MAPNIKのスケールとスケール分母の記事:いくつかの優れた参考のためtrac.mapnik.org/wiki/ScaleAndPpi:ともOSMのよくある質問wiki.openstreetmap.org/wiki/...
maning

12

簡単で信頼できる正解:

591657550.500000 / 2^(level-1)

上記の表が表示され、ズームレベルを入力します。

jsfiddle.netで公開してみてください

質問は地球ではなくGoogle MAPSのみであるため、OPは3Dジオメトリを考慮しません。Googleマップは既に平坦化されているため、こことポ​​ールのように、エクエーターでも1ピクセルが常に同じ距離(Googleマップで関係するDEGREES)になります。

ところで、世界地図の最初のピクセル行のどこかで、縮尺が1:1であることを認識しましたか?


5
番号591657550.500000は何を表していますか?
ジャスティンディアリング14

2
@セルジオはなぜ591657550.5だけではないのですか?
ビロウスキー

2
「数は256個のピクセルの倍数に設定されているタイルの解像度から来る、及び画面の解像度(96DPI)から」 gis.stackexchange.com/a/111589/92997
juffel

動作しません-それは緯度に依存しますが、あなたの式ではありません
エフゲニーVorobei

9

MicrosoftのVirtal Earth Tile Systemのドキュメントには、このような表があります。しかし、GuillaumeCによると、値は緯度と画面解像度に依存します。この表には、Equatorおよび96 dpiの画面解像度で測定された値が示されています。

PS:確かではありませんが、Microsoftのズームレベルは、Googleのズームレベルと比較して1シフトされる可能性があります。ただし、Googleにとって値が正しいままであるように、それらは明確に同じ投影法を使用します。


7

半径@赤道6,378,137メートル(WGS-84)

赤道での周長= 40,075,017メートル(2πr)

ズームレベル24は、円周で2から32乗(4,294,967,296)ピクセルを使用します。

赤道周辺/ 2 32 = .009330692メートル/ピクセル

緯度の単位=(緯度の余弦)X(赤道の単位)

ズームレベルは、増分ごとに2倍になります。

1フィート(国際)= 0.3048メートル

編集

そもそも正当な質問ではありません。縮尺比は、コンピューター画面ではなく、印刷された文書に対するものです。これらの画像を正確に使用するために必要なのは、各ピクセルの寸法を把握し、オーバーレイの種類に応じて画像を拡大縮小することです。

そのため、15〜20年前に誰かがWGS-84を基本データとして使用していました。(以前の投稿で誰かが40,075,160の値を使用したことに注意してください。ウィキペディアでこれをいくつかの場所で見ましたが、それは間違っています。正しい値は40,075,017です

次に、それらを取得し、完全な32ビット整数で除算しました。これは、航空写真に十分な約1センチメートルのグローバルな精度が得られるため、論理的な選択です。32ビット整数も保存および処理に効率的です。

レベル24が選ばれた理由はわかりませんが、ここで他の誰かがうまくいったので、0で地球用の256ピクセルタイルが1つになります。

次に、上記のデータの使用方法の例について説明します。ズームレベル20の画像があるとしましょう(現在のようにズームされています)0.009330692(赤道でズーム24)をズーム23に2倍、ズーム22にもう一度、ズーム21に、ズーム20に最後の1回これで、0.149231071になります。

ここで、画像が緯度45にあるとしましょう。そのコサイン(0.707106781)を0.149231071で乗算すると、0.105564729メートルが得られます。これは、ズームレベル20で緯度45の画像からの1ピクセルの長さと高さです。その領域の1000 x 1000ピクセルの画像をスクリーンキャプチャすると、寸法は105.56メートル四方になります。0.3048を足で分割したい場合

情報源に関しては、約5年前、GoogleやMSのマッピングサポートサイトなど、Webで見つけたさまざまな情報やドキュメントから本質的なリバースエンジニアを行いました。

私はこれを何百回も使用し、実際の現地調査データに重ねており、常に正しいものでした。ここに掲載されている表のいずれかと照合してください。番号が一致します。


2
これがどのように質問に答えるかわからない。
Devdatta Tengshe

@Devdattaに同意します。ソースとコンテキストを提供してください。
アーロン

これらのコメントが編集の前か後かは
わかり

4

いくつかの計算を行ったところ、次の結果が得られました。

Googleマップでは、ズームレベル13で長さが90ピクセルの1kmのルーラー(マップの左下)が表示されます。これは次のことを意味します。

画面の解像度が96 dpiまたは36 dpcmであると仮定すると、ズームレベル13では1 cmで0.4 km(36/90から)になり、96 dpiの画面のマップスケールは1:40,000になります。

画面上のさまざまな操作では、すべての数値がすべてのズームレベルで丸められるため、90pxを基準にすることが最善です。

  • ズームレベル12:90ピクセルで2 km
  • ズームレベル11:90ピクセルで4 km
  • ズームレベル10:90ピクセルで8 km

等々。

これは近似値であり、大きなスケールではなく小さなスケールでほぼ正常に機能することに注意してください。

(そして、Googleは最後にラウンド番号が好きです...)


1
よく見ると、表示している地域の緯度に応じて線の長さが変わることがわかります。
rcoup

1
@rcoupが述べたように、これは特定の緯度でのみ有効です。スケールバーの長さだけでなく、それが表す距離も異なります。ズーム13でこの例を続けると、スケールバーで表される距離は、北ケープ州(緯度71°)で2 km、緯度45°周辺で1 km、赤道で500 mです。
フランソワ

3

提供されたすべての情報に基づいて、表示されたマップのN%を表す水平線が必要な場合に、マップに最適なzを適用する関数を作成しました。

表示されるマップは、独自のピクセル幅によって特徴付けられます。

function calculateZoom(WidthPixel,Ratio,Lat,Length){
    // from a segment Length (km), 
    // with size ratio of the segment expected on a map (70%),
    // with a map WidthPixel width in pixels (100px),
    // and a latitude (45°) we can get the best Zoom
    // assume earth is a perfect ball with radius : 6,378,137m and
    //      circumference at the equator = 40,075,016.7 m
    // The full world on google map is available in tiles of 256 px; 
    // it has a ratio of 156543.03392 (px/m).
    // For Z = 0; 
    // pixel scale at the Lat_level is ( 156543,03392 * cos ( PI * (Lat/180) ))
    // The map scale increases at the rate of square root of Z.
    //
    Length = Length *1000;                     //Length is in Km
    var k = WidthPixel * 156543.03392 * Math.cos(Lat * Math.PI / 180);        //k = circumference of the world at the Lat_level, for Z=0 
    var myZoom = Math.round( Math.log( (Ratio * k)/(Length*100) )/Math.LN2 );
    myZoom =  myZoom -1;                   // Z starts from 0 instead of 1
    //console.log("calculateZoom: width "+WidthPixel+" Ratio "+Ratio+" Lat "+Lat+" length "+Length+" (m) calculated zoom "+ myZoom);

    // not used but it could be useful for some: Part of the world size at the Lat 
    MapDim = k /Math.pow(2,myZoom);
    //console.log("calculateZoom: size of the map at the Lat: "+MapDim + " meters.");
    //console.log("calculateZoom: world circumference at the Lat: " +k+ " meters.");
    return(myZoom);
}

3

私はまだコメントを追加できませんが、これは上記のピートの返信の可能性のあるソースです:https : //developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates

[...]拡大するズームレベルはそれぞれ、x方向とy方向の両方で2倍大きいことに注意してください。したがって、各ズームレベルには、前のレベルの4倍の解像度が含まれます。たとえば、ズームレベル1では、マップは4つの256x256ピクセルタイルで構成され、512x512のピクセルスペースになります。ズームレベル19では、マップ上の各xピクセルとyピクセルは、0〜256 * 2 19の値を使用して参照できます。


1

4つのズームレベルのスケールを計算しました。

ズームレベル| スケール20 1:500 19 1:1000 18 1:2000 17 1:4000

ズームレベルを1ステップ上げると、スケールが2倍になるようです。そのため、ズームレベル16の縮尺が1:8000などになることを願っています。


3
GIS.SEへようこそ!ソースを提供してもらえますか、またはこれはどのように計算されましたか?
ポール14

0

こんにちは、私は直線で1pixel = 11.627kmと計算したと思います。地球の半径を考慮しない。ここで説明したビデオのリンク方法:https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be。それがあなたの心をクリアすることを願っています。


ありません。ピクセルの値は緯度に依存します。
ジョンパウエル

ああ、私が入ったその複雑ではありません。
トタルド氏16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.