Googleマップの「ズームレベル」の数値に対する実際の比率に関するリンク(または詳細)を誰かに教えてもらえますか?
例 Googleマップレベル13 = 1:20000
コメント
回答
地図をデザインする場合は、オーバーレイを計画しますグーグルマップまたは仮想地球上でタイリングスキームを作成している場合、探しているのは各ズームレベルのスケールだと思います。次を使用してください:
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
コメント
- @capdragonありがとうございます。’はよく知られた情報源(ESRI)ですが、これらのスケールをどのように考案したのか疑問に思っています。
- 誰にとって重要ですか?’質問に合理的な言及はありません。彼は、率直な質問に対する率直な回答を望んでいると思います。
- @キャップ理由がなければ、’を区別するのは難しいか不可能です間違ったものからの正しい答え。理由もなく、回答者の権限に頼らざるを得ません。 ‘このスレッドの他の返信が投票され、あなたの返信が投票されていない理由は、’とはほとんど関係ありません。正しさまたは率直さ-あなたは束の中で最も権威があり率直です-しかしむしろ他の人によって提供された推論と関係があります。ところで、私は’あなたの反対票を投じていません。
- ありがとう:+1。あなたたちはおそらく地理学者かリモートセンシングの達人です。私は’は、その男が答えに到達するのを助けたいと思っている単なるGIS開発者です。私の同僚(PHDタイプ、ダブルMIT専攻)は、私が彼に簡単な質問をするたびに1時間の講義に入り、途中で私を失います。 ‘もう質問はしません(私には理学の修士号があります)。他の人は理性的なものなどに興味を持っていることは理解していますが、私たちの多くは無知すぎて彼らが何について話しているのかを知ることができません。私見では、彼らは’彼の質問に答えない答えを混乱させていました。
- スケールは、ベース2にあるラスタータイルで均等に分割できるように選択されました。 、(例:128、512 …)。 Bingも同様に msdn.microsoft.com/en-us/library/bb259689.aspx
回答
この回答は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
BTW -私は次のように推測しています:
"latLng.lat()" = map.getCenter().lat() "zoom" = map.getZoom()
コメント
- あなたの公式に等しいものは何ですか? lat = 2.92およびzoom13で実行すると、19.08になります。 19.08とは何ですか?
- @Rodrigoメートル/ピクセル
- この答えは3年後も正しく、非常に正確であると証言できます。これは受け入れられた答えであるはずです。
- これは x のみに適用されますか、それとも y にも適用されますか? Javascript APIを介したGoogleマップは、両方の軸に同じスケールを使用しますか?
- @OldGeezerはい、すべての方向で機能します。メルカトル図法の任意の点での線形歪みは、すべての方向で等しくなります。それが’滑りやすい地図に使用される理由の1つです。ズームインすると、適度に低い歪みのマップが得られます。スケールを補正したら、これがこの回答の役割です。
回答
数学を理解するのに役立ちます(正確な計算ではありません。説明のためです):
- Googleのウェブマップタイルの幅は256ピクセルです
-
コンピューターモニターの1インチあたりのピクセル数(PPI)は100ピクセルです。つまり、256ピクセルの長さは約6.5 cmです。つまり、 0.065 m 。
-
ズームレベル0 で、360度全体経度は、単一のタイルに表示されます。これは自動的にズームレベル1に移動するため、Googleマップでは確認できませんが、 OpenStreetMapの地図で確認できます(同じタイリングスキームを使用しています) 。
-
赤道での360度の降下は、地球の円周40,075.16 kmに等しく、これは 40075160 m
-
分割 40075160 m 0.065 m を使用すると、 616313361 は、100DPIのコンピューターモニター用の赤道上のズームレベル0 のスケールです
- つまり、スケールはモニターのPPIと緯度(メルカトル図法のため)に依存するということです。
- ズームレベル1の場合、スケールはズームレベル0の半分です
- …
- ズームレベルNの場合、スケールは半分ですズームレベルN-1のf
またチェックしてください: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F
コメント
- 縮尺は、実際には生成されたマップ画像のDPIに依存します。最も一般的に使用される2つの解像度は、96DPI(’はGoogleマップタイルとは何か)と72DPIです。
- 96DPIではスケール
591657550.500000
はこの回答によるとレベル0です。しかし、@ CaptDragonによるとレベル1です。Googleマップで計算するには、レベル1から始めることを検討する必要がありますか?
回答
それほど簡単ではありません。投影を考えると、タイルピクセルのサイズは、関心のある領域の緯度によって異なります。次に、タイルピクセルサイズを画面ピクセルサイズに変換するという点では、画面とデータが表示される解像度によって異なります。画面が使用しているdpi。
コメント
- その通り、球形メルカトル(グーグルプロジェクション)は’赤道から離れるときに等しいスケールを維持します。優れた参考資料として、Mapnik ‘のスケールとスケールの分母に関する記事: trac.mapnik.org/wiki/ScaleAndPpi およびOSM ‘のFAQ: wiki.openstreetmap.org/ wiki / …
回答
わかりやすい信頼できる正解:
591657550.500000 / 2^(level-1)
上の表が表示され、ズームレベルが入力されます。
jsfiddle.net
質問はGoogleMAPSのみであり、EARTHではないため、OPは3Dジオメトリを気にしません。グーグルマップはすでに平坦化されているので、ここと赤道ではポールと同じ距離(グーグルマップに関係するDEGREES)は常に1ピクセルです。
ちなみに、あなたは世界の地図の最初のピクセル行のどこかで、縮尺が1:1であることに気づきますか?
コメント
- 番号591657550.500000は何ですか表す?
- @Sergioなぜ591657550.5だけではないのですか?
- “数値は、複数に設定されているタイル解像度に由来します256ピクセルで、画面解像度(96dpi)から” gis.stackexchange.com/a/111589/ 92997
- 機能しません-緯度によって異なりますが、式は機能しません
回答
MicrosoftのVirtalEarth TileSystemのドキュメントにそのような表があります。しかし、GuillaumeCが言ったように、値は緯度以降画面の解像度。この表は、赤道および96dpiの画面解像度で測定された値を示しています。
PS:確かではありませんが、Microsoftのズームレベルは、ズームレベルと比較して1だけシフトしている可能性があります。 Google。ただし、値がGoogleに対して正しいままであるように、これらは間違いなく同じ投影法を使用します。
回答
Radius @ Equator正確に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である理由ただし、ここで他の誰かが解決したので、地球の256ピクセルタイルが1つになります。
上記のデータの使用方法の例を見てみましょう。画像があるとします。ズームレベル20(現在のズームレベル)で0.009330692(赤道でのズーム24)を2倍にして、ズーム23、ズーム22、ズーム21、最後にズーム20にします。これで0.149231071になります。 。
ここで、画像が緯度45にあるとします。そのコサイン(0.707106781)を取得し、0.149231071を掛けると、0.1056564729メートルになります。 s。これは、ズームレベル20の緯度45の画像からの1ピクセルの長さと高さです。その領域の1000 x 1000ピクセルの画像をスクリーンキャプチャすると、寸法は105.56平方メートルになります。足を分割したい場合は0.3048
ソースについては、GoogleやMSマッピングサポートサイトなど、ウェブ上で見つけたさまざまな情報やドキュメントから、約5年前に本質的にリバースエンジニアを務めました。
私はこれを何百回も使用し、実際の現地調査データと重ね合わせましたが、常に正しいものでした。ここに掲載されている表のいずれかと照合すると、番号が一致します。
コメント
- I ‘これが質問にどのように答えるかわからない。
- @Devdattaに同意します。ソースとコンテキストを提供していただけませんか。
- これらのコメントが前か後かわからない編集しましたが、私はこの回答を使用しましたが、うまく機能しました
回答
計算を行ったところ、次のようになりました。結果:
Googleマップには、ズームレベル13で長さ90ピクセルの1 kmの定規(地図の左下)が表示されます。つまり、次のようになります。
画面の解像度を想定は96dpiまたは36dpcmで、ズームレベル13では1cmに0.4km(36/90から)があり、96dpi画面で1:40,000のマップスケールが得られます。
画面でのさまざまな操作すべての数値はすべてのズームレベルで丸められるため、90ピクセルを基準にするのが最善です。つまり、
- ズームレベル12:90ピクセルで2km
- ズームレベルl 11:90pxで4km
- ズームレベル10:90pxで8km
など。
これは概算であることに注意してください。大きなスケールではなく小さなスケールで多かれ少なかれうまく機能します。
(そしてGoogleは最終的には丸い数字が好きです…)
コメント
- よく見ると’線の長さは、あなたがいる地域の緯度によって変わることがわかります’再表示。
- @rcoupが述べたように、これは特定の緯度でのみ有効です。スケールバーの長さだけでなく、それが表す距離も変化します。この例をズーム13で続けると、スケールバーで表される距離はノースケープ(71 °緯度)で2 km、45 °緯度、赤道で500m。
回答
提供されたすべての情報に基づく、表示されたマップの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); }
回答
まだコメントを追加できませんが、これは上記のピートの返信のソースである可能性があります: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates
[.. ..]ズームレベルが上がるたびに、x方向とy方向の両方で2倍になることに注意してください。したがって、ズームレベルが高くなるごとに、前のレベルの4倍の解像度が含まれます。たとえば、ズームレベル1では、マップは4つの256×256ピクセルのタイルで構成され、512×512のピクセルスペースになります。ズームレベル19では、マップ上の各xピクセルとyピクセルは、0〜256の値を使用して参照できます* 2 19
回答
4つのズームレベルのスケールを計算しました。
ズームレベル|スケール201:500 19 1:1000 18 1:2000 17 1:4000
ズームレベルを1段階上げると、スケールが2倍になるようです。したがって、ズームレベル16のスケールが1:8000などになることを願っています。
コメント
- GIS.SEへようこそ!ソースを提供していただけますか、またはこれはどのように計算されましたか?
回答
こんにちは私はそれを計算したと思います1ピクセル= 11.627km(直線)。地球の半径を考慮していません。方法を説明するビデオのリンクは次のとおりです: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be 。それがあなたの心をクリアすることを願っています。
コメント
- そうではありません。ピクセルの値は緯度によって異なります。
- なるほど、複雑ではありません。
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