Alguém pode me fornecer um link (ou alguns detalhes) sobre a proporção real para números de “nível de zoom” para o Google Maps?

por exemplo Google Maps Nível 13 = 1: 20000

Comentários

  • Com base nas primeiras informações que fiz esta função, talvez alguém possa usá-la! 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

Resposta

Se você estiver projetando um mapa, pretende sobrepor no google maps ou na terra virtual e criando um esquema de blocos, então acho que o que você está procurando são as escalas para cada nível 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 

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

Comentários

  • @capdragon Obrigado. Isso ‘ é uma fonte bem conhecida (ESRI), mas ainda nos deixa imaginando como eles surgiram com essas escalas.
  • Racional é crítico para quem? Não ‘ não vejo qualquer menção de racional na pergunta. Acredito que ele deseja uma resposta direta à sua pergunta direta.
  • @ cap Sem motivo, é ‘ difícil ou impossível de distinguir uma resposta correta de uma incorreta. Sem uma razão, fica-se tendo que confiar na autoridade de quem responde. Eu ‘ tenho certeza de que o motivo pelo qual as outras respostas neste tópico estão sendo votadas e a sua não ‘ tem pouco a ver com correção ou franqueza – o seu é o mais confiável e direto do grupo – mas, ao contrário, tem tudo a ver com o raciocínio fornecido pelos outros. A propósito, eu não ‘ t votei contra o seu.
  • Obrigado: +1. Vocês provavelmente são geógrafos ou gurus de sensoriamento remoto. Eu ‘ sou apenas um desenvolvedor de GIS que quer ajudar o cara a chegar em sua resposta. Um colega meu (tipo PHD, especialização dupla no MIT) dá uma aula de uma hora toda vez que faço uma pergunta simples e me perde no meio do caminho. Não ‘ não faço mais perguntas a ele (tenho mestrado em ciências). Eu entendo que outras pessoas gostam de entrar na carne do racional e assim por diante, mas muitos de nós somos muito ignorantes para saber do que estão falando. IMHO, eles eram respostas confusas que não ‘ não respondem à sua pergunta.
  • As escalas foram escolhidas de forma que possam ser divididas uniformemente por blocos raster que estão na base 2 , (por exemplo, 128, 512 …). Bing faz isso de forma semelhante msdn.microsoft.com/en-us/library/bb259689.aspx

Resposta

Encontrei esta resposta – escrita por um funcionário do Google – provavelmente é a mais precisa:

Isso não será preciso, porque a resolução de um mapa com a projeção do mercator (como o Google Maps) depende da latitude.

É possível calcular usando esta fórmula:

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

Isso se baseia na suposição de que o raio da Terra é 6378137m. Qual é o valor que usamos 🙂

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

BTW – Estou supondo que:

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

Comentários

  • O QUE é igual à sua fórmula? Fazendo isso para lat = 2,92 e zoom 13, obtive 19,08. O que é 19.08 o quê?
  • @Rodrigo metros por pixel
  • Posso testemunhar que esta resposta ainda é correta e muito precisa três anos depois. Esta deve ser a resposta aceita.
  • Isso se aplica a x apenas ou também a y ? O Google Maps via Javascript API usa a mesma escala para os dois eixos?
  • @OldGeezer Sim, funciona em todas as direções. A distorção linear em qualquer ponto de Mercator é igual em todas as direções. Esse ‘ é um dos motivos pelos quais ele é usado para mapas escorregadios. Quando você aumenta o zoom, obtém um mapa de distorção razoavelmente baixo. depois de compensar a escala, que é o que esta resposta faz.

Resposta

Para ajudá-lo a entender a matemática (não é um cálculo preciso, é apenas para ilustração):

  • O bloco do mapa da web do Google tem 256 pixels de largura
  • digamos que seu monitor de computador tem 100 pixels por polegada (PPI). Isso significa que 256 pixels têm cerca de 6,5 cm de comprimento. E isso “s 0,065 m .

  • em nível de zoom 0 , todos os 360 graus de longitude são visíveis em um único bloco . Você não pode observar isso no Google Maps, pois ele se move automaticamente para o nível de zoom 1, mas você pode vê-lo no mapa do OpenStreetMap (ele usa o mesmo esquema de blocos ).

  • 360 graus no Equador são iguais à circunferência da Terra, 40.075,16 km, que é 40075160 m

  • divide 40075160 m com 0,065 m e você “obterá 616313361 , que é uma escala de nível de zoom 0 no Equador para um monitor de computador com 100 DPI

  • então a questão é que a escala depende do PPI do seu monitor e da latitude (por causa da projeção de Mercator)
  • para o nível de zoom 1, o a escala é a metade daquela do nível de zoom 0
  • para o nível de zoom N, a escala é um meio f do nível de zoom N-1

