Welchen Verhältnisskalen entsprechen die Zoomstufen von Google Maps?

83

Kann mir jemand einen Link (oder einige Details) zum tatsächlichen Verhältnis der Zoomstufen für Google Maps geben?

zB Google Maps Level 13 = 1: 20000

mlo55
quelle
1
Basierend auf den ersten Informationen habe ich diese Funktion erstellt, vielleicht könnte jemand sie verwenden! Funktion setZoomLevel (meter) {//console.log ( Zoom level set meters: ${meters}); var zoomfactor = 1; if (meter <1128) {zoomfactor = 15; } else if ((meter> 1128) && (meter <2256)) {zoomfactor = 14; } else if ((meter> 2256) && (meter <4513)) {zoomfactor = 13; } else if ((meter> 4513) && (meter <9027)) {zoomfactor = 12; } else if ((meter> 9027) && (meter <18055)) {zoomfactor = 11; } else if ((meter> 18055) && (meter <36111)) {zoomfactor = 10; } else if ((meter> 36111) && (
meter

Antworten:

79

Wenn Sie eine Karte entwerfen, die Sie über Google Maps oder Virtual Earth legen möchten, und ein Kachelschema erstellen möchten, sollten Sie die folgenden Maßstäbe für jede Zoomstufe verwenden:

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

Quelle: http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm

CaptDragon
quelle
2
@capdragon Danke. Das ist eine bekannte Quelle (ESRI), aber wir fragen uns immer noch, wie sie auf diese Skalen gekommen sind.
whuber
4
Rational ist entscheidend für wen? Ich sehe keine Erwähnung von rational in der Frage. Ich glaube, er möchte eine direkte Antwort auf seine direkte Frage.
CaptDragon
4
@cap Ohne Grund ist es schwierig oder unmöglich, eine richtige Antwort von einer falschen zu unterscheiden. Ohne Grund muss man sich auf die Autorität des Antwortenden verlassen. Ich bin mir ziemlich sicher, dass der Grund, warum die anderen Antworten in diesem Thread gewählt werden und Ihre nicht wenig mit Korrektheit oder Unkompliziertheit zu tun haben - Ihre ist die maßgeblichste und direkteste aller Antworten -, sondern hat alles zu tun mit der Begründung der anderen tun. Übrigens habe ich deine nicht herabgestimmt.
whuber
3
Danke: +1. Ihr seid wahrscheinlich Geographen oder Fernerkundungsgurus. Ich bin nur ein GIS-Entwickler, der dem Typen helfen möchte, seine Antwort zu finden. Jedes Mal, wenn ich ihm eine einfache Frage stelle und mich dabei verliere, geht ein Kollege von mir (Typ PHD, Doppel-MIT-Hauptfach) in eine einstündige Vorlesung. Ich stelle ihm keine Fragen mehr (ich habe einen Master in Naturwissenschaften). Ich verstehe, dass andere Leute gerne rational und so weiter arbeiten, aber viele von uns sind zu unwissend, um zu wissen, wovon sie sprechen. IMHO waren sie verwirrende Antworten, die seine Frage nicht beantworten.
CaptDragon
10
Die Maßstäbe wurden so gewählt, dass sie durch Rasterplättchen in Basis 2 (z. B. 128, 512 ...) gleichmäßig aufgeteilt werden können. Bing macht es ähnlich msdn.microsoft.com/en-us/library/bb259689.aspx
Garrett Hall
44

Ich fand diese Antwort - geschrieben von einem Google-Mitarbeiter - wahrscheinlich die genaueste:

Dies ist nicht korrekt, da die Auflösung einer Karte mit Mercator-Projektion (wie bei Google Maps) vom Breitengrad abhängt.

Es ist möglich, mit dieser Formel zu berechnen:

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

Dies basiert auf der Annahme, dass der Erdradius 6378137 m beträgt. Welchen Wert verwenden wir :)

entnommen aus: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM

BTW - Ich vermute, dass:

'latLng.lat()' = map.getCenter.lat()
'zoom' = map.getZoom()
Gilad Mayani
quelle
WAS entspricht deiner Formel? Wenn ich es für lat = 2.92 und zoom 13 mache, bekomme ich 19.08. Was ist der 19.08 was?
Rodrigo
4
@ Rodrigo Meter pro Pixel
Justin Poehnelt
3
Ich kann bezeugen, dass diese Antwort auch drei Jahre später noch richtig und sehr genau ist. Dies sollte die akzeptierte Antwort sein.
John
Gilt das nur für x oder auch für y ? Verwendet Google Maps über die Javascript-API für beide Achsen den gleichen Maßstab?
Old Geezer
@OldGeezer Ja, es funktioniert in alle Richtungen. Die lineare Verzerrung an jedem Punkt in Mercator ist in alle Richtungen gleich. Das ist einer der Gründe, warum es für rutschige Karten verwendet wird. Wenn Sie weit hineinzoomen, erhalten Sie eine relativ verzerrungsarme Karte. Sobald Sie die Skalierung kompensieren, ist das, was diese Antwort tut.
Smithkm
30

Zum besseren Verständnis der Mathematik (keine genaue Berechnung, nur zur Veranschaulichung):

  • Die Webkartenkachel von Google hat eine Breite von 256 Pixel
  • Nehmen wir an, Ihr Computermonitor hat 100 Pixel pro Zoll (PPI). Das heißt, 256 Pixel sind ungefähr 6,5 cm lang. Und das sind 0,065 m .

  • Bei Zoomstufe 0 sind die gesamten 360 Längengrade in einer einzigen Kachel sichtbar . Sie können dies in Google Maps nicht beobachten, da es automatisch in die Zoomstufe 1 wechselt, aber Sie können es auf der Karte von OpenStreetMap sehen (es wird dasselbe Kachelschema verwendet).

  • 360 Grad am Äquator entsprechen dem Erdumfang von 40.075,16 km, was 40075160 m entspricht

  • Teilen Sie 40075160 m durch 0,065 m und Sie erhalten 616313361 , eine Skala der Zoomstufe 0 am Äquator für einen Computermonitor mit 100 DPI

  • Der Punkt ist also, dass der Maßstab vom PPI Ihres Monitors und vom Breitengrad abhängt (aufgrund der Mercator-Projektion).
  • Bei Zoomstufe 1 entspricht der Maßstab der Hälfte von Zoomstufe 0
  • ...
  • Für die Zoomstufe N entspricht der Maßstab der Hälfte der Zoomstufe N-1

Überprüfen Sie auch: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F

Igor Brejc
quelle
3
Der Maßstab hängt tatsächlich von der DPI der generierten Kartenbilder ab. Die beiden am häufigsten verwendeten Auflösungen sind 96 DPI (das sind die Google-Kartenkacheln) und 72 DPI.
Sasa Ivetic
Mit 96DPI ist die Skala 591657550.500000gemäß dieser Antwort Level 0. Aber laut @CaptDragon ist Level 1. Ich sollte überlegen, ab Level 1 mit Google Maps zu rechnen?
Douglas Nassif Roma Junior
17

Nicht so einfach. Angesichts der Projektion hängt die Größe der Kachelpixel von der Breite des Bereichs ab, an dem Sie interessiert sind. Wenn Sie die Größe der Kachelpixel in die Größe der Bildschirmpixel umwandeln, hängt dies vom Bildschirm und der Auflösung ab, in der die Daten angezeigt werden dpi, die Ihr Bildschirm verwendet.

GuillaumeC
quelle
2
Das ist richtig, sphärischer Mercator (Google-Projektion) behält nicht den gleichen Maßstab bei, wenn Sie sich vom Äquator entfernen. Zum Nachschlagen: Mapniks Scale- und Scale-Nenner-Artikel: trac.mapnik.org/wiki/ScaleAndPpi und auch OSMs
maning
12

Unkomplizierte, verbindliche und korrekte Antwort:

591657550.500000 / 2^(level-1)

Sie erhalten die obige Tabelle, in der Sie die Zoomstufe eingeben.

Probieren Sie es live auf jsfiddle.net aus

Da die Frage nur für Google MAPS und nicht für EARTH gilt, kümmert sich das OP nicht um die 3D-Geometrie. Google Maps sind BEREITS abgeflacht, sodass 1 Pixel immer der gleiche Abstand ist (in GRAD, was eine Google Map betrifft), hier und im Steuergerät wie in den Polen.

Übrigens, haben Sie bemerkt, dass irgendwo in der ersten Pixelreihe einer Weltkarte der Maßstab 1: 1 ist?

Sergio
quelle
5
Was bedeutet die Nummer 591657550.500000?
Justin Dearing
2
@ Sergio warum nicht gleich 591657550.5?
Birowsky
2
"Die Zahl ergibt sich aus der Kachelauflösung, die auf ein Vielfaches von 256 Pixel festgelegt wurde, und aus der Bildschirmauflösung (96 dpi)" gis.stackexchange.com/a/111589/92997
juffel
Funktioniert nicht - es hängt von Latitude ab, aber Ihre Formel ist nicht
Evgenii Vorobei
9

Eine solche Tabelle finden Sie in der Dokumentation des Virtal Earth Tile Systems von Microsoft . Aber wie von GuillaumeC gesagt, hängen die Werte vom Breitengrad und von der Bildschirmauflösung ab. Die Tabelle gibt die am Äquator gemessenen Werte und eine Bildschirmauflösung von 96 dpi an.

PS: Ich bin mir nicht sicher, aber die Zoomstufen von Microsoft könnten im Vergleich zu den Zoomstufen von Google um 1 verschoben werden. Sie verwenden jedoch definitiv dieselbe Projektion, sodass die Werte für Google korrekt bleiben.

Name
quelle
7

Radius @ Äquator 6.378.137 Meter genau (WGS-84)

Umfang am Äquator = 40.075.017 Meter (2πr)

Die Zoomstufe 24 verwendet 2 bis 32 (4.294.967.296) Pixel am Umfang.

Äquatorialer Umfang / 2 32 = .009330692 Meter pro Pixel

Einheit am Breitengrad = (Kosinus des Breitengrads) X (Einheit am Äquator)

Die Zoomstufe verdoppelt sich mit jedem Inkrement.

1 Fuß (International) = 0,3048 Meter

Bearbeiten

Nun, es ist nicht wirklich eine legitime Frage. Die Skalierungsverhältnisse beziehen sich auf gedruckte Dokumente und nicht auf Computerbildschirme. Damit diese Bilder mit jeder Genauigkeit verwendet werden können, müssen Sie die Größe jedes Pixels kennen und das Bild dann entsprechend Ihrer Überlagerung skalieren.

Vor 15 bis 20 Jahren nahm jemand WGS-84 als Basisdaten. (Beachten Sie in einem vorherigen Beitrag, dass jemand einen Wert von 40.075.160 verwendet hat. Ich habe dies in Wikipedia an einigen Stellen gesehen und es ist falsch. Der korrekte Wert ist 40.075.017

Das haben sie dann genommen und durch eine ganze 32-Bit-Zahl geteilt. Dies ist eine logische Entscheidung, da hiermit eine globale Genauigkeit von etwa einem Zentimeter erzielt wird, was für Luftbilder ausreichend ist. 32-Bit-Ganzzahlen sind auch effizient zu speichern und zu verarbeiten.

Warum dies Stufe 24 ist, wurde ausgewählt. Ich weiß jedoch nicht, wie jemand anderes hier herausgefunden hat. 0 bringt Sie auf eine 256-Pixel-Kachel für die Erde.

Nun ein Beispiel für die Verwendung der oben genannten Daten. Nehmen wir an, ich habe ein Bild mit Zoomstufe 20 (so gezoomt, wie Sie es gerade haben). Nehmen Sie 0,009330692 (Zoom 24 am Äquator), verdoppeln Sie es für Zoom 23, erneut für Zoom 22, erneut für Zoom 21 und ein letztes Mal für Zoom 20 Sie sollten jetzt 0.149231071 haben.

Nehmen wir nun an, unser Bild befindet sich auf dem 45. Breitengrad. Nehmen Sie den Cosinus (0,707106781) und multiplizieren Sie ihn mit 0,149231071. Sie erhalten 0,105564729 Meter. Dies ist die Länge und Höhe eines Pixels von einem Bild bei 45 Breitengraden in Zoomstufe 20. Wenn Sie ein 1000 x 1000 Pixel großes Bild dieses Bereichs auf dem Bildschirm aufnehmen, beträgt die Abmessung 105,56 Quadratmeter. Wenn Sie Füße wollen, teilen Sie diese 0,3048

Was Quellen angeht, habe ich vor ungefähr 5 Jahren den Ingenieur von verschiedenen Informationen und Dokumentationen, die ich im Web gefunden habe, zurückgenommen, einschließlich Google- und MS-Mapping-Support-Sites.

Ich habe diese Zeit hundert Mal verwendet und sie mit tatsächlichen Feldvermessungsdaten überlagert, und sie waren immer korrekt. Prüfen Sie dies anhand der hier angegebenen Tabellen, und die Zahlen stimmen überein.

DavidG
quelle
2
Ich bin nicht sicher, wie dies die Frage beantwortet.
Devdatta Tengshe
Ich bin mit @ Devdatta einverstanden. Geben Sie bitte eine Quelle und einen Kontext an.
Aaron
Ich bin mir nicht sicher, ob diese Kommentare vor oder nach der Bearbeitung vorhanden waren, aber ich habe diese Antwort verwendet und sie funktioniert hervorragend
am
4

Habe gerade einige Berechnungen durchgeführt und die folgenden Ergebnisse erhalten:

Google Maps zeigt ein 1-km-Lineal (links unten auf der Karte) mit einer Länge von 90 Pixeln in Zoomstufe 13. Dies bedeutet Folgendes:

Unter der Annahme, dass die Bildschirmauflösung 96 dpi oder 36 dpcm beträgt, haben wir bei Zoomstufe 13 0,4 km (von 36/90) in 1 cm, was einen Kartenmaßstab von 1: 40.000 für einen 96-dpi-Bildschirm ergibt.

Für verschiedene Operationen auf dem Bildschirm ist es am besten, 90px als Basis zu nehmen, da alle Zahlen in allen Zoomstufen rund sind, d. H

  • Zoomstufe 12: 2 km in 90px
  • Zoomstufe 11: 4 km in 90px
  • Zoomstufe 10: 8 km in 90px

und so weiter.

Beachten Sie, dass dies eine Annäherung ist, die eher auf kleineren als auf großen Skalen mehr oder weniger gut funktionieren sollte.

(Und Google mag am Ende runde Zahlen ...)

Mojuba
quelle
1
Wenn Sie genau hinsehen, werden Sie feststellen, dass sich die Länge der Linie in Abhängigkeit vom Breitengrad des angezeigten Bereichs ändert.
rcoup
1
Dies gilt nur in einem bestimmten Breitengrad, wie von @rcoup erwähnt. Es variiert nicht nur die Länge der Maßstabsleiste, sondern auch die Entfernung, die sie darstellt. Um dieses Beispiel bei Zoom 13 fortzusetzen, beträgt die durch die Maßstabsleiste dargestellte Entfernung in Nordkap (71 ° Breite) 2 km, in Nordkap (45 ° Breite) 1 km und am Äquator 500 m.
François
3

Basierend auf allen bereitgestellten Informationen habe ich eine Funktion erstellt, die das beste z für eine Karte liefert, wenn Sie eine horizontale Linie wünschen, die N% der angezeigten Karte darstellt.

Die angezeigte Karte zeichnet sich durch eine eigene Pixelbreite aus.

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);
}
Jaroc
quelle
3

Ich kann noch keinen Kommentar hinzufügen, aber dies ist eine mögliche Quelle für Petes Antwort oben: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates

[...] beachten Sie, dass jede zunehmende Zoomstufe sowohl in x- als auch in y-Richtung doppelt so groß ist. Daher enthält jede höhere Zoomstufe die vierfache Auflösung der vorherigen Stufe. Bei Zoomstufe 1 besteht die Karte beispielsweise aus 4 Kacheln mit 256 x 256 Pixeln, was einen Pixelraum von 512 x 512 ergibt. Bei Zoomstufe 19 kann auf jedes x- und y-Pixel auf der Karte mit einem Wert zwischen 0 und 256 * 2 19 verwiesen werden

Ingo Haumann
quelle
1

Ich habe die Maßstäbe für vier Zoomstufen berechnet:

Zoomstufe | Maßstab 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000

Es scheint, dass der Maßstab verdoppelt wird, wenn die Zoomstufe um einen Schritt erhöht wird. Ich hoffe also, dass der Maßstab für die Zoomstufe 16 1: 8000 ist und so weiter.

Pete
quelle
3
Willkommen bei GIS.SE! Können Sie bitte eine Quelle angeben oder wie wurde diese berechnet?
Paul
0

Hallo, ich glaube, ich habe berechnet, dass 1 Pixel = 11,627 km in gerader Linie; ohne Berücksichtigung des Erdradius. Hier der Link des Videos, das erklärt, wie: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Ich hoffe, das klärt deinen Geist.

Der Mr. Totardo
quelle
Es tut nicht. Der Wert eines Pixels hängt vom Breitengrad ab.
John Powell
Oh, ich verstehe, nicht den Komplex, in den ich hineingegangen bin.
Der Mr. Totardo