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 zoomszintek 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 ok 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 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 ‘ csak 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 (mesterem van 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 a mercator vetületű térkép (pl. 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 🙂
levéve: 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 .
-
0-es zoom 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. zoom 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 vel és 616313361 , amely az Egyenlítő 0 0-os nagyítási fokozatának skálája egy 100 DPI-s számítógépes monitor
- 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 felének felel meg f az N-1 nagyítási szint
Szintén nézze meg: 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
- Ez helyes, gömb alakú Mercator (google vetítés) nem ‘ t megőrzi az egyenlő méretarányt, amikor eltávolodik az Egyenlítőtől. Kiváló referencia: Mapnik ‘ s Skála és méretarány nevező cikk: trac.mapnik.org/wiki/ScaleAndPpi és az OSM ‘ s GYIK: wiki.openstreetmap.org/ wiki / …
Válasz
Egyszerű mérvadó helyes válasz:
591657550.500000 / 2^(level-1)
ez adja meg a fenti táblázatot, 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 képviselni?
- @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 növekményeket.
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, amennyivel jelenleg engedik) 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. .
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.
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 jól megnézi, ‘ felfedezem, hogy a vonal hossza az Ön által lefedett 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 a 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épre a saját pixelszélessége jellemző.
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 válaszának egyik 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 szintet számoltam ki:
Nagyítási 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.