Qualcuno può fornirmi un link (o alcuni dettagli) sul rapporto effettivo con le cifre del “livello di zoom” per Google Maps?

ad es Google Maps Livello 13 = 1: 20000

Commenti

  • Sulla base delle prime informazioni che ho creato questa funzione, forse qualcuno potrebbe usarla! funzione setZoomLevel (metri) {//console.log(Zoom level set meters: ${meters}); var zoomfactor = 1; if (metri < 1128) {zoomfactor = 15; } altrimenti se ((metri > 1128) & & (metri < 2256)) {zoomfactor = 14; } altrimenti se ((metri > 2256) & & (metri < 4513)) {zoomfactor = 13; } altrimenti se ((metri > 4513) & & (metri < 9027)) {zoomfactor = 12; } altrimenti se ((metri > 9027) & & (metri < 18055)) {zoomfactor = 11; } altrimenti se ((metri > 18055) & & (metri < 36111)) {zoomfactor = 10; } altrimenti se ((metri > 36111) & & (metri < 72

Risposta

Se stai progettando una mappa, prevedi di sovrapporla su Google Maps o Virtual Earth e creando uno schema di piastrellatura, penso che quello che stai cercando siano le scale per ogni livello di zoom, usa queste:

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

Commenti

  • @capdragon Grazie. Quella ‘ è una fonte ben nota (ESRI), ma ci lascia ancora a chiederci come siano arrivati a queste scale.
  • Razionale è critico per chi? Non ‘ non vedo alcun accenno al razionale nella domanda. Credo che voglia una risposta diretta alla sua domanda diretta.
  • @ cap Senza motivo, è ‘ difficile o impossibile distinguere una risposta corretta da una errata. Senza motivo, si deve fare affidamento sullautorità di chi risponde. ‘ sono abbastanza sicuro che il motivo per cui le altre risposte in questo thread vengono votate e la tua non è ‘ ha poco a che fare con correttezza o franchezza – il tuo è il più autorevole e diretto del gruppo – ma ha piuttosto tutto a che fare con il ragionamento fornito dagli altri. A proposito, non ho ‘ downvoted il tuo.
  • Grazie: +1. Probabilmente siete geografi o guru del telerilevamento. ‘ sono semplicemente uno sviluppatore GIS che vuole aiutare il ragazzo a trovare la sua risposta. Un mio collega (tipo PHD, specializzazione in doppio MIT) partecipa a una lezione di unora ogni volta che gli faccio una semplice domanda e mi perde lungo la strada. Non ‘ gli faccio più domande (ho un master in scienze). Capisco che ad altre persone piace entrare nella carne del razionale e così via, ma molti di noi sono troppo ignoranti per sapere di cosa stanno parlando. IMHO erano risposte confuse che non ‘ t rispondere alla sua domanda.
  • Le scale sono state scelte in modo che possano essere divise equamente da tessere raster che sono in base 2 , (ad esempio 128, 512 …). Bing lo fa in modo simile msdn.microsoft.com/en-us/library/bb259689.aspx

Risposta

Ho trovato questa risposta – scritta da un dipendente di Google – probabilmente questa sarebbe la più accurata:

Questo non sarà accurato, perché la risoluzione di una mappa con la proiezione di mercatore (come le mappe di Google) dipende dalla latitudine.

È possibile calcolare utilizzando questa formula:

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

Si basa sul presupposto che il raggio della terra sia 6378137 m. Quale è il valore che utilizziamo 🙂

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

BTW – Immagino che:

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

Commenti

  • COSA è uguale alla tua formula? Facendolo per lat = 2.92 e zoom 13 ho ottenuto 19.08. Cosè 19.08 cosa?
  • @Rodrigo metri per pixel
  • Posso testimoniare che questa risposta è ancora corretta e molto precisa tre anni dopo. Questa dovrebbe essere la risposta accettata.
  • Si applica solo a x o anche a y ? Google Maps tramite API Javascript utilizza la stessa scala per entrambi gli assi?
  • @OldGeezer Sì, funziona in tutte le direzioni. La distorsione lineare in qualsiasi punto di Mercatore è uguale in tutte le direzioni. Questo ‘ è uno dei motivi per cui viene utilizzato per mappe scivolose. Quando si ingrandisce, si ottiene una mappa a distorsione ragionevolmente bassa. una volta compensata la scala, che è ciò che fa questa risposta.

Risposta

Per aiutarti a capire la matematica (non è un calcolo preciso, è solo illustrativo):

  • Il riquadro della mappa web di Google ha 256 pixel di larghezza
  • supponiamo che il tuo il monitor del computer ha 100 pixel per pollice (PPI). Ciò significa che 256 pixel sono circa 6,5 cm di lunghezza. E che “s 0,065 m .

  • su livello di zoom 0 , lintero 360 gradi di longitudine sono visibili in un singolo riquadro . Non puoi osservarlo in Google Maps poiché si sposta automaticamente al livello di zoom 1, ma puoi vederlo sulla mappa di OpenStreetMap “ (utilizza lo stesso schema di piastrellatura ).

  • 360 gradi allequatore sono uguali alla circonferenza della Terra, 40.075,16 km, che è 40075160 m

  • divide 40075160 m con 0,065 m e “otterrai 616313361 , che corrisponde a una scala del livello di zoom 0 sullequatore per un monitor di computer con 100 DPI

  • quindi il punto è che la scala dipende dal PPI del tuo monitor e dalla latitudine (a causa della proiezione di Mercatore)
  • per il livello di zoom 1, il la scala è la metà di quella del livello di zoom 0
  • per il livello di zoom N, la scala è uno hal f di quello del livello di zoom N-1

Controlla anche: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F

Commenti

  • La scala in realtà si basa sul DPI delle immagini cartografiche generate. Le due risoluzioni più comunemente utilizzate sono 96 DPI (che ‘ sono i riquadri della mappa di Google) e 72 DPI.
  • Con 96 DPI la scala 591657550.500000 è il livello 0 secondo questa risposta. Ma secondo @CaptDragon è il livello 1. Dovrei prendere in considerazione lidea di partire dal livello 1 per calcolare con Google Maps?

Answer

Non è così facile. Data la proiezione, la dimensione dei pixel della piastrella dipende dalla latitudine dellarea a cui sei interessato. Quindi, in termini di trasformazione della dimensione del pixel della piastrella in dimensione pixel dello schermo, dipende dallo schermo e dalla risoluzione con cui vengono visualizzati i dati, il dpi utilizzato dallo schermo.

Commenti

Risposta

Semplice risposta corretta autorevole:

591657550.500000 / 2^(level-1) 

ti dà la tabella sopra, inserendo il livello di zoom.

Provalo dal vivo su jsfiddle.net

Poiché la domanda è solo per Google MAPS, non per EARTH, allOP non interessa la geometria 3D. Le mappe di Google sono GIA appiattite quindi 1 pixel è sempre la stessa distanza (in GRADI, che è ciò che riguarda una mappa di google), qui e nellecuatore come nei poli.

A proposito, lhai fatto ti rendi conto che da qualche parte allinterno della prima riga di pixel di una mappa del mondo, la scala è 1: 1?

Commenti

  • Cosa significa il numero 591657550.500000 rappresentare?
  • @Sergio perché non solo 591657550.5?
  • ” Il numero deriva dalla risoluzione del riquadro impostata su un multiplo di 256 pixel e dalla risoluzione dello schermo (96 dpi) ” gis.stackexchange.com/a/111589/ 92997
  • Non funziona: dipende da Latitude, ma la tua formula non è

Risposta

Esiste una tabella di questo tipo nella documentazione del Virtal Earth Tile System di Microsoft . Ma, come affermato da GuillaumeC, i valori dipendono dal latitudine e via la risoluzione dello schermo. La tabella fornisce i valori misurati allEquatore e con una risoluzione dello schermo di 96 dpi.

PS: Non ne sono sicuro, ma i livelli di zoom di Microsoft potrebbero essere spostati di 1 rispetto ai livelli di zoom di Google.Ma usano definitivamente la stessa proiezione in modo che i valori rimangano corretti per Google.

Answer

Radius @ Equator 6.378.137 metri esatti ( WGS-84)

Circonferenza allequatore = 40.075.017 metri (2πr)

Il livello di zoom 24 utilizza da 2 a 32 pixel di potenza (4.294.967.296) alla circonferenza.

Circonferenza equatoriale / 2 32 = 0,009330692 metri per pixel

Unità alla latitudine = (coseno di latitudine) X (unità allequatore)

Il livello di zoom raddoppia ogni incremento.

1 piede (Internazionale) = 0,3048 metri

Modifica

Beh, non è proprio una domanda legittima con cui iniziare. I rapporti di scala sono relativi ai documenti stampati e non agli schermi dei computer. Ciò di cui hai bisogno per utilizzare queste immagini con precisione è conoscere la dimensione di ogni pixel, quindi ridimensionare limmagine in base a ciò con cui la sovrapponi.

Quindi, 15-20 anni fa qualcuno ha preso WGS- 84 come dati di base. (nota in un post precedente qualcuno ha utilizzato un valore di 40.075.160. Lho visto in Wikipedia in alcuni punti ed è errato. Il valore corretto è 40.075.017

Lhanno preso e lo hanno diviso per un intero Intero a 32 bit. Questa è una scelta logica in quanto fornisce una precisione globale di circa un centimetro, che è sufficiente per le immagini aeree. Anche gli interi a 32 bit sono efficienti da memorizzare ed elaborare.

Perché è stato scelto il livello 24 Non so, tuttavia, poiché qualcun altro qui ha elaborato 0 ti porta a una tessera di 256 pixel per la Terra.

Ora per un esempio di come utilizzare i dati sopra. Diciamo che ho unimmagine a livello di zoom 20 (come ingrandito come attualmente ti consentono di ottenere) Prendi 0,009330692 (Zoom 24 allequatore) raddoppia per lo zoom 23, di nuovo per lo zoom 22, di nuovo per lo zoom 21 e unultima volta per lo zoom 20. Ora dovresti avere 0,149231071 .

Ora diciamo che la nostra immagine è alla latitudine 45. Prendi il coseno di quello (0.707106781) e moltiplicalo per il nostro 0.149231071 e ti darà 0.105564729 metri S. Questa è la lunghezza e laltezza di un pixel da unimmagine alla latitudine 45 al livello di zoom 20. Se catturi unimmagine di 1000 x 1000 pixel di quellarea, le dimensioni sono 105,56 metri quadrati. Se vuoi che i piedi dividano quello 0,3048

Per quanto riguarda le fonti, circa 5 anni fa ho invertito essenzialmente le informazioni e la documentazione che ho trovato sul web, inclusi i siti di supporto per la mappatura di Google e MS.

Ho usato questo centinaio di tempo e sovrapponendolo con dati di indagine sul campo ed è sempre stato corretto. Confrontalo con qualsiasi tabella pubblicata qui e i numeri corrisponderanno.

Commenti

  • I ‘ Non sono sicuro di come questo risponda alla domanda.
  • Sono daccordo con @Devdatta, potresti fornire una fonte e un contesto.
  • Non sono sicuro che questi commenti siano stati prima o dopo il edit, ma ho usato questa risposta e funziona benissimo

Answer

Ho appena fatto alcuni calcoli e ottenuto quanto segue risultati:

Google Maps mostra un righello di 1 km (in basso a sinistra della mappa) che è lungo 90 pixel, al livello di zoom 13. Il che significa quanto segue:

Supponendo la risoluzione dello schermo è 96 dpi o 36 dpcm, al livello di zoom 13 abbiamo 0,4 km (da 36/90) in 1 cm, che fornisce una scala della mappa di 1: 40.000 per uno schermo a 96 dpi.

Per varie operazioni sullo schermo la cosa migliore è prendere 90 px come base, poiché tutti i numeri saranno arrotondati a tutti i livelli di zoom, ovvero

  • Livello di zoom 12: 2 km in 90 px
  • Livello di zoom l 11: 4 km in 90 px
  • Livello di zoom 10: 8 km in 90 px

e così via.

Tieni presente che questa è unapprossimazione che dovrebbe funzionano più o meno bene su scale più piccole piuttosto che su grandi.

(E a Google piacciono i numeri tondi alla fine …)

Commenti

  • Se guardi da vicino ‘ scoprirai che la lunghezza della linea cambia a seconda della latitudine dellarea che ‘ re visualizzazione.
  • Questo è valido solo a una latitudine specifica, come menzionato da @rcoup. Non solo varia la lunghezza della barra della scala, ma anche la distanza che rappresenta. Per continuare questo esempio con lo zoom 13, la distanza rappresentata dalla barra della scala è 2 km a Capo Nord (71 ° latitudine), 1 km intorno a 45 ° latitudine e 500 m allequatore.

Risposta

In base a tutte le informazioni fornite , Ho creato una funzione che fornisce la migliore z applicata a una mappa quando si desidera avere una linea orizzontale che rappresenta lN% della mappa visualizzata.

La mappa visualizzata è caratterizzata dalla propria larghezza in 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); }  

Risposta

Non posso ancora aggiungere un commento ma questa è una possibile fonte della risposta di Pete sopra: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates

[…] notare che ogni livello di zoom crescente è due volte più grande in entrambe le direzioni xey. Pertanto, ogni livello di zoom superiore contiene una risoluzione quattro volte superiore a quella del livello precedente. Ad esempio, al livello di zoom 1, la mappa è composta da 4 riquadri da 256×256 pixel, risultando in uno spazio pixel da 512×512. Al livello di zoom 19, è possibile fare riferimento a ciascun pixel xey sulla mappa utilizzando un valore compreso tra 0 e 256 * 2 19

Risposta

Ho calcolato le scale per quattro livelli di zoom:

Livello di zoom | Scala 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000

Sembra che la scala venga raddoppiata allaumentare del livello di zoom di un passo. Quindi, spero che la scala per il livello di zoom 16 sia 1: 8000 e così via.

Commenti

  • Benvenuto in GIS.SE! Puoi fornire una fonte o come è stato calcolato?

Risposta

Salve, penso di averlo calcolato 1 pixel = 11,627 km in linea retta; non tenendo conto del raggio della terra. Qui il link del video che spiega come: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Spero che ti schiarisca la mente.

Commenti

  • Non è così. Il valore di un pixel dipende dalla latitudine.
  • Oh capisco, non è il complesso in cui sono entrato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *