Google Maps缩放级别对应什么比例比例?


83

谁能为我提供Google地图“缩放比例”数字的实际比例的链接(或某些细节)?

例如Google Maps Level 13 = 1:20000


1
根据我提供的第一个信息,可以使用此功能!函数setZoomLevel(meters){//console.log(Zoom level set meters: ${meters}); var zoomfactor = 1; if(米<1128){zoomfactor = 15; } if if((meters> 1128)&&(meters <2256)){zoomfactor = 14; } if if((meters> 2256)&&(meters <4513)){zoomfactor = 13; } if if((meters> 4513)&&(meters <9027)){zoomfactor = 12; } if if((meters> 9027)&&(meters <18055)){zoomfactor = 11; } if if((meters> 18055)&&(meters <36111)){zoomfactor = 10; } else if((meters> 36111)&&(meters <72
Friis1978 '18

Answers:


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),但让我们仍然想知道他们是如何提出这些尺度的。
ub

4
理性对谁至关重要?我在这个问题上没有提到理性。我相信他想要他的直截了当的问题的直截了当的答案。
CaptDragon 2011年

4
@cap没有理由,很难或不可能将正确答案与错误答案区分开。没有理由,就不得不依靠应答者的权限。我非常确定,该主题中其他答复的投票率很高,而您的回答与正确性或直率无关-您是一堆中最权威,最直接的人-而是拥有一切用其他人提供的推理来做。顺便说一句,我还没有投票赞成你的。
ub

3
谢谢:+1。你们可能是地理学家或遥感专家。我只是一个GIS开发人员,他想帮助这个家伙找到答案。我的一位同事(PHD型,麻省理工学院双学士)每次我问他一个简单的问题,就让我进行一个小时的授课,并一路让我放松。我不再问他问题了(我有理科硕士学位)。我知道其他人喜欢陷入理性之类的话题,但是我们许多人都不知道他们在说什么。恕我直言,他们混淆了不能回答他的问题的答案。
CaptDragon 2011年

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

顺便说一句-我猜是:

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

什么等于您的公式?在lat = 2.92并缩放13的情况下,我得到了19.08。什么是19.08什么?
罗德里戈(Rodrigo)

4
@Rodrigo米/像素
贾斯汀·波内尔特

3
我可以证明,三年后这个答案仍然是正确且非常准确的。这应该是公认的答案。
约翰,

这仅适用于x还是y?通过Javascript API的Google Maps是否对两个轴使用相同的比例尺?
老盖泽

@OldGeezer是的,它可以在所有方向上工作。墨卡托的任意点处的线性失真在所有方向上均相等。这就是它用于打滑地图的原因之一。当您放大时,您会得到相当低的失真贴图。一旦您补偿了规模,这就是答案。
smithkm

30

为了帮助您理解数学(不是精确的计算,仅用于说明):

  • Google的网络地图图块的宽度为256像素
  • 假设您的电脑显示器每英寸有100像素(PPI)。这意味着256个像素的长度约为6.5厘米。就是0.065 m

  • 缩放级别0上,整个360度的经度在单个图块中可见。您无法在Google Maps中观察到它,因为它会自动移至缩放级别1,但是您可以在OpenStreetMap的地图上看到它(它使用相同的切片方案)。

  • 赤道上的360度赤道等于地球周长40,075.16公里,即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。两种最常用的分辨率是96DPI(这就是Google地图图块)和72DPI。
2011年

对于96DPI,591657550.500000根据此答案,刻度为0级。但是根据@CaptDragon的说法是1级。我应该考虑从1级开始使用Google Maps进行计算吗?
道格拉斯·纳西夫

17

没那么容易。给定投影,图块像素的大小取决于您感兴趣的区域的纬度。然后,将图块像素大小转换为屏幕像素大小,就取决于屏幕和显示数据的分辨率,屏幕正在使用的dpi。


2
没错,球形墨卡托(google投影)在离开赤道时不会保持相等的比例。对于一些很好的参考:Mapnik的的规模和比例分母的文章:trac.mapnik.org/wiki/ScaleAndPpi也OSM的常见问题解答:wiki.openstreetmap.org/wiki/...
曼宁

12

简单明了的权威正确答案:

591657550.500000 / 2^(level-1)

它为您提供了上表,并输入了缩放级别。

jsfiddle.net上进行尝试

由于该问题仅适用于Google MAPS,不适用于EARTH,因此OP不在乎3D几何。谷歌地图已经被拉平,因此在这里和在极子中,在自动扶梯中,像素和像素之间的距离总是1像素(以DEGREES,这是谷歌地图所关心的)。

顺便说一句,您是否意识到世界地图的第一像素行内的某个地方的比例是1:1?


5
数字591657550.500000代表什么?
贾斯汀·迪林

2
@Sergio为什么不只是591657550.5?
Birowsky '17


不起作用-这取决于纬度,但您的公式却不正确
Evgenii Vorobei

9

Microsoft的Virtal Earth Tile System文档中有这样一个表。但是正如GuillaumeC所说,这些值取决于纬度和屏幕分辨率。该表给出了在赤道和屏幕分辨率为96 dpi时测得的值。

PS:不确定,但是与Google的缩放级别相比,Microsoft的缩放级别可能会移动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的图像中一个像素的长度和高度。如果屏幕捕获该区域的1000 x 1000像素图像,则尺寸为105.56米见方。如果你想用脚除那0.3048

至于消息来源,我大约5年前从网络上找到了包括Google和MS映射支持站点在内的各种信息和文档,这实际上是一位逆向工程师。

我已经用了这百次时间,并将其与实际的田野调查数据叠加在一起,并且它始终是正确的。将其与此处发布的表中的任何一个进行检查,数字将匹配。


2
我不确定这如何回答问题。
Devdatta Tengshe 2012年

我同意@Devdatta的意见,能否请您提供资料来源和一些背景信息。
亚伦

不知道这些评论是在编辑之前还是之后,但是我使用了这个答案,它的效果很好
bjnortier

4

进行了一些计算,得出以下结果:

Google地图显示一个1公里的标尺(在地图的左下方),该标尺的长度为90像素,缩放级别为13。这意味着:

假设屏幕分辨率为96 dpi或36 dpcm,则在缩放级别13下,我们在1cm处有0.4km(从36/90开始),对于96dpi屏幕,其地图比例为1:40,000。

对于屏幕上的各种操作,最好以90像素为基础,因为所有数字在所有缩放级别上都是舍入的,即

  • 缩放等级12:2公里(90像素)
  • 缩放等级11:4公里(90像素)
  • 缩放等级10:90像素/ 8公里

等等。

请注意,这是一个近似值,应该在较小的比例而不是较大的比例上或多或少地起作用。

(Google最终喜欢舍入数字...)


1
如果仔细观察,会发现线的长度根据您所查看区域的纬度而变化。
rcoup

1
如@rcoup所述,这仅在特定纬度下有效。不仅比例尺的长度发生变化,而且比例尺所代表的距离也发生变化。要继续以缩放13进行此示例,比例尺所表示的距离在北开普省(纬度71度)为2公里,在纬度45度附近为1公里,在赤道处为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

我还不能添加评论,但这是Pete上面回复的可能来源:https : //developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates

请注意,在x和y方向上,每个增加的缩放级别都是原来的两倍。因此,每个更高的缩放级别包含的分辨率是前一个级别的四倍。例如,在缩放级别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!您能否提供资料来源或如何计算?
保罗

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.