Kan iemand mij een link (of enkele details) geven over de werkelijke verhouding tot “zoomniveau” -cijfers voor Google Maps?
bijv Google Maps niveau 13 = 1: 20000
Reacties
- Gebaseerd op de eerste informatie die ik deze functie heb gemaakt, kan iemand deze misschien gebruiken! functie setZoomLevel (meter) {//console.log(
Zoom level set meters: ${meters}
); var zoomfactor = 1; if (meter < 1128) {zoomfactor = 15; } else if ((meters > 1128) & & (meters < 2256)) {zoomfactor = 14; } else if ((meters > 2256) & & (meters < 4513)) {zoomfactor = 13; } else if ((meters > 4513) & & (meters < 9027)) {zoomfactor = 12; } else if ((meters > 9027) & & (meters < 18055)) {zoomfactor = 11; } else if ((meters > 18055) & & (meters < 36111)) {zoomfactor = 10; } else if ((meters > 36111) & & (meters < 72
Antwoord
Als u een kaart ontwerpt, wilt u deze over elkaar heen plaatsen over google maps of virtuele aarde en het maken van een tegelschema, dan denk ik dat wat je zoekt de schalen zijn voor elk zoomniveau, gebruik deze:
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
Bron : http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm
Reacties
- @capdragon Bedankt. Dat ‘ een bekende bron (ESRI) is, maar we vragen ons nog steeds af hoe ze met deze weegschaal zijn gekomen.
- Rationeel is kritisch voor wie? Ik ‘ zie geen enkele vermelding van rationeel in de vraag. Ik denk dat hij een duidelijk antwoord wil op zijn ongecompliceerde vraag.
- @ cap Zonder reden is het ‘ moeilijk of onmogelijk te onderscheiden een juist antwoord van een onjuist antwoord. Zonder reden blijft men aangewezen op de autoriteit van de beantwoorder. Ik ‘ ben er vrij zeker van dat de reden waarom de andere antwoorden in deze thread worden gestemd en die van jou niet ‘ t heeft er weinig mee te maken juistheid of rechtlijnigheid – die van u is de meest gezaghebbende en meest rechtlijnige van het stel – maar heeft eerder alles te maken met de redenering die door de anderen wordt gegeven. Trouwens, ik heb ‘ de jouwe niet verlaagd.
- Bedankt: +1. Jullie zijn waarschijnlijk geografen of teledetectiegoeroes. Ik ‘ ben slechts een GIS-ontwikkelaar die de man wil helpen zijn antwoord te vinden. Een collega van mij (PHD-type, dubbele MIT major) gaat elke keer als ik hem een simpele vraag stel een uur hoorcollege in en raakt me gaandeweg kwijt. Ik ‘ stel hem geen vragen meer (ik heb een master in wetenschap). Ik begrijp dat andere mensen graag in het vlees van rationeel leven, enzovoort, maar velen van ons zijn te onwetend om te weten waar ze het over hebben. IMHO ze waren verwarrende antwoorden die zijn vraag niet ‘ beantwoorden.
- De schalen zijn zo gekozen dat ze gelijkmatig kunnen worden verdeeld door rastertegels die in basis 2 staan , (bijv. 128, 512 …). Bing doet het op dezelfde manier msdn.microsoft.com/en-us/library/bb259689.aspx
Antwoord
Ik vond dit antwoord – geschreven door een Google-medewerker – dit zou waarschijnlijk het meest nauwkeurige antwoord zijn:
Dit zal niet nauwkeurig zijn, omdat de resolutie van een kaart met de mercatorprojectie (zoals Google maps) afhankelijk is van de breedtegraad.
Het is mogelijk om met deze formule te berekenen:
metersPerPx = 156543.03392 * Math.cos(latLng.lat() * Math.PI / 180) / Math.pow(2, zoom)
Dit is gebaseerd op de aanname dat de straal van de aarde 6378137m is. Dit is de waarde die we gebruiken 🙂
overgenomen van: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM
BTW – Ik vermoed dat:
"latLng.lat()" = map.getCenter().lat() "zoom" = map.getZoom()
Reacties
- WAT is gelijk aan je formule? Als ik het deed voor lat = 2,92 en zoom 13, kreeg ik 19,08. Wat is 19.08 wat?
- @Rodrigo meter per pixel
- Ik kan getuigen dat dit antwoord drie jaar later nog steeds juist en zeer nauwkeurig is. Dit zou het geaccepteerde antwoord moeten zijn.
- Is dit alleen van toepassing op x of ook op y ? Gebruikt Google Maps via Javascript API dezelfde schaal voor beide assen?
- @OldGeezer Ja, het werkt in alle richtingen. Lineaire vervorming op elk punt in Mercator is gelijk in alle richtingen. Dat ‘ is een van de redenen waarom het wordt gebruikt voor slippy maps. Als je ver inzoomt, krijg je een redelijk lage vervormingskaart. zodra je de schaal compenseert, en dat is wat dit antwoord doet.
Answer
Om je te helpen de wiskunde te begrijpen (geen precieze berekening, het is alleen ter illustratie):
- De webkaarttegel van Google heeft een breedte van 256 pixels
-
laten we zeggen dat uw computermonitor heeft 100 pixels per inch (PPI). Dat betekent dat 256 pixels ongeveer 6,5 cm lang zijn. En dat “s 0,065 m .
-
op zoomniveau 0 , het geheel 360 graden lengtegraad zijn zichtbaar in een enkele tegel . U kunt dit niet waarnemen in Google Maps omdat het automatisch naar zoomniveau 1 gaat, maar u kunt het wel zien op de kaart van OpenStreetMap “s kaart (het gebruikt hetzelfde tegelschema ).
-
360 graden op de evenaar zijn gelijk aan de omtrek van de aarde, 40.075,16 km, wat 40075160 m
-
delen 40075160 m met 0,065 m en je “krijgt 616313361 , dit is een schaal van zoomniveau 0 op de evenaar voor een computermonitor met 100 DPI
- dus het punt is dat de schaal afhangt van de PPI van uw monitor en van de breedtegraad (vanwege de Mercator-projectie)
- voor zoomniveau 1, de schaal is de helft van die van zoomniveau 0
- …
- voor zoomniveau N is de schaal één hal f van dat van zoomniveau N-1
Bekijk ook: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F
Opmerkingen
- De schaal is in feite afhankelijk van de DPI van de gegenereerde kaartafbeeldingen. De twee meest gebruikte resoluties zijn 96DPI (dat ‘ s wat Google-kaarttegels zijn) en 72DPI.
- Met 96DPI is de schaal
591657550.500000
is volgens dit antwoord niveau 0. Maar volgens @CaptDragon is niveau 1. Ik zou moeten overwegen om vanaf niveau 1 te beginnen om te rekenen met Google Maps?
Antwoord
Niet zo eenvoudig. Gezien de projectie hangt de grootte van de tegelpixels af van de breedtegraad van het gebied waarin u geïnteresseerd bent. Wat betreft het transformeren van de tegelpixelgrootte in schermpixelgrootte, hangt het af van het scherm en de resolutie waarin de gegevens worden weergegeven, de dpi die uw scherm gebruikt.
Opmerkingen
- Dat is correct, sferische mercator (google projection) doet niet ‘ t behoudt gelijke schaal terwijl u zich van de evenaar verwijdert. Voor een uitstekende referentie: Mapnik ‘ s Schaal en schaal noemers artikel: trac.mapnik.org/wiki/ScaleAndPpi en ook OSM ‘ s FAQ: wiki.openstreetmap.org/ wiki / …
Antwoord
Eenvoudig gezaghebbend correct antwoord:
591657550.500000 / 2^(level-1)
het geeft je de bovenstaande tabel, het zoomniveau invoeren.
Probeer het live op jsfiddle.net
Omdat de vraag alleen voor Google MAPS is en niet voor EARTH, geeft het OP niets om 3D-geometrie. Google maps zijn REEDS afgeplat, dus 1 pixel is altijd dezelfde afstand (in GRADEN, wat betreft een google map), hier en in de ecuator als in de polen.
Trouwens, heb je besef dat ergens in de eerste pixelrij van een wereldkaart de schaal 1: 1 is?
Opmerkingen
- Wat betekent het getal 591657550.500000 vertegenwoordigen?
- @Sergio waarom niet alleen 591657550.5?
- ” Het getal komt doordat de tegelresolutie is ingesteld op een veelvoud van 256 pixels, en van de schermresolutie (96dpi) ” gis.stackexchange.com/a/111589/ 92997
- Werkt niet – het hangt af van Latitude, maar uw formule is dat niet
Antwoord
Er is zon tabel in de documentatie van het Virtal Earth Tile System van Microsoft . Maar zoals gezegd door GuillaumeC zijn de waarden afhankelijk van de breedtegraad en verder de schermresolutie. De tabel geeft waarden zoals gemeten op de evenaar en bij een schermresolutie van 96 dpi.
PS: dat weet ik niet zeker, maar de zoomniveaus van Microsoft kunnen met 1 worden verschoven in vergelijking met de zoomniveaus door Google.Maar ze gebruiken beslist dezelfde projectie zodat de waarden correct blijven voor Google.
Answer
Radius @ Equator 6,378,137 meter exact ( WGS-84)
Omtrek op evenaar = 40.075.017 meter (2Ï€r)
Zoomniveau 24 gebruikt 2 tot 32 vermogen (4.294.967.296) pixels op de omtrek.
Equatoriale omtrek / 2 32 = .009330692 meter per pixel
Eenheid op breedtegraad = (breedtegraad) X (eenheid op evenaar)
Het zoomniveau verdubbelt elke stap.
1 voet (internationaal) = 0.3048 meter
Bewerken
Nou, het is niet echt een legitieme vraag om mee te beginnen. Schaalverhoudingen hebben betrekking op gedrukte documenten, niet op computerschermen. Wat je nodig hebt om deze afbeeldingen met enige nauwkeurigheid te gebruiken, is om de afmetingen van elke pixel te kennen en vervolgens de afbeelding te schalen op basis van wat je eroverheen hebt gelegd.
Dus 15-20 jaar geleden nam iemand WGS- 84 als basisgegevens. (merk op dat in een vorige post iemand een waarde van 40.075.160 gebruikte. Ik heb dit een paar plaatsen in Wikipedia gezien en het is onjuist. De juiste waarde is 40.075.017
Ze namen dat en deelden het door een volledige 32-bits geheel getal. Dit is een logische keuze aangezien het een globale nauwkeurigheid oplevert tot ongeveer één centimeter, wat voldoende is voor luchtfotos. 32-bits gehele getallen zijn ook efficiënt om op te slaan en te verwerken.
Waarom dit niveau 24 is, is gekozen Ik weet het echter niet, aangezien iemand anders hier heeft uitgewerkt, 0 brengt je terug naar één tegel van 256 pixels voor de aarde.
Nu voor een voorbeeld van hoe de bovenstaande gegevens te gebruiken. Laten we zeggen dat ik een afbeelding heb op zoomniveau 20 (zoals ingezoomd zoals je op dit moment kunt krijgen) Neem 0.009330692 (Zoom 24 op evenaar) verdubbel voor zoom 23, opnieuw voor zoom 22, opnieuw voor zoom 21 en nog een laatste keer voor zoom 20. Je zou nu 0.149231071 moeten hebben .
Laten we nu zeggen dat onze afbeelding zich op 45 graden bevindt. Neem de cosinus daarvan (0,707106781) en vermenigvuldig deze met onze 0,149231071 en je krijgt 0,105564729 meter s. Dat is de lengte en hoogte van één pixel van een afbeelding op breedtegraad 45 op zoomniveau 20. Als je een schermopname maakt van een afbeelding van 1000 x 1000 pixels van dat gebied, is de afmeting 105,56 vierkante meter. Als je voeten wilt delen die 0.3048
Wat betreft bronnen heb ik ongeveer 5 jaar geleden een ingenieur omgekeerd vanuit verschillende stukjes informatie en documentatie die ik op internet vond, waaronder Google- en MS-kaartondersteuningssites.
Ik heb deze honderd keer gebruikt en het bedekt met feitelijke veldonderzoeksgegevens en het is altijd correct geweest. Vergelijk het met een van de tabellen die hier zijn geplaatst en de nummers komen overeen.
Opmerkingen
- I ‘ Ik weet niet zeker hoe dit de vraag beantwoordt.
- Ik ben het eens met @Devdatta, zou je een bron en een context willen geven.
- Ik weet niet zeker of deze opmerkingen voor of na de bewerken, maar ik heb dit antwoord gebruikt en het werkt prima
Antwoord
Ik heb net wat berekeningen gemaakt en het volgende gekregen resultaten:
Google Maps toont een liniaal van 1 km (linksonder op de kaart) die 90 pixels lang is, op zoomniveau 13. Wat het volgende betekent:
Aannemende dat de schermresolutie is 96 dpi of 36 dpcm, op zoomniveau 13 hebben we 0,4 km (van 36/90) in 1 cm, wat een kaartschaal van 1: 40.000 oplevert voor een 96dpi-scherm.
Voor verschillende bewerkingen op het scherm het beste is om 90px als basis te nemen, aangezien alle getallen op alle zoomniveaus rond zijn, dwz
- Zoomniveau 12: 2km in 90px
- Zoomniveau l 11: 4km in 90px
- Zoomniveau 10: 8km in 90px
enzovoort.
Merk op dat dit een benadering is die werken min of meer goed op kleinere schalen in plaats van grote.
(En Google houdt uiteindelijk van ronde getallen …)
Opmerkingen
- Als je goed kijkt, ‘ zul je ontdekken dat de lengte van de lijn verandert afhankelijk van de breedtegraad van het gebied dat je ‘ re aan het bekijken.
- Dit is alleen geldig op een specifieke breedtegraad, zoals @rcoup vermeldde. Niet alleen de lengte van de schaalbalk varieert, maar ook de afstand die deze vertegenwoordigt. Om door te gaan met dit voorbeeld bij zoom 13, is de afstand die wordt weergegeven door de schaalbalk 2 km in Noordkaap (71 ° breedtegraad), 1 km rond 45 ° breedtegraad, en 500 m op de equateur.
Antwoord
Gebaseerd op alle verstrekte informatie , Heb ik een functie gebouwd die de beste z geeft toegepast op een kaart als je een horizontale lijn wilt hebben die N% van de weergegeven kaart vertegenwoordigt.
De weergegeven kaart wordt gekenmerkt door zijn eigen pixelbreedte.
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); }
Antwoord
Ik kan nog geen opmerking toevoegen, maar dit is een mogelijke bron van Petes bovenstaande antwoord: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates
[…] merk op dat elk toenemend zoomniveau twee keer zo groot is in zowel de x- als de y-richting. Daarom bevat elk hoger zoomniveau vier keer zoveel resolutie als het voorgaande niveau. Op zoomniveau 1 bestaat de kaart bijvoorbeeld uit 4 tegels van 256×256 pixels, wat resulteert in een pixelruimte van 512×512. Op zoomniveau 19 kan naar elke x- en y-pixel op de kaart worden verwezen met een waarde tussen 0 en 256 * 2 19
Answer
Ik heb de schalen berekend voor vier zoomniveaus:
Zoomniveau | Schaal 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000
Het lijkt erop dat de schaal wordt verdubbeld als het zoomniveau met één stap wordt verhoogd. Dus ik hoop dat de schaal voor zoomniveau 16 1: 8000 zal zijn, enzovoort.
Opmerkingen
- Welkom bij GIS.SE! Kunt u een bron geven of hoe is dit berekend?
Antwoord
Hallo, ik denk dat ik dat heb berekend 1pixel = 11,627 km in rechte lijn; zonder rekening te houden met de straal van de aarde. Hier de link van de video waarin wordt uitgelegd hoe: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Ik hoop dat je geest helder wordt.
Opmerkingen
- Dat is niet zo. De waarde van een pixel hangt af van de breedtegraad.
- Oh, ik begrijp het, niet dat complex waar ik op inging.