Verifique também: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F

Comentários

  • A escala realmente depende do DPI das imagens de mapa geradas. As duas resoluções mais comumente usadas são 96DPI (que ‘ o que são os blocos de mapas do Google) e 72DPI.
  • Com 96DPI, a escala 591657550.500000 é o Nível 0 de acordo com esta resposta. Mas, de acordo com @CaptDragon, é o nível 1. Devo começar a partir do nível 1 para calcular com o Google Maps?

Resposta

Não é tão fácil. Dada a projeção, o tamanho dos pixels do ladrilho depende da latitude da área em que você está interessado. Então, em termos de transformar o tamanho do pixel do ladrilho no tamanho do pixel da tela, depende da tela e da resolução em que os dados são exibidos, o dpi que sua tela está usando.

Comentários

Resposta

Simples resposta correta confiável:

591657550.500000 / 2^(level-1) 

ele fornece a tabela acima, inserindo o nível de zoom.

Experimente ao vivo em jsfiddle.net

Como a questão é apenas para o Google MAPS, não para o EARTH, o OP não se preocupa com a geometria 3D. Os mapas do Google JÁ estão achatados, então 1 pixel é sempre a mesma distância (em GRAUS, que é o que diz respeito a um mapa do google), aqui e no equator como nos pólos.

A propósito, você percebe que em algum lugar dentro da primeira linha de pixel de um mapa-múndi, a escala é 1: 1?

Comentários

  • O que significa o número 591657550.500000 representa?
  • @Sergio por que não apenas 591657550,5?
  • ” O número vem da resolução do bloco sendo definida em um múltiplo de 256 pixels e da resolução da tela (96dpi) ” gis.stackexchange.com/a/111589/ 92997
  • Não funciona – depende do Latitude, mas sua fórmula não é

Resposta

Essa tabela existe na documentação do Virtal Earth Tile System da Microsoft . Mas, como disse GuillaumeC, os valores dependem do latitude e em a resolução da tela. A tabela fornece valores medidos no Equador e em uma resolução de tela de 96 dpi.

PS: Não tenho certeza disso, mas os níveis de zoom da Microsoft podem ser deslocados em 1 em comparação aos níveis de zoom em Google.Mas eles definitivamente usam a mesma projeção para que os valores permaneçam corretos para o Google.

Resposta

Radius @ Equator 6.378.137 metros exatos ( WGS-84)

Circunferência no Equador = 40.075.017 metros (2πr)

O nível de zoom 24 usa 2 elevado à potência de 32 (4.294.967.296) pixels na circunferência.

Circunferência equatorial / 2 32 = 0,009330692 metros por pixel

Unidade na latitude = (cosseno da latitude) X (unidade no equador)

O nível de zoom dobra a cada incremento.

1 pé (Internacional) = 0,3048 metros

Editar

Bem, não é realmente uma pergunta legítima para começar. As proporções de escala são relativas a documentos impressos, não a telas de computador. O que você precisa para que essas imagens sejam usadas com alguma precisão é saber a dimensão de cada pixel e dimensionar a imagem de acordo com o que quer que esteja sendo sobreposto a ela.

Então, há 15-20 anos, alguém fez o WGS- 84 como dados de base. (observe em uma postagem anterior que alguém usou um valor de 40.075.160. Eu vi isso na Wikipedia alguns lugares e está incorreto. O valor correto é 40.075.017

Eles então pegaram isso e dividiram por um total Inteiro de 32 bits. Esta é uma escolha lógica, pois produz uma precisão global de cerca de um centímetro, o que é suficiente para imagens aéreas. Inteiros de 32 bits também são eficientes para armazenar e processar.

Por que este nível 24 foi escolhido Não sei, no entanto, já que alguém aqui calculou 0 reduz para um bloco de 256 pixels para a Terra.

Agora, um exemplo de como usar os dados acima. Digamos que eu tenha uma imagem no nível de zoom 20 (com o zoom que eles permitem que você obtenha) Tome 0,009330692 (zoom 24 no equador) dobre para o zoom 23, novamente para o zoom 22, novamente para o zoom 21 e uma última vez para o zoom 20. Você deve agora ter 0,149231071 .

Agora, digamos que nossa imagem esteja na latitude 45. Pegue o cosseno disso (0,707106781) e multiplique-o por nosso 0,149231071 e você terá 0,105564729 metros s. Esse é o comprimento e a altura de um pixel de uma imagem na latitude 45 no nível de zoom 20. Se você capturar uma imagem de 1000 x 1000 pixels dessa área, a dimensão terá 105,56 metros quadrados. Se você quiser pés, divida isso 0,3048

Quanto às fontes, eu fiz um engenheiro reverso essencial cerca de 5 anos atrás de várias informações e documentação que encontrei na web, incluindo Google e sites de suporte de mapeamento MS.

Eu usei centenas de vezes e sobrepondo-os com dados de levantamento de campo, e sempre estiveram corretos. Compare com qualquer uma das tabelas postadas aqui e os números corresponderão.

Comentários

  • I ‘ não tenho certeza de como isso responde à pergunta.
  • Eu concordo com @Devdatta, você poderia fornecer uma fonte e algum contexto.
  • Não tenho certeza se esses comentários foram antes ou depois de editar, mas usei esta resposta e ela funciona muito bem

Resposta

Apenas fiz alguns cálculos e obtive o seguinte resultados:

O Google Maps mostra uma régua de 1 km (parte inferior esquerda do mapa) com 90 pixels de comprimento, no nível de zoom 13. O que significa o seguinte:

Assumindo a resolução da tela é 96 dpi ou 36 dpcm, no nível de zoom 13 temos 0,4 km (de 36/90) em 1 cm, o que produz uma escala de mapa de 1: 40.000 para uma tela de 96 dpi.

Para várias operações na tela o melhor é usar 90px como base, pois todos os números serão redondos em todos os níveis de zoom, ou seja,

  • Nível de zoom 12: 2km em 90px
  • Nível de zoom l 11: 4km em 90px
  • Nível de zoom 10: 8km em 90px

e assim por diante.

Observe que esta é uma aproximação que deve funcionam mais ou menos bem em escalas menores do que em escalas grandes.

(E o Google gosta de números redondos no final …)

Comentários

  • Se você olhar de perto, ‘ descobrirá que o comprimento da linha muda dependendo da latitude da área que você ‘ re visualizando.
  • Isso é válido apenas em uma latitude específica, como @rcoup mencionado. Não apenas o comprimento da barra de escala varia, mas também a distância que ela representa. Para continuar este exemplo no zoom 13, a distância representada pela barra de escala é 2 km em North Cape (71 ° latitude), 1 km em torno de 45 ° latitude e 500 m no equator.

Resposta

Com base em todas as informações fornecidas , Eu construí uma função que fornece o melhor z aplicado a um mapa quando você deseja ter uma linha horizontal que representa N% do mapa exibido.

O mapa exibido é caracterizado por sua própria largura 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); }  

Resposta

Não posso adicionar um comentário ainda, mas esta é uma possível fonte da resposta de Pete” acima: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates

[…] observe que cada aumento do nível de zoom é duas vezes maior nas direções xey. Portanto, cada nível de zoom superior contém quatro vezes mais resolução do que o nível anterior. Por exemplo, no nível de zoom 1, o mapa consiste em 4 blocos de 256×256 pixels, resultando em um espaço de pixel de 512×512. No nível de zoom 19, cada pixel xey no mapa pode ser referenciado usando um valor entre 0 e 256 * 2 19

Resposta

Eu calculei as escalas para quatro níveis de zoom:

Nível de zoom | Escala 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000

Parece que a escala é duplicada conforme o nível de zoom aumenta em um passo. Portanto, espero que a escala para o nível de zoom 16 seja 1: 8000 e assim por diante.

Comentários

  • Bem-vindo ao GIS.SE! Você pode fornecer uma fonte ou como isso foi calculado?

Resposta

Olá, acho que calculei isso 1 pixel = 11,627km em linha reta; não levando em consideração o raio da terra. Aqui está o link do vídeo que explica como: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Espero que isso clareie sua mente.

Comentários

  • Não faz. O valor de um pixel depende da latitude.
  • Ah, entendo, não tão complexo em que entrei.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *