Quelquun peut-il me fournir un lien (ou quelques détails) sur le ratio réel par rapport aux chiffres du « niveau de zoom » pour Google Maps?
par exemple Google Maps Niveau 13 = 1: 20000
Commentaires
- Sur la base des premières informations, jai créé cette fonction, peut-être que quelquun pourrait lutiliser! function setZoomLevel (mètres) {//console.log(
Zoom level set meters: ${meters}
); var zoomfactor = 1; if (mètres < 1128) {zoomfactor = 15; } else if ((mètres > 1128) & & (mètres < 2256)) {zoomfactor = 14; } else if ((mètres > 2256) & & (mètres < 4513)) {zoomfactor = 13; } else if ((mètres > 4513) & & (mètres < 9027)) {zoomfactor = 12; } else if ((mètres > 9027) & & (mètres < 18055)) {zoomfactor = 11; } else if ((mètres > 18055) & & (mètres < 36111)) {zoomfactor = 10; } else if ((mètres > 36111) & & (mètres < 72
Réponse
Si vous concevez une carte, vous prévoyez de la superposer sur google maps ou virtual earth et en créant un schéma de mosaïque, je pense que ce que vous recherchez sont les échelles pour chaque niveau de zoom, utilisez celles-ci:
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
Source : http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm
Commentaires
- @capdragon Merci. Cela ‘ est une source bien connue (ESRI), mais nous nous demandons toujours comment ils ont proposé ces échelles.
- Rational est critique pour qui? Je ne vois ‘ aucune mention de rationnel dans la question. Je crois quil veut une réponse simple à sa question simple.
- @ cap Sans raison, il ‘ est difficile voire impossible à distinguer une réponse correcte à une mauvaise. Sans raison, on doit se fier à lautorité du répondeur. Je ‘ je suis presque sûr que la raison pour laquelle les autres réponses de ce fil sont votées et la vôtre nest pas ‘ t na pas grand-chose à voir avec lexactitude ou la franchise – la vôtre est la plus autoritaire et la plus directe du groupe – mais elle a plutôt tout à voir avec le raisonnement fourni par les autres. BTW Je nai ‘ avoir voté contre le vôtre.
- Merci: +1. Vous êtes probablement des géographes ou des gourous de la télédétection. Je ‘ ne suis quun développeur SIG qui veut aider le gars à trouver sa réponse. Un de mes collègues (type PHD, double majeur MIT) entre dans une heure de cours à chaque fois que je lui pose une question simple et me perd en cours de route. Je ne lui pose plus ‘ de questions (jai une maîtrise en sciences). Je comprends que dautres personnes aiment entrer dans la viande de rationnel et ainsi de suite, mais beaucoup dentre nous sont trop ignorants pour savoir de quoi ils parlent. À mon humble avis, ils étaient des réponses déroutantes qui ne ‘ ne répondent pas à sa question.
- Les échelles ont été choisies de manière à pouvoir être divisées uniformément par des tuiles raster de base 2 , (par exemple 128, 512 …). Bing le fait de la même manière msdn.microsoft.com/en-us/library/bb259689.aspx
Réponse
Jai trouvé cette réponse – écrite par un employé de Google – ce serait probablement la plus précise:
Cela ne sera pas précis, car la résolution dune carte avec la projection Mercator (comme Google Maps) dépend de la latitude.
Il est possible de calculer en utilisant cette formule:
metersPerPx = 156543.03392 * Math.cos(latLng.lat() * Math.PI / 180) / Math.pow(2, zoom)
Ceci est basé sur lhypothèse que le rayon de la terre est de 6378137m. Quelle est la valeur que nous utilisons 🙂
extrait de: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM
BTW – Je suppose que:
"latLng.lat()" = map.getCenter().lat() "zoom" = map.getZoom()
Commentaires
- QUEST-CE QUI équivaut à votre formule? Le faire pour lat = 2,92 et zoom 13, jai eu 19,08. Quest-ce que 19.08 quoi?
- @Rodrigo mètres par pixel
- Je peux témoigner que cette réponse est toujours correcte et très précise trois ans plus tard. Cela devrait être la réponse acceptée.
- Cela sapplique-t-il uniquement à x ou également à y ? Google Maps via lAPI Javascript utilise-t-il la même échelle pour les deux axes?
- @OldGeezer Oui, cela fonctionne dans toutes les directions. La distorsion linéaire en tout point dans Mercator est égale dans toutes les directions. Cest ‘ lune des raisons pour lesquelles il est utilisé pour les cartes glissantes. Lorsque vous effectuez un zoom avant, vous obtenez une carte de distorsion raisonnablement faible. une fois que vous avez compensé léchelle, cest ce que fait cette réponse.
Answer
Pour vous aider à comprendre les mathématiques (pas un calcul précis, cest juste pour lillustration):
- La tuile de carte Web de Google a 256 pixels de largeur
-
disons votre lécran de lordinateur a 100 pixels par pouce (PPI). Cela signifie que 256 pixels font environ 6,5 cm de long. Et que « s 0,065 m .
-
sur niveau de zoom 0 , sur 360 degrés de longitude sont visibles dans une seule tuile . Vous ne pouvez pas lobserver dans Google Maps car il passe automatiquement au niveau de zoom 1, mais vous pouvez le voir sur la carte de OpenStreetMap « (il utilise le même schéma de tuilage ).
-
360 degrés sur léquateur sont égaux à la circonférence de la Terre, 40 075,16 km, soit 40075160 m
-
diviser 40075160 m avec 0,065 m et vous « obtiendrez 616313361 , qui est une échelle de niveau de zoom 0 sur léquateur pour un écran dordinateur avec 100 ppp
- donc le fait est que léchelle dépend du PPI de votre moniteur et de la latitude (à cause de la projection Mercator)
- pour le niveau de zoom 1, le léchelle est la moitié de celle du niveau de zoom 0
- …
- pour le niveau de zoom N, léchelle est dune demi f de celui du niveau de zoom N-1
Vérifiez également: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F
Commentaires
- Léchelle dépend en fait du DPI des images cartographiques générées. Les deux résolutions les plus couramment utilisées sont 96DPI (qui ‘ ce que sont les tuiles Google map) et 72DPI.
- Avec 96DPI, léchelle
591657550.500000
est le niveau 0 selon cette réponse. Mais selon @CaptDragon est le niveau 1. Je devrais envisager de partir du niveau 1 pour calculer avec Google Maps?
Réponse
Pas si simple. Compte tenu de la projection, la taille des pixels de la vignette dépend de la latitude de la zone qui vous intéresse. Ensuite, en termes de transformation de la taille de pixel de la vignette en taille de pixel de l’écran, cela dépend de l’écran et de la résolution à laquelle les données sont affichées. dpi que votre écran utilise.
Commentaires
- Cest exact, le mercator sphérique (projection google) ne ‘ t conserver une échelle égale lorsque vous vous éloignez de léquateur. Pour une excellente référence: Mapnik ‘ s Article sur les dénominateurs déchelle et déchelle: trac.mapnik.org/wiki/ScaleAndPpi et aussi OSM ‘ FAQ: wiki.openstreetmap.org/ wiki / …
Réponse
Simple réponse correcte faisant autorité:
591657550.500000 / 2^(level-1)
il vous donne le tableau ci-dessus, en entrant le niveau de zoom.
Essayez-le en direct sur jsfiddle.net
Parce que la question ne concerne que Google MAPS, pas EARTH, lOP ne se soucie pas de la géométrie 3D. Les cartes Google sont DÉJÀ aplaties donc 1 pixel correspond toujours à la même distance (en DEGREES, ce qui concerne une carte google), ici et dans lécuateur comme dans les pôles.
Au fait, avez-vous réaliser que quelque part à lintérieur de la première ligne de pixels dune carte du monde, léchelle est de 1: 1?
Commentaires
- Que signifie le nombre 591657550.500000 représente?
- @Sergio pourquoi pas seulement 591657550.5?
- » Le nombre provient de la résolution de la tuile étant définie à un multiple de 256 pixels et de la résolution de lécran (96 dpi) » gis.stackexchange.com/a/111589/ 92997
- Ne fonctionne pas – cela dépend de Latitude, mais votre formule ne lest pas
Answer
Il existe un tel tableau dans la documentation du système Virtal Earth Tile System de Microsoft . Mais comme la dit GuillaumeC, les valeurs dépendent du latitude et sur la résolution de lécran. Le tableau donne les valeurs mesurées à léquateur et à une résolution décran de 96 dpi.
PS: Je nen suis pas sûr, mais les niveaux de zoom de Microsoft pourraient être décalés de 1 par rapport aux niveaux de zoom de Google.Mais ils utilisent définitivement la même projection pour que les valeurs restent correctes pour Google.
Answer
Radius @ Equator 6.378.137 mètres exact ( WGS-84)
Circonférence à léquateur = 40 075 017 mètres (2πr)
Le niveau de zoom 24 utilise 2 à 32 pixels de puissance (4 294 967 296) à la circonférence.
Circonférence équatoriale / 2 32 = .009330692 mètres par pixel
Unité à Latitude = (cosinus de latitude) X (unité à léquateur)
Le niveau de zoom double chaque incrément.
1 pied (International) = 0,3048 mètres
Modifier
Eh bien, ce nest pas vraiment une question légitime pour commencer. Les rapports déchelle sont relatifs aux documents imprimés et non aux écrans dordinateur. Ce dont vous avez besoin pour que ces images soient utilisées avec une précision quelconque, cest de connaître la dimension de chaque pixel, puis de redimensionner limage en fonction de ce que vous superposez.
Donc, il y a 15-20 ans, quelquun a pris WGS- 84 comme données de base. (notez que dans un message précédent, quelquun a utilisé une valeur de 40 075 160 Jai vu ceci sur Wikipedia à quelques endroits et cest incorrect. La valeur correcte est 40 075 017
Ils ont ensuite pris cela et lont divisé par un Entier 32 bits. Cest un choix logique car il donne une précision globale denviron un centimètre, ce qui est suffisant pour limagerie aérienne. Les entiers 32 bits sont également efficaces à stocker et à traiter.
Pourquoi le niveau 24 a été choisi Cependant, je ne sais pas, car quelquun dautre ici a déterminé que 0 vous ramène à une tuile de 256 pixels pour la Terre.
Maintenant, pour un exemple dutilisation des données ci-dessus. Disons que jai une image au niveau de zoom 20 (aussi zoomé quils vous le permettent actuellement) Prenez 0,009330692 (Zoom 24 à léquateur) doublez-le pour le zoom 23, encore une fois pour le zoom 22, encore une fois pour le zoom 21 et une dernière fois pour le zoom 20. Vous devriez maintenant avoir 0,149231071 .
Disons maintenant que notre image est à la latitude 45. Prenez le cosinus de cela (0,707106781) et multipliez-le par notre 0,149231071 et cela vous donnera 0,105564729 mètre s. Cest la longueur et la hauteur dun pixel dune image à la latitude 45 au niveau de zoom 20. Si vous capturez une image de 1000 x 1000 pixels de cette zone, la dimension est de 105,56 mètres carrés. Si vous voulez que les pieds divisent ce 0,3048
En ce qui concerne les sources, jai essentiellement inversé lingénieur il y a environ 5 ans à partir de diverses informations et de la documentation que jai trouvées sur le Web, y compris les sites de support de cartographie Google et MS.
Jai utilisé cette centaine de fois et la superposer avec des données denquête sur le terrain et cela a toujours été correct. Vérifiez-le par rapport à lun des tableaux affichés ici et les nombres correspondront.
Commentaires
- I ‘ Je ne sais pas comment cela répond à la question.
- Je suis daccord avec @Devdatta, pourriez-vous sil vous plaît fournir une source et un contexte.
- Je ne sais pas si ces commentaires étaient avant ou après le modifier, mais jai utilisé cette réponse et cela fonctionne très bien
Réponse
Je viens de faire quelques calculs et jai obtenu ce qui suit résultats:
Google Maps affiche une règle de 1 km (en bas à gauche de la carte) dune longueur de 90 pixels, au niveau de zoom 13. Ce qui signifie ce qui suit:
En supposant la résolution de lécran est de 96 dpi ou 36 dpcm, au niveau de zoom 13, nous avons 0,4 km (à partir de 36/90) en 1 cm, ce qui donne une échelle de carte de 1:40 000 pour un écran de 96 dpi.
Pour diverses opérations sur lécran le mieux est de prendre 90px comme base, car tous les nombres seront ronds à tous les niveaux de zoom, cest-à-dire
- Niveau de zoom 12: 2 km en 90px
- Niveau de zoom l 11: 4km en 90px
- Niveau de zoom 10: 8km en 90px
et ainsi de suite.
Notez quil sagit dune approximation qui devrait fonctionnent plus ou moins bien sur des échelles plus petites plutôt que sur des grandes.
(Et Google aime les nombres ronds à la fin …)
Commentaires
- Si vous regardez de près, vous ‘ découvrirez que la longueur de la ligne change en fonction de la latitude de la zone que vous ‘ re visualisation.
- Ceci est valide à une latitude spécifique uniquement, comme @rcoup la mentionné. Non seulement la longueur de la barre déchelle varie, mais aussi la distance quelle représente. Pour continuer cet exemple au zoom 13, la distance représentée par la barre déchelle est de 2 km au Cap Nord (71 ° latitude), 1 km autour de 45 ° latitude, et 500 m à léquateur.
Réponse
Sur la base de toutes les informations fournies , Jai construit une fonction qui donne le meilleur z appliqué à une carte lorsque vous voulez avoir une ligne horizontale qui représente N% de la carte affichée.
La carte affichée est caractérisée par sa propre largeur de pixel.
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); }
Réponse
Je ne peux pas encore ajouter de commentaire mais ceci est une source possible de la réponse de Pete ci-dessus: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates
[…] notez que chaque niveau de zoom croissant est deux fois plus grand dans les directions x et y. Par conséquent, chaque niveau de zoom supérieur contient quatre fois plus de résolution que le niveau précédent. Par exemple, au niveau de zoom 1, la carte se compose de 4 tuiles de 256×256 pixels, ce qui donne un espace de pixels de 512×512. Au niveau de zoom 19, chaque pixel x et y de la carte peut être référencé en utilisant une valeur comprise entre 0 et 256 * 2 19
Réponse
Jai calculé les échelles pour quatre niveaux de zoom:
Niveau de zoom | Echelle 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000
Il semble que léchelle est doublée à mesure que le niveau de zoom augmente dun cran. Donc, jespère que léchelle du niveau de zoom 16 sera 1: 8000 et ainsi de suite.
Commentaires
- Bienvenue sur GIS.SE! Pouvez-vous sil vous plaît fournir une source ou comment cela a-t-il été calculé?
Réponse
Bonjour, je pense avoir calculé cela 1 pixel = 11,627 km en ligne droite; ne tenant pas compte du rayon de la terre. Voici le lien de la vidéo qui explique comment: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Jespère que cela clarifie votre esprit.
Commentaires
- Ce nest pas le cas. La valeur dun pixel dépend de la latitude.
- Oh je vois, pas le complexe dans lequel je suis entré.