Může mi někdo poskytnout odkaz (nebo nějaké podrobnosti) na skutečný poměr k údajům „úrovně přiblížení“ pro Mapy Google?
např Mapy Google 13. úrovně = 1: 20000
Komentáře
- Na základě prvních informací, které jsem tuto funkci vytvořil, by ji někdo mohl použít! function setZoomLevel (meters) {//console.log(
Zoom level set meters: ${meters}
); var zoomfactor = 1; if (metry < 1128) {zoomfactor = 15; } else if ((metry > 1128) & & (metry < 2256)) {zoomfactor = 14; } else if ((metry > 2256) & & (metry < 4513)) {zoomfactor = 13; } else if ((metry > 4513) & & (metry < 9027)) {zoomfactor = 12; } else if ((metry > 9027) & & (metry < 18055)) {zoomfactor = 11; } else if ((metry > 18055) & & (metry < 36111)) {zoomfactor = 10; } else if ((metry > 36111) & & (metry < 72
Odpověď
Pokud navrhujete mapu, plánujete ji překrýt přes google mapy nebo virtuální zemi a vytvoření schématu obkladů, pak si myslím, že to, co hledáte, jsou měřítka pro jednotlivé úrovně přiblížení, použijte tyto:
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
Zdroj : http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm
Komentáře
- @capdragon Díky. Tento ‚ je známý zdroj (ESRI), ale stále nás zajímá, jak k těmto měřítkům přišli.
- Racionální je Pro koho je kritický? Nevidím ‚ v otázce žádnou zmínku o racionálním. Věřím, že chce přímou odpověď na svou přímou otázku.
- @ čepice Bez důvodu je ‚ obtížné nebo nemožné rozlišit správná odpověď od nesprávné. Bezdůvodně je třeba spoléhat se na autoritu odpovědného. Jsem si ‚ docela jistý, že důvod, proč jsou ostatní odpovědi v tomto vláknu voleny, není váš a ‚ s tím nemá mnoho společného správnost nebo přímočarost – vaše je nejautoritativnější a nejpřímější ze skupiny – ale spíše má všechno co do činění s úvahami poskytnutými ostatními. BTW Nemám ‚ t proti vašemu.
- Díky: +1. Vy jste pravděpodobně geografové nebo guruové pro dálkový průzkum Země. Jsem ‚ pouze vývojář GIS, který chce člověku pomoci dosáhnout jeho odpovědi. Můj kolega (typ PHD, dvojnásobný MIT major) jde na hodinovou přednášku pokaždé, když mu položím jednoduchou otázku a cestou mě ztratí. Už mu ‚ už se na nic neptám (mám mistra ve vědě). Chápu, že ostatní lidé se rádi dostávají do masy racionálních a tak dále, ale mnozí z nás jsou příliš nevědomí na to, aby věděli, o čem mluví. IMHO byly matoucí odpovědi, které mu ‚ neodpověděly.
- Měřítka byla zvolena tak, aby je bylo možné rovnoměrně rozdělit pomocí rastrových dlaždic, které jsou v základně 2 , (např. 128, 512 …). Bing to dělá podobně msdn.microsoft.com/en-us/library/bb259689.aspx
Odpověď
Našel jsem tuto odpověď – napsanou zaměstnancem Google – pravděpodobně by byla nejpřesnější:
To nebude přesné, protože rozlišení mapy s projekcí mercatoru (například Google maps) závisí na zeměpisné šířce.
Je možné vypočítat pomocí tohoto vzorce:
metersPerPx = 156543.03392 * Math.cos(latLng.lat() * Math.PI / 180) / Math.pow(2, zoom)
Toto je založeno na předpokladu, že poloměr Země je 6378137 m. Což je hodnota, kterou používáme 🙂
převzato z: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM
BTW – Hádám, že:
"latLng.lat()" = map.getCenter().lat() "zoom" = map.getZoom()
Komentáře
- CO se rovná vašemu vzorci? Dělat to pro lat = 2,92 a zoom 13 jsem dostal 19,08. Co je 19.08 co?
- @Rodrigo metrů na pixel
- mohu potvrdit, že tato odpověď je i po třech letech stále správná a velmi přesná. Toto by měla být přijatá odpověď.
- Platí to pouze pro x nebo také y ? Používá Google Maps přes Javascript API stejné měřítko pro obě osy?
- @OldGeezer Ano, funguje to všemi směry. Lineární zkreslení v kterémkoli bodě Mercatoru je stejné ve všech směrech. To je ‚ jeden z důvodů, proč se používá pro kluzké mapy. Při přiblížení se zobrazí mapa s přiměřeně nízkým zkreslením. jakmile kompenzujete měřítko, k čemu tato odpověď slouží.
Odpověď
Pomůžeme vám porozumět matematice (nejedná se o přesný výpočet, slouží pouze pro ilustraci):
- Dlaždice webové mapy Google má šířku 256 pixelů
-
řekněme, že počítačový monitor má 100 pixelů na palec (PPI). To znamená, že 256 pixelů má délku zhruba 6,5 cm. A to je 0,065 m .
-
na úrovni přiblížení 0 , celých 360 stupňů zeměpisné délky jsou viditelné na jedné dlaždici . Toto nemůžete v Mapách Google pozorovat, protože se automaticky přesune na úroveň přiblížení 1, ale můžete to vidět na mapě OpenStreetMap (používá stejné schéma obkladů ).
-
360 sestupů na rovníku se rovná obvodu Země, 40 075,16 km, což je 40075160 m
-
rozdělit 40075160 m s 0,065 m a získáte 616313361 , což je měřítko úrovně přiblížení 0 na rovníku pro počítačový monitor se 100 DPI
- takže jde o to, že měřítko závisí na PPI vašeho monitoru a na zeměpisné šířce (kvůli projekci Mercator)
- pro úroveň přiblížení 1, měřítko je polovina úrovně přiblížení 0
- …
- pro úroveň přiblížení N je měřítko jedna polovina f z úrovně přiblížení N-1
Podívejte se také na: http://wiki.openstreetmap.org/wiki/FAQ#What_is_the_map_scale_for_a_particular_zoom_level_of_the_map.3F
Komentáře
- Měřítko ve skutečnosti závisí na DPI generovaných obrazů mapy. Dvě nejčastěji používaná rozlišení jsou 96DPI (to ‚ co jsou mapové dlaždice Google) a 72DPI.
- U 96DPI je měřítko
591657550.500000
je podle této odpovědi úroveň 0. Ale podle @CaptDragon je úroveň 1. Měl bych zvážit počínaje úrovní 1 pro výpočet pomocí Map Google?
Odpověď
Není to tak snadné. Vzhledem k projekci velikost pixelů dlaždic závisí na zeměpisné šířce oblasti, která vás zajímá. Pak, pokud jde o transformaci velikosti pixelu dlaždic na velikost pixelu obrazovky, záleží na obrazovce a rozlišení, které jsou data zobrazena, dpi, které vaše obrazovka používá.
Komentáře
- Správně, sférický obchodník (google projekce) ‚ t zachovat stejné měřítko, když se vzdálíte od rovníku. Pro některé vynikající reference: článek Mapnik ‚ s Scale and Scale denominators: trac.mapnik.org/wiki/ScaleAndPpi a také OSM ‚ s FAQ: wiki.openstreetmap.org/ wiki / …
odpověď
přímočará autoritativní správná odpověď:
591657550.500000 / 2^(level-1)
zobrazí výše uvedenou tabulku a zadá úroveň přiblížení.
Vyzkoušejte to naživo na jsfiddle.net
Protože otázka je pouze pro Google MAPS, nikoli pro ZEM, OP se nestará o 3D geometrii. Mapy Google jsou UŽ zploštěny, takže 1 pixel je vždy stejná vzdálenost (v DEGREES, což se týká mapy Google), zde i v ekvádoru jako v pólech.
Mimochodem, věděli jste uvědomte si, že někde uvnitř první řady pixelů na mapě světa je měřítko 1: 1?
Komentáře
- Jaké je číslo 591657550.500000 představují?
- @Sergio proč ne jen 591657550.5?
- “ Číslo pochází z rozlišení dlaždic nastaveného na více 256 pixelů a z rozlišení obrazovky (96 dpi) “ gis.stackexchange.com/a/111589/ 92997
- nefunguje – záleží na Latitude, ale váš vzorec není
odpověď
Taková tabulka je v dokumentaci systému Virtual Earth Tile System od společnosti Microsoft . Ale jak uvedl GuillaumeC, hodnoty závisí na zeměpisná šířka a dále rozlišení obrazovky. Tabulka uvádí hodnoty měřené na rovníku a při rozlišení obrazovky 96 dpi.
PS: Nejste si tím jisti, ale úrovně přiblížení od společnosti Microsoft by se mohly posunout o 1 ve srovnání s úrovněmi přiblížení o Google.Rozhodně však používají stejnou projekci, aby hodnoty pro Google zůstaly správné.
Odpověď
Radius @ Equator s přesností 6 378 137 metrů ( WGS-84)
Obvod na rovníku = 40 075 017 metrů (2πr)
Úroveň zoomu 24 používá 2 až 32 výkonových (4 294 967 296) pixelů po obvodu.
Rovníkový obvod / 2 32 = 0,009330692 metrů na pixel
Jednotka v Latitude = (Kosinus zeměpisné šířky) X (Jednotka v rovníku)
Úroveň přiblížení zdvojnásobuje každý přírůstek.
1 stopa (mezinárodní) = 0,3048 metrů
Upravit
Na začátek to opravdu není legitimní otázka. Poměry měřítka jsou relativní k tištěným dokumentům, nikoli k obrazovkám počítačů. To, co potřebujete, aby tyto obrázky mohly být použity s jakoukoli přesností, je znát rozměr každého pixelu a poté měřítko obrazu podle toho, čím ho překryjete.
Takže zpět před 15-20 lety někdo vzal WGS- 84 jako základní data. (všimněte si v předchozím příspěvku, že někdo použil hodnotu 40 075 160, viděl jsem to na Wikipedii na několika místech a je to nesprávné. Správná hodnota je 40 075 017
Potom to vzali a rozdělili na plnou 32bitové celé číslo. Toto je logická volba, protože poskytuje globální přesnost přibližně na jeden centimetr, což je dost pro letecké snímky. 32bitová celá čísla lze také efektivně ukládat a zpracovávat.
Proč je zvolena úroveň 24 Nevím však, protože někdo jiný zde vypracoval, 0 vás dostane na jednu 256 pixelovou dlaždici pro Zemi.
Nyní příklad, jak použít výše uvedená data. Řekněme, že mám obrázek na úrovni přiblížení 20 (tak přiblížení, jaké vám právě umožňují) Vezměte 0,009330692 (přiblížení 24 na rovníku), zdvojnásobte jej pro přiblížení 23, znovu pro přiblížení 22, znovu pro přiblížení 21 a naposledy pro přiblížení 20. Nyní byste měli mít 0,149231071 .
Nyní řekněme, že náš obrázek je na 45 zeměpisné šířce. Vezměte kosinus toho (0,707106781) a vynásobte jej naším 0,149231071 a dá vám 0,105564729 metr s. To je délka a výška jednoho pixelu z obrázku v zeměpisné šířce 45 při úrovni přiblížení 20. Pokud na obrazovce pořídíte snímek této oblasti o rozměrech 1 000 x 1 000 pixelů, bude rozměr 105,56 metrů čtverečních. Pokud chcete nohy rozdělit na 0,3048
Pokud jde o zdroje, asi před 5 lety jsem vytvořil zásadní reverzní inženýr z různých informací a dokumentace, které jsem našel na webu, včetně stránek podpory mapování Google a MS.
Použil jsem tuto stovku času a překryl jsem ji skutečně daty z terénního průzkumu a vždy to bylo správné. Zaškrtněte políčko u všech zde zveřejněných tabulek a čísla se budou shodovat.
Komentáře
- I ‚ nejsem si jistý, jak to odpovídá na otázku.
- Souhlasím s @Devdatta, mohl byste prosím uvést zdroj a nějaký kontext.
- Nejste si jisti, zda tyto komentáře byly před nebo po upravte, ale použil jsem tuto odpověď a funguje skvěle
odpověď
Provedl několik výpočtů a dostal následující výsledky:
Mapy Google ukazují 1 km pravítko (vlevo dole na mapě) o délce 90 pixelů na úrovni přiblížení 13. Což znamená následující:
Za předpokladu rozlišení obrazovky je 96 dpi nebo 36 dpcm, při úrovni zvětšení 13 máme 0,4 km (od 36/90) na 1 cm, což přináší měřítko mapy 1:40 000 pro obrazovku s rozlišením 96 dpi.
Pro různé operace na obrazovce nejlepší je vzít jako základ 90 pixelů, protože všechna čísla budou zaokrouhlena na všech úrovních přiblížení, tj.
- Úroveň přiblížení 12: 2 km za 90 pixelů
- úroveň přiblížení l 11: 4 km za 90 pixelů
- Úroveň přiblížení 10: 8 km za 90 pixelů
atd.
Upozorňujeme, že toto je přibližná hodnota, která by měla fungujte víceméně dobře na menších měřítcích než na velkých.
(A Google má nakonec ráda kulatá čísla …)
Komentáře
- Pokud se podíváte pozorně, ‚ zjistíte, že délka čáry se mění v závislosti na zeměpisné šířce oblasti, kterou ‚ prohlížení.
- Toto platí pouze v určité zeměpisné šířce, jak uvádí @rcoup. Liší se nejen délka měřítka, ale také vzdálenost, kterou představuje. Chcete-li v tomto příkladu pokračovat při zvětšení 13, je vzdálenost představovaná měřítkem 2 km v Severním mysu (71 ° zeměpisné šířky), 1 km kolem 45 ° zeměpisná šířka a 500 m u rovníka.
odpověď
na základě všech poskytnutých informací , Postavil jsem funkci, která dává to nejlepší z aplikované na mapu, když chcete mít vodorovnou čáru, která představuje N% zobrazené mapy.
Zobrazená mapa se vyznačuje vlastní šířkou pixelu.
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); }
Odpovědět
Zatím nemohu přidat komentář, ale toto je možný zdroj Peteho odpovědi výše: https://developers.google.com/maps/documentation/javascript/maptypes#MapCoordinates
[…] Všimněte si, že každá zvyšující se úroveň přiblížení je dvakrát větší ve směru x i y. Proto každá vyšší úroveň přiblížení obsahuje čtyřikrát větší rozlišení než předchozí úroveň. Například na úrovni přiblížení 1 se mapa skládá ze 4 dlaždic 256×256 pixelů, což má za následek pixelový prostor od 512×512. Na úrovni přiblížení 19 lze na každý pixel x a y na mapě odkazovat pomocí hodnoty mezi 0 a 256 * 2 19
Odpověď
Vypočítal jsem stupnice pro čtyři úrovně přiblížení:
Úroveň přiblížení | Měřítko 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000
Zdá se, že měřítko je zdvojnásobeno, protože úroveň zvětšení se zvýšila o jeden krok. Doufám tedy, že měřítko pro úroveň přiblížení 16 bude 1: 8000 atd.
Komentáře
- Vítejte na GIS.SE! Můžete uvést zdroj, nebo jak to bylo vypočítáno?
Odpověď
Ahoj, myslím, že jsem to vypočítal 1pixel = 11 627 km v přímém směru; nebere v úvahu poloměr Země. Zde je odkaz na video, které vysvětluje, jak: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be . Doufám, že vám to vyčistí mysl.
Komentáře
- Není. Hodnota pixelu závisí na zeměpisné šířce.
- No, chápu, ne do takového komplexu, do kterého jsem se dostal.