Google지도 확대 / 축소 수준은 어떤 비율로 표시됩니까?


83

누구나 Google지도의 '확대 / 축소 수준'수치에 대한 실제 비율에 대한 링크 (또는 세부 정보)를 제공 할 수 있습니까?

예 : Google지도 수준 13 = 1 : 20000


1
내가이 기능을 만든 첫 번째 정보를 기반으로 누군가가 그것을 사용할 수 있습니다! 함수 setZoomLevel (meters) {//console.log ( Zoom level set meters: ${meters}); var zoomfactor = 1; if (미터 <1128) {zoomfactor = 15; } else if ((미터> 1128) && (미터 <2256)) {zoomfactor = 14; } else if ((미터> 2256) && (미터 <4513)) {zoomfactor = 13; } else if ((미터> 4513) && (미터 <9027)) {zoomfactor = 12; } else if ((미터> 9027) && (미터 <18055)) {zoomfactor = 11; } else if ((미터> 18055) && (미터 <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 이유가 없으면 정답과 오답을 구분하기가 어렵거나 불가능합니다. 이유 없이는 응답자의 권한에 의존해야합니다. 나는이 글에서 다른 답글이 투표 된 이유와 당신의 정확성과 직관과 거의 관련이없는 것이 확실합니다. 다른 사람들이 제공 한 추론과 관련이 있습니다. BTW 난 당신을 downvoted하지 않았습니다.
whuber

3
감사합니다 : +1 아마도 여러분은 지리학 자나 원격 감지 전문가 일 것입니다. 나는 단지 그 사람이 그의 답변에 도달하도록 돕고 자하는 GIS 개발자 일뿐입니다. 내 동료 (PHD 유형, 이중 MIT 전공)는 간단한 질문을 할 때마다 한 시간 씩 강의에 들어가 길을 따라 나를 풀어줍니다. 나는 그에게 더 이상 질문하지 않습니다 (나는 과학 석사를 가지고 있습니다). 나는 다른 사람들이 합리적 등의 고기에 들어가기를 좋아한다는 것을 이해하지만, 우리 중 많은 사람들은 그들이 말하는 것에 대해 너무 무지합니다. IMHO 그들은 자신의 질문에 대답하지 않는 답을 혼동하고있었습니다.
CaptDragon

10
스케일은베이스 2에있는 래스터 타일 (예 : 128, 512 ...)로 균등하게 나눌 수 있도록 선택되었습니다. Bing도 비슷하게 msdn.microsoft.com/en-us/library/bb259689.aspx
Garrett Hall

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 에서 가져옴

BTW-나는 추측하고 있습니다 :

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

당신의 공식은 무엇입니까? 위도 = 2.92 및 확대 / 축소 13에 대해 수행하면 19.08을 얻습니다. 19.08은 무엇입니까?
로드리고

4
픽셀 당 @Rodrigo 미터
Justin Poehnelt

3
이 답변이 3 년 후에도 여전히 정확하고 매우 정확하다는 것을 간증 할 수 있습니다. 이것이 정답입니다.
John

이것은 x 에만 적용됩니까 아니면 y 에도 적용됩니까 ? Javascript API를 통한 Google지도는 두 축 모두에 대해 동일한 축척을 사용합니까?
Old Geezer

@OldGeezer 예, 모든 방향에서 작동합니다. 메르카토르의 모든 지점에서 선형 왜곡은 모든 방향에서 동일합니다. 그것이 미끄러운지도에 사용되는 이유 중 하나입니다. 확대하면 왜곡 맵이 상당히 낮습니다. 일단 스케일을 보상하면이 답변이 수행하는 것입니다.
smithkm

30

수학을 이해하는 데 도움이되도록 (정확한 계산이 아니라 단지 설명을위한 것임) :

  • Google의 웹 맵 타일의 너비는 256 픽셀입니다.
  • 컴퓨터 모니터의 인치당 픽셀 수가 100 픽셀이라고 가정 해 봅시다. 즉, 256 픽셀의 길이는 약 6.5cm입니다. 그리고 그것은 0.065 m 입니다.

  • 줌 레벨 0 , 경도의 전체 360 개도를 볼 수 있습니다 하나의 타일 . 확대 / 축소 수준 1로 자동 이동하므로 Google지도에서는이를 확인할 수 없지만 OpenStreetMap의지도 에서는 볼 수 있습니다 (동일한 타일링 체계를 사용함).

  • 적도의 360 도는 지구의 둘레 40,075.16km와 동일하며 40075160m입니다.

  • 분할 4천7만5천1백60미터을 가진 0.065 m 당신은 얻을 것이다 616,313,361 줌 레벨 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에 의존합니다. 가장 일반적으로 사용되는 두 가지 해상도는 96DPI (Google지도 타일)와 72DPI입니다.
Sasa Ivetic

591657550.500000이 답변에 따르면 96DPI를 사용하면 스케일 은 레벨 0입니다. 그러나 @CaptDragon에 따르면 레벨은 1입니다. Google지도로 계산하려면 레벨 1부터 시작해야합니까?
Douglas Nassif Roma Junior

17

그렇게 쉬운 일이 아닙니다. 프로젝션이 주어지면 타일 픽셀의 크기는 관심 영역의 위도에 따라 달라집니다. 그런 다음 타일 픽셀 크기를 화면 픽셀 크기로 변환하는 데있어 화면과 데이터에 표시되는 해상도에 따라 달라집니다. 화면에서 사용중인 dpi


2
맞습니다. 구형 메르카토르 (Google 투영법)는 적도에서 멀어 질 때 동일한 크기를 유지하지 않습니다. 훌륭한 참고 자료 : Mapnik의 스케일 및 스케일 분모 기사 : trac.mapnik.org/wiki/ScaleAndPpi 및 OSM의 FAQ : 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은 무엇을 나타 냅니까?
저스틴 친애하는

2
@Sergio는 왜 591657550.5입니까?
Birowsky

2
"숫자는 타일 해상도가 256 픽셀의 배수로 설정되고 화면 해상도 (96dpi)에서 나옵니다
juffel

작동하지 않음-위도에 따라 다르지만 공식은 아닙니다.
Evgenii Vorobei

9

Microsoft의 Virtal Earth Tile System 문서 에는 이러한 표가 있습니다. 그러나 GuillaumeC에 따르면 값은 위도와 화면 해상도에 따라 다릅니다. 이 표는 적도 및 96dpi의 화면 해상도에서 측정 한 값을 나타냅니다.

추신 : 확실하지는 않지만 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 (적도 단위)

줌 레벨은 각 증분으로 두 배가됩니다.

1 피트 (국제) = 0.3048 미터

편집하다

글쎄요. 실제로 합법적 인 질문은 아닙니다. 배율은 컴퓨터 화면이 아닌 인쇄 된 문서를 기준으로합니다. 이 이미지를 정확하게 사용하려면 각 픽셀의 치수를 알고 오버레이하는 이미지에 따라 이미지의 크기를 조정해야합니다.

15-20 년 전 누군가가 WGS-84를 기본 데이터로 사용했습니다. (이전 게시물에서 누군가가 40,075,160의 값을 사용했습니다. 나는 Wikipedia에서 이것을 보았으며 잘못되었습니다. 정확한 값은 40,075,017입니다.

그런 다음 그것을 가져 와서 32 비트 정수로 나눕니다. 이것은 항공 이미지를 위해 충분한 약 1 센티미터까지 전체 정확도를 제공하기 때문에 논리적 선택입니다. 32 비트 정수는 저장 및 처리에도 효율적입니다.

이것이 레벨 24가 선택된 이유는 모르겠습니다. 그러나 다른 누군가가 운동을 했으므로 0은 지구의 256 픽셀 타일 하나까지 당신을 가져옵니다.

위의 데이터를 사용하는 방법에 대한 예를 들어 보겠습니다. 확대 / 축소 수준 20의 이미지를 가지고 있다고 가정 해 봅시다 (현재 얻을 수있게 확대 된 것처럼) 0.009330692 (적도에서 확대 24) : 줌 23, 확대 22, 다시 줌 21, 마지막으로 줌 20 이제 0.149231071이 있어야합니다.

이제 이미지가 위도 45에 있다고합시다. 코사인 (0.707106781)에 0.149231071을 곱하면 0.105564729 미터가됩니다. 확대 / 축소 수준 20에서 위도 45의 이미지에서 1 픽셀의 길이와 높이입니다. 해당 영역의 1000 x 1000 픽셀 이미지를 화면 캡처하면 치수는 105.56 미터입니다. 발을 0.3048로 나누려면

출처에 관해서는 약 5 년 전에 Google 및 MS 매핑 지원 사이트를 포함하여 웹에서 찾은 다양한 정보 및 문서에서 엔지니어를 역전 시켰습니다.

이 백 번을 사용하여 실제로 현장 조사 데이터로 오버레이했으며 항상 정확했습니다. 여기에 게시 된 표와 비교하여 확인하면 숫자가 일치합니다.


2
이것이 어떻게 질문에 대답하는지 잘 모르겠습니다.
Devdatta Tengshe

@Devdatta에 동의합니다. 소스와 컨텍스트를 제공해 주시겠습니까?
Aaron

이러한 의견은 전이나 편집 후 있었지만, 나는이 대답을 사용하고 잘 작동 확실하지
bjnortier

4

일부 계산을 수행하고 다음 결과를 얻었습니다.

Google지도는 확대 / 축소 수준 13에서 길이가 90 픽셀 인 1km 눈금자 (지도 왼쪽 하단)를 표시합니다. 이는 다음을 의미합니다.

화면 해상도가 96dpi 또는 36dpcm이라고 가정하면 확대 / 축소 수준 13에서 1cm에 0.4km (36/90에서)가 있으며 96dpi 화면에 대해 1 : 40,000의 맵 스케일을 생성합니다.

화면의 다양한 작업에서 모든 숫자는 모든 확대 / 축소 수준에서 둥글게되므로 90px를 기준으로하는 것이 가장 좋습니다.

  • 줌 레벨 12 : 90px에서 2km
  • 확대 / 축소 레벨 11 : 4km (90 픽셀)
  • 줌 레벨 10 : 90px에서 8km

등등.

이것은 근사치보다 작은 규모에서 다소 잘 작동하는 근사치입니다.

(그리고 구글은 결국 둥근 숫자를 좋아합니다 ...)


1
자세히 보면 선의 길이는보고있는 지역의 위도에 따라 달라집니다.
rcoup

1
@rcoup에서 언급했듯이 특정 위도에서만 유효합니다. 스케일 바의 길이는 다양 할뿐만 아니라 거리도 나타냅니다. 확대 / 축소 13에서이 예제를 계속하려면 눈금 막대로 표시되는 거리는 노스케이프에서 2km (위도 71 °), 위도에서 약 45 °, 적도에서 500m입니다.
François

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

댓글을 아직 추가 할 수는 없지만 위의 Pete 회신 출처는 https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates입니다.

[...] 참고로 증가하는 각 확대 / 축소 수준은 x 및 y 방향에서 두 배입니다. 따라서, 각각의 더 높은 줌 레벨은 이전 레벨보다 4 배 많은 해상도를 포함합니다. 예를 들어 확대 / 축소 수준 1에서지도는 4 개의 256x256 픽셀 타일로 구성되어 512x512의 픽셀 공간이됩니다. 확대 / 축소 수준 19에서 0과 256 * 2 19 사이의 값을 사용하여지도의 각 x 및 y 픽셀을 참조 할 수 있습니다.


1

네 가지 확대 / 축소 수준에 대한 배율을 계산했습니다.

줌 레벨 | 규모 20 1 : 500 19 1 : 1000 18 1 : 2000 17 1 : 4000

확대 / 축소 수준이 한 단계 씩 증가함에 따라 배율이 두 배가 된 것 같습니다. 따라서 줌 레벨 16의 스케일이 1 : 8000 등이 되길 바랍니다.


3
GIS.SE에 오신 것을 환영합니다! 출처를 알려 주시겠습니까? 아니면 어떻게 계산 했습니까?
Paul

0

안녕하세요, 1 픽셀 = 11.627km를 직선으로 계산했다고 생각합니다. 지구의 반지름을 고려하지 않았습니다. 여기에 설명 된 비디오의 링크 방법 : https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . 그것이 당신의 마음을 깨끗하게하기를 바랍니다.


그렇지 않습니다. 픽셀의 값은 위도에 따라 다릅니다.
John Powell

아, 알다시피 그렇게 복잡하지는 않았습니다.
Mr. Totardo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.