Valaki tudna nekem egy linket (vagy néhány részletet) megadni a Google Maps “zoom szintjeinek” tényleges arányához?

pl Google Maps 13. szint = 1: 20000

Megjegyzések

  • Az első információ alapján, amelyet készítettem, ezt a funkciót talán valaki használhatja! function setZoomLevel (méter) {//console.log(Zoom level set meters: ${meters}); var zoomfactor = 1; if (méter < 1128) {zoomfactor = 15; } else if ((méterek > 1128) & & (méterek < 2256)) {zoomfactor = 14; } else if ((méterek > 2256) & & (méterek < 4513)) {zoomfactor = 13; } else if ((méterek > 4513) & & (méterek < 9027)) {zoomfactor = 12; } else if ((méterek > 9027) & & (méterek < 18055)) {zoomfactor = 11; } else if ((méterek > 18055) & & (méterek < 36111)) {zoomfactor = 10; } else if ((méterek > 36111) & & (méterek < 72

Válasz

Ha olyan térképet tervez, amelyet átfedésre tervez a google maps vagy a virtuális föld felett, és létrehoz egy csempézési sémát, akkor azt hiszem, hogy mit keres, az egyes nagyítási szintek skálája, használja ezeket:

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 

Forrás : http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm

Megjegyzések

  • @capdragon Köszönet. Ez ‘ egy jól ismert forrás (ESRI), de továbbra is kíváncsi vagyunk arra, hogyan találták ki ezeket a mérlegeket.
  • Ésszerű kinek kritikus? Nem látom a kérdésben a racionális említést. Úgy gondolom, hogy egyenesen előre akarja válaszolni a közvetlen kérdését.
  • @ sapka indok nélkül ‘ nehéz vagy lehetetlen megkülönböztetni a helytelen válasz helyes válasza. Ok nélkül marad az, hogy a válaszadó tekintélyére kell hagyatkoznia. ‘ Biztos vagyok benne, hogy az oka annak, hogy a szál többi válasza fel lesz szavazva, és a tiéd nem ‘ t nem sok köze van ehhez helyesség vagy egyértelműség – a tiéd a leghitelesebb és legegyszerűbb a csomóból -, hanem inkább a többiek által nyújtott érveléssel kapcsolatos. BTW ‘ nem voksoltam a tiédet.
  • Köszönet: +1. Ti valószínűleg földrajzkutatók vagy távérzékelő guruk vagytok. Én ‘ csupán egy GIS-fejlesztő vagyok, aki segíteni akar a srácnak a válaszában. Egy kollégám (PHD típus, dupla MIT szak) megy egy órás előadásra, valahányszor felteszek neki egy egyszerű kérdést, és elveszítek. Többé nem teszek fel neki kérdéseket (van mesterem a tudományban).

Megértem, hogy más emberek szeretnek belemenni a racionális és így tovább húsába, de sokan túl tudatlanok vagyunk ahhoz, hogy tudjuk, miről beszélnek. IMHO zavaros válaszokat adtak arra, hogy ne ‘ válaszoljon a kérdésére.

  • A mérlegeket úgy választották meg, hogy egyenletesen el lehessen osztani őket a 2. alapban található raszterlapokkal , (pl. 128, 512 …). Bing hasonlóan csinálja msdn.microsoft.com/en-us/library/bb259689.aspx
  • Válasz

    Ezt a választ találtam – amelyet egy Google alkalmazott írt – valószínűleg ez lenne a legpontosabb:

    Ez nem lesz pontos, mert egy térkép, a mercator vetítéssel (például a Google maps) felbontása a szélességtől függ.

    A következő képlettel lehet kiszámítani:

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

    Ez azon a feltételezésen alapul, hogy a föld sugara 6378137 m. Melyik értéket használjuk 🙂

    a következőtől származik: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM

    BTW – Azt hiszem, hogy:

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

    Megjegyzések

    • MI EGYENÜL a képletével? Ha lat = 2.92 és zoom 13 értéket kapok, akkor 19.08-at kaptam. Mi az a 19.08 mi?
    • @Rodrigo méter pixelenként
    • tanúsíthatom, hogy ez a válasz három évvel később is helyes és nagyon pontos. Ez legyen az elfogadott válasz.
    • Ez csak x re vonatkozik, vagy y -re is? A Javascript API-n keresztüli Google Maps ugyanazt a skálát használja mindkét tengelyhez?
    • @OldGeezer Igen, minden irányban működik. A Mercator bármely pontján a lineáris torzítás minden irányban egyenlő. Ez ‘ az egyik oka annak, hogy a csúszós térképekhez használják. Nagyítás közben ésszerűen alacsony torzítású térképet kap. ha kompenzálja a skálát, amit ez a válasz tesz.

    Válasz

    A matematika megértésének elősegítése érdekében (nem pontos számítás, csak szemléltetésre szolgál):

    • A Google webtérképének 256 pixel szélessége van
    • mondjuk ki a a számítógép-monitor 100 pixel / hüvelyk (PPI). Ez azt jelenti, hogy 256 pixel nagyjából 6,5 cm hosszú. És hogy “s 0,065 m .

    • a zoom 0-s szintjén , az egész 360 fokon hosszúsági fokok láthatók egyetlen csempében . Ezt nem figyelheti meg a Google Térképen, mivel az automatikusan az 1. nagyítási szintre lép, de az OpenStreetMap térképén láthatja (ugyanazt a csempézési sémát használja). ).

    • Az Egyenlítőn a 360 fokos degresszió egyenlő a Föld kerületével, 40 075,16 km, ami 40075160 m

    • oszt 40075160 m 0,065 m és akkor 616313361 , amely az Egyenlítő 0-os nagyítási skálája az Egyenlítőn 100 DPI-s számítógépes monitorhoz

    • tehát az a lényeg, hogy a méretarány függ a monitor PPI-jétől és a szélességtől (a Mercator vetülete miatt)
    • az 1. zoom szintnél a a skála a 0. nagyítási szint fele
    • az N nagyítási szintnél a skála az egyik fele az N-1 nagyítási szint f értéke

    Nézze meg még: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F

    Megjegyzések

    • A skála valójában a létrehozott térképképek DPI-jére támaszkodik. A két leggyakrabban használt felbontás a 96DPI (‘ s, ami a Google térképcsempe) és a 72DPI.
    • 96DPI esetén a a válasz szerint ez a 0. szint. De a @CaptDragon szerint az 1. szint. Meg kell fontolnom, hogy az 1. szinttől indulva számoljak-e a Google Maps segítségével?

    Válasz

    Nem olyan könnyű. Tekintettel a vetítésre, a mozaik pixelek mérete az érdeklődő terület szélességétől függ. Ez azt jelenti, hogy a csempe pixel méretének átalakítása a képernyő pixel méretében a képernyőtől és az adatok felbontásától függ, dpi, amelyet a képernyőn használ.

    Megjegyzések

    Válasz

    Egyszerű mérvadó helyes válasz:

    591657550.500000 / 2^(level-1) 

    a fenti táblázatot adja meg, megadva a nagyítási szintet.

    Próbálja ki élőben a jsfiddle.net

    Mivel a kérdés csak a Google MAPS-ra vonatkozik, nem a FÖLD-re, az OP nem törődik a 3D-s geometriával. A Google térképek MÁR laposak, így 1 pixel mindig azonos távolságú (DEGREES-ben, ami a Google térképre vonatkozik), itt és az ecuatorban, mint a pólusokban.

    Egyébként rájön, hogy valahol a világtérkép első pixelsorán belül a méretarány 1: 1?

    Megjegyzések

    • Mit jelent az 591657550.500000 szám ábrázolni?
    • @Sergio miért nem csak 591657550.5?
    • ” A szám abból adódik, hogy a csempefelbontás többszörösre van állítva 256 pixel méretű, és a képernyő felbontásából (96 dpi) ” gis.stackexchange.com/a/111589/ 92997
    • Nem működik – a szélességtől függ, de a képlet nem

    Válasz

    Ilyen táblázat található a Microsoft által a Virtal Earth Tile System dokumentációjában . De ahogy GuillaumeC elmondta, az értékek a szélesség és tovább a képernyő felbontása. A táblázat az Egyenlítőnél és 96 dpi felbontással mért értékeket tartalmazza.

    PS: Ebben nem biztos, de a Microsoft nagyítási szintje 1-rel elmozdulhat a Google.De határozottan ugyanazt a vetületet használják, hogy az értékek továbbra is helyesek maradjanak a Google számára.

    Válasz

    Sugár @ Egyenlítő 6,378,137 méter pontos ( WGS-84)

    Körkerület az Egyenlítőnél = 40 075 017 méter (2πr)

    A 24. nagyítási szint 2-től 32-ig (4 294 967 296) pixelt használ fel kerületén.

    Egyenlítői kerület / 2 32 =, 009330692 méter pixelenként

    Egység a szélességnél = (A szélesség koszinusa) X (Egység az Egyenlítőnél)

    A nagyítási szint megduplázza az egyes lépéseket.

    1 láb (Nemzetközi) = 0,3048 méter

    Szerkesztés

    Nos, ez nem igazán jogos kérdés. A méretarányok a nyomtatott dokumentumokhoz viszonyulnak, nem a számítógép képernyőjén. Amire szükséged van ahhoz, hogy ezeket a képeket bármilyen pontossággal használhasd, az az, hogy ismerd az egyes pixelek méretét, majd méretezd a képet annak megfelelően, amellyel azt átfeded.

    Tehát 15-20 évvel ezelőtt még valaki felvette a WGS- 84. mint alapadat. (Megjegyzem egy korábbi bejegyzésben, hogy valaki 40 075 160 értéket használt fel. Ezt már néhány helyen láttam a Wikipédiában, és ez helytelen. A helyes érték 40 075 017

    Ezután ezt vették és elosztották egy teljes értékkel 32 bites egész szám. Ez logikus választás, mivel globális pontosságot ad körülbelül egy centiméterre, ami bőven elég a légi felvételekhez. A 32 bites egészek tárolása és feldolgozása is hatékony.

    Miért ez a 24. szint, azt választották Nem tudom, de mivel valaki más itt kidolgozta, a 0 egy 256 pixeles csempéhez vezet a földhöz.

    Most egy példa a fenti adatok felhasználására. Mondjuk, hogy van képem 20-as zoom szinten (olyan nagyítással, amilyen gyorsan csak engedi Önnek) Vegyünk 0,009330692-et (24. zoom az egyenlítőnél) duplázzuk meg a 23. zoomnál, ismét a 22. zoomnál, ismét a 21. zoomnál, és utoljára a 20. zoomnál. Mostantól 0.149231071 .

    Most tegyük fel, hogy a képünk 45. szélességi fokon van. Vegyük ennek a Koszinust (0,707106781), és szorozzuk meg a 0,149231071 értékünkkel, és így 0,105564729 métert kapunk s. Ez a képpont egy képpontjának hossza és magassága a 45. szélességi fokon, a 20. zoom szintjén. Ha 1000 x 1000 képpont méretű képet készít erről a területről, akkor a mérete 105,56 méter négyzet. Ha azt szeretné, hogy a lábak osszák el azt a 0.3048 értéket,

    Ami a forrásokat illeti, körülbelül 5 évvel ezelőtt megfordítottam a mérnököket különböző információk és dokumentumok alapján, amelyeket az interneten találtam, beleértve a Google és az MS térképészeti támogatási webhelyeit is. p> Ezt a százszor használtam, és átfedtem a tényleges terepi felmérés adataival, és ezek mindig helyesek voltak. Ellenőrizze az itt közzétett táblázatok bármelyikét, és a számok meg fognak egyezni.

    Megjegyzések

    • I ‘ nem vagyok biztos benne, hogy ez hogyan válaszolja meg a kérdést.
    • Egyetértek a @Devdatta véleményével, kérem, adjon meg egy forrást és néhány összefüggést.
    • Nem biztos abban, hogy ezek a megjegyzések a szerkesztés, de ezt a választ használtam, és remekül működik

    Válasz

    Csak elvégeztem néhány számítást, és a következőt kaptam eredmények:

    A Google Maps egy 1 km-es vonalzót (a térkép bal alsó részén) mutat, amely 90 képpont hosszú, a 13. zoom szintjén. Ez a következőket jelenti:

    A képernyő felbontásának feltételezése 96 dpi vagy 36 dpcm, a 13. zoom szinten 0,4 km (36/90-től) 1 cm-ben van, ami 1: 40 000 térképi méretarányt eredményez 96 dpi-s képernyőn.

    A képernyőn megjelenő különféle műveletekhez a legjobb az, ha 90 képpontot veszünk alapul, mivel minden szám kerek lesz minden zoom szinten, azaz

    • 12. nagyítási szint: 2km 90 képpontos felbontásban
    • Nagyítási magasság l 11: 4km 90px-ben
    • 10-es nagyítási szint: 8km 90px-ben

    és így tovább.

    Vegye figyelembe, hogy ez egy közelítés, amelyet meg kell többé-kevésbé jól működik kisebb, mint nagy méretarányban.

    (És a Google végül szereti a kerek számokat …)

    Megjegyzések

    • Ha alaposan megnézi, ‘ felfedezem, hogy a vonal hossza az Ön által használt terület szélességétől függően változik ‘ újra megtekintés.
    • Ez csak egy meghatározott szélességen érvényes, amint a @rcoup említette. Nem csak a skála hossza változik, hanem az általa képviselt távolság is. E példa folytatásához a 13. zoomnál a skálasáv által jelzett távolság 2 km Észak-Fokföldön (71 ° szélesség), 1 km 45 ° szélesség és 500 m az egyenlítőnél.

    Válasz

    Az összes megadott információ alapján , Felépítettem egy olyan funkciót, amely a legjobb z értéket adja a térképhez, ha olyan vízszintes vonalat szeretne, amely a megjelenített térkép N% -át képviseli.

    A megjelenített térképet a saját pixelszélessége jellemzi.

     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); }  

    Válasz

    Még nem tudok megjegyzést fűzni, de ez Pete fenti válaszának lehetséges forrása: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates

    […] vegye figyelembe, hogy minden növekvő zoomszint kétszer nagyobb mind az x, mind az y irányban. Ezért minden magasabb zoomszint négyszer akkora felbontást tartalmaz, mint az előző szint. Például az 1. nagyítási szinten a térkép 4 256×256 pixeles csempéből áll, így az 512×512 pixeltér. A 19. zoom szinten a térkép minden x és y képpontjára 0 és 256 * 2 közötti értéket lehet hivatkozni * 2 19

    Válasz

    Négy nagyítási skálát számoltam ki:

    Zoom szint | 20. méretarány 1: 500 19 1: 1000 18 1: 2000 17 1: 4000

    Úgy tűnik, hogy a méretarány megduplázódik, amikor a zoom szintje egy lépéssel növekszik. Tehát remélem, hogy a 16. zoomszint skálája 1: 8000 lesz, és így tovább.

    Megjegyzések

    • Üdvözöljük a GIS.SE oldalon! Kérjük, adjon meg egy forrást, vagy hogyan számolták ezt ki?

    Válasz

    Szia, azt hiszem, ezt kiszámoltam 1 pixel = 11,627 km egyenes vonalban; nem figyelembe véve a föld sugarát. Itt a videó linkje, amely elmagyarázza, hogyan: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Remélem, hogy tiszta az elméd.

    Megjegyzések

    • Nem. A pixel értéke a szélességtől függ.
    • Ó, látom, nem az a komplexum, ahova mentem.

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük