¿Alguien puede proporcionarme un enlace (o algunos detalles) sobre la relación real con las cifras del «nivel de zoom» de Google Maps?
por ejemplo Nivel 13 de Google Maps = 1: 20000
Comentarios
- Basado en la primera información que hice esta función, ¡quizás alguien podría usarla! function setZoomLevel (metros) {//console.log(
Zoom level set meters: ${meters}
); var zoomfactor = 1; if (metros < 1128) {zoomfactor = 15; } else if ((metros > 1128) & & (metros < 2256)) {zoomfactor = 14; } else if ((metros > 2256) & & (metros < 4513)) {zoomfactor = 13; } else if ((metros > 4513) & & (metros < 9027)) {zoomfactor = 12; } else if ((metros > 9027) & & (metros < 18055)) {zoomfactor = 11; } else if ((metros > 18055) & & (metros < 36111)) {zoomfactor = 10; } else if ((metros > 36111) & & (metros < 72
Respuesta
Si está diseñando un mapa, planea superponer sobre google maps o virtual earth y creando un esquema de mosaico, creo que lo que está buscando son las escalas para cada nivel de zoom, use estas:
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
Fuente : http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm
Comentarios
- @capdragon Gracias. Esa ‘ es una fuente conocida (ESRI), pero nos deja todavía preguntándonos cómo se les ocurrieron estas escalas.
- Racional es ¿Crítico para quién? No ‘ no veo ninguna mención de racional en la pregunta. Creo que quiere una respuesta directa a su pregunta directa.
- @ límite Sin una razón, ‘ es difícil o imposible de distinguir una respuesta correcta de una incorrecta. Sin una razón, uno tiene que confiar en la autoridad de quien responde. Estoy ‘ bastante seguro de que la razón por la que las otras respuestas en este hilo se votan a favor y la tuya no ‘ tiene poco que ver con corrección o franqueza (la suya es la más autorizada y directa de todas), pero tiene mucho que ver con el razonamiento proporcionado por los demás. Por cierto, no he ‘ t voté en contra del tuyo.
- Gracias: +1. Probablemente ustedes sean geógrafos o gurús de la teledetección. Yo ‘ soy simplemente un desarrollador de SIG que quiere ayudar al tipo a llegar a su respuesta. Un colega mío (tipo PHD, doble especialización del MIT) entra en una conferencia de una hora cada vez que le hago una pregunta simple y me pierde en el camino. No ‘ no le hago más preguntas (tengo una maestría en ciencias). Entiendo que a otras personas les gusta meterse en la carne de lo racional y demás, pero muchos de nosotros somos demasiado ignorantes para saber de qué están hablando. En mi humilde opinión, eran respuestas confusas que no ‘ t responden su pregunta.
- Las escalas se eligieron para que puedan dividirse uniformemente por mosaicos ráster que están en base 2 , (por ejemplo, 128, 512 …). Bing lo hace de manera similar msdn.microsoft.com/en-us/library/bb259689.aspx
Respuesta
Encontré esta respuesta, escrita por un empleado de Google, esta probablemente sería la más precisa:
Esto no será exacto, porque la resolución de un mapa con la proyección de Mercator (como los mapas de Google) depende de la latitud.
Es posible calcular usando esta fórmula:
metersPerPx = 156543.03392 * Math.cos(latLng.lat() * Math.PI / 180) / Math.pow(2, zoom)
Esto se basa en la suposición de que el radio de la Tierra es 6378137 m. Que es el valor que usamos 🙂
tomado de: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM
Por cierto – Supongo que:
"latLng.lat()" = map.getCenter().lat() "zoom" = map.getZoom()
Comentarios
- ¿QUÉ es igual a tu fórmula? Haciéndolo para lat = 2.92 y zoom 13 obtuve 19.08. ¿Qué es 19.08 qué?
- @Rodrigo metros por píxel
- Puedo testificar que esta respuesta sigue siendo correcta y muy precisa tres años después. Esta debería ser la respuesta aceptada.
- ¿Se aplica esto solo a x o también a y ? ¿Google Maps a través de la API de JavaScript utiliza la misma escala para ambos ejes?
- @OldGeezer Sí, funciona en todas las direcciones. La distorsión lineal en cualquier punto de Mercator es igual en todas las direcciones. Esa ‘ es una de las razones por las que se usa para mapas deslizantes. Cuando se acerca mucho, se obtiene un mapa de distorsión razonablemente baja. una vez que compensa la escala, que es lo que hace esta respuesta.
Responder
Para ayudarlo a comprender las matemáticas (no es un cálculo preciso, es solo una ilustración):
- El mosaico del mapa web de Google tiene 256 píxeles de ancho
-
digamos El monitor de la computadora tiene 100 píxeles por pulgada (PPI). Eso significa que 256 píxeles tienen aproximadamente 6,5 cm de longitud. Y que «s 0,065 m .
-
en nivel de zoom 0 , los 360 grados completos de longitud son visibles en un solo mosaico . No puede observar esto en Google Maps, ya que se mueve automáticamente al nivel de zoom 1, pero puede verlo en el mapa de OpenStreetMap (utiliza el mismo esquema de mosaico ).
-
360 grados en el ecuador son iguales a la circunferencia de la Tierra, 40,075.16 km, que es 40075160 m
-
dividir 40075160 m con 0,065 m y «obtendrás 616313361 , que es una escala de nivel de zoom 0 en el Ecuador para un monitor de computadora con 100 DPI
- entonces el punto es que la escala depende del PPI de su monitor y de la latitud (debido a la proyección de Mercator)
- para el nivel de zoom 1, el la escala es la mitad de la del nivel de zoom 0
- …
- para el nivel de zoom N, la escala es una mitad f del nivel de zoom N-1
Consulte también: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F
Comentarios
- La escala en realidad se basa en el DPI de las imágenes de mapa generadas. Las dos resoluciones más utilizadas son 96 ppp (que ‘ son los mosaicos de mapas de Google) y 72 ppp.
- Con 96 ppp, la escala
591657550.500000
es el nivel 0 de acuerdo con esta respuesta. Pero de acuerdo con @CaptDragon, ¿es el Nivel 1. Debería considerar comenzar desde el nivel 1 para calcular con Google Maps?
Respuesta
No es tan fácil. Dada la proyección, el tamaño de los píxeles del mosaico depende de la latitud del área que le interesa. Luego, en términos de transformar el tamaño del píxel del mosaico en tamaño de píxel de la pantalla, depende de la pantalla y de la resolución que se muestran los datos, el ppp que usa su pantalla.
Comentarios
- Eso es correcto, mercator esférico (proyección de Google) no ‘ t conserva la misma escala a medida que te alejas del ecuador. Para una excelente referencia: Mapnik ‘ s Artículo de escala y denominadores de escala: trac.mapnik.org/wiki/ScaleAndPpi y también ‘ s FAQ de OSM: wiki.openstreetmap.org/ wiki / …
Respuesta
Sencillo respuesta correcta autorizada:
591657550.500000 / 2^(level-1)
le da la tabla de arriba, ingresando el nivel de zoom.
Pruébelo en vivo en jsfiddle.net
Debido a que la pregunta es solo para Google MAPS, no para EARTH, al OP no le importa la geometría 3D. Los mapas de Google YA están aplanados por lo que 1 píxel es siempre la misma distancia (en GRADOS, que es lo que concierne a un mapa de Google), aquí y en el ecuador como en los polos.
Por cierto, ¿lo hiciste? darse cuenta de que en algún lugar dentro de la primera fila de píxeles del mapa del mundo, la escala es 1: 1?
Comentarios
- ¿Qué significa el número 591657550.500000 representar?
- @Sergio, ¿por qué no solo 591657550.5?
- » El número proviene de la resolución del mosaico que se establece en un múltiplo de 256 píxeles, y de la resolución de pantalla (96 ppp) » gis.stackexchange.com/a/111589/ 92997
- No funciona, depende de Latitude, pero su fórmula no es
Respuesta
Existe una tabla de este tipo en la documentación del Virtal Earth Tile System de Microsoft . Pero como dijo GuillaumeC, los valores dependen de la latitud y en la resolución de la pantalla. La tabla da valores medidos en el Ecuador y con una resolución de pantalla de 96 ppp.
PD: No estoy seguro de eso, pero los niveles de zoom de Microsoft podrían cambiar en 1 en comparación con los niveles de zoom de Google.Pero definitivamente usan la misma proyección para que los valores sigan siendo correctos para Google.
Respuesta
Radio @ Ecuador 6,378,137 metros exactos ( WGS-84)
Circunferencia en el Ecuador = 40,075,017 metros (2πr)
El nivel de zoom 24 usa 2 elevado a 32 (4,294,967,296) píxeles en la circunferencia.
Circunferencia ecuatorial / 2 32 = .009330692 metros por píxel
Unidad en latitud = (coseno de latitud) X (unidad en Ecuador)
El nivel de zoom duplica cada incremento.
1 pie (internacional) = 0,3048 metros
Editar
Bueno, no es realmente una pregunta legítima para empezar. Las proporciones de escala son relativas a documentos impresos, no a pantallas de computadora. Lo que necesita para que estas imágenes se usen con precisión es conocer la dimensión de cada píxel y luego escalar la imagen de acuerdo con lo que sea que la superponga.
Así que hace 15-20 años, alguien tomó WGS- 84 como datos base. (tenga en cuenta que en una publicación anterior alguien usó un valor de 40,075,160. He visto esto en Wikipedia en algunos lugares y es incorrecto. El valor correcto es 40,075,017
Luego lo tomaron y lo dividieron por un Entero de 32 bits. Esta es una elección lógica, ya que proporciona una precisión global de aproximadamente un centímetro, lo que es suficiente para imágenes aéreas. Los enteros de 32 bits también son eficientes para almacenar y procesar.
Por qué se eligió este nivel 24 No sé, sin embargo, ya que alguien más aquí calculó 0 te lleva a un mosaico de 256 píxeles para la Tierra.
Ahora, para un ejemplo de cómo usar los datos anteriores. Digamos que tengo una imagen en el nivel de zoom 20 (con el zoom que le permiten obtener actualmente) Tome 0.009330692 (Zoom 24 en el ecuador) duplíquelo para el zoom 23, nuevamente para el zoom 22, nuevamente para el zoom 21 y una última vez para el zoom 20. Ahora debería tener 0.149231071 .
Ahora digamos que nuestra imagen está en la latitud 45. Toma el coseno de eso (0.707106781) y multiplícalo por nuestro 0.149231071 y te dará 0.105564729 metro s. Esa es la longitud y la altura de un píxel de una imagen en una latitud de 45 con un nivel de zoom 20. Si captura en pantalla una imagen de 1000 x 1000 píxeles de esa área, las dimensiones son 105,56 metros cuadrados. Si desea dividir los pies en 0.3048
En cuanto a las fuentes, hace unos 5 años, un ingeniero inverso esencial de varios datos y documentación que encontré en la web, incluidos los sitios de soporte de mapas de Google y MS.
He usado este centenar de veces y lo superpuse con datos de encuestas de campo y siempre ha sido correcto. Compruébelo con cualquiera de las tablas publicadas aquí y los números coincidirán.
Comentarios
- I ‘ No estoy seguro de cómo esto responde a la pregunta.
- Estoy de acuerdo con @Devdatta, ¿podría proporcionar una fuente y algo de contexto?
- No estoy seguro si estos comentarios fueron antes o después de la editar, pero usé esta respuesta y funciona muy bien
Answer
Acabo de hacer algunos cálculos y obtuve lo siguiente resultados:
Google Maps muestra una regla de 1 km (parte inferior izquierda del mapa) que tiene 90 píxeles de longitud, en el nivel de zoom 13. Lo que significa lo siguiente:
Suponiendo la resolución de la pantalla es 96 ppp o 36 dpcm, en el nivel de zoom 13 tenemos 0,4 km (de 36/90) en 1 cm, lo que arroja una escala de mapa de 1: 40.000 para una pantalla de 96 ppp.
Para varias operaciones en la pantalla lo mejor es tomar 90px como base, ya que todos los números serán redondos en todos los niveles de zoom, es decir,
- Nivel de zoom 12: 2 km en 90px
- Nivel de zoom l 11: 4 km en 90 px
- Nivel de zoom 10: 8 km en 90 px
y así sucesivamente.
Tenga en cuenta que esta es una aproximación que debería funciona más o menos bien en escalas más pequeñas que en grandes.
(Y a Google le gustan los números redondos al final …)
Comentarios
- Si miras de cerca, ‘ descubrirás que la longitud de la línea cambia dependiendo de la latitud del área que ‘ re ver.
- Esto es válido solo en una latitud específica, como mencionó @rcoup. No solo varía la longitud de la barra de escala, sino también la distancia que representa. Para continuar con este ejemplo con zoom 13, la distancia representada por la barra de escala es de 2 km en Cabo Norte (71 ° latitud), 1 km alrededor de 45 ° latitud y 500 m en la línea equateur.
Respuesta
Basado en toda la información proporcionada , He creado una función que proporciona la mejor z aplicada a un mapa cuando desea tener una línea horizontal que represente el N% del mapa mostrado.
El mapa mostrado se caracteriza por su propio ancho de píxel.
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); }
Respuesta
Todavía no puedo agregar un comentario, pero esta es una posible fuente de la respuesta de Pete anterior: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates
[…] tenga en cuenta que cada aumento del nivel de zoom es el doble de grande en las direcciones xe y. Por lo tanto, cada nivel de zoom superior contiene cuatro veces más resolución que el nivel anterior. Por ejemplo, en el nivel de zoom 1, el mapa consta de 4 mosaicos de 256×256 píxeles, lo que da como resultado un espacio de píxeles de 512×512. En el nivel de zoom 19, se puede hacer referencia a cada píxel xey del mapa con un valor entre 0 y 256 * 2 19
Respuesta
Calculé las escalas para cuatro niveles de zoom:
Nivel de zoom | Escala 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000
Parece que la escala se duplica cuando el nivel de zoom aumenta en un paso. Entonces, espero que la escala para el nivel de zoom 16 sea 1: 8000 y así sucesivamente.
Comentarios
- ¡Bienvenido a GIS.SE! ¿Puede proporcionar una fuente o cómo se calculó?
Respuesta
Hola, creo que he calculado eso 1 píxel = 11,627 km en línea recta; sin tener en cuenta el radio de la tierra. Aquí el enlace del video que explica cómo: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Espero que aclare su mente.
Comentarios
- No es así. El valor de un píxel depende de la latitud.
- Ya veo, no es ese complejo en el que entré.