উত্তর:
যদি আপনি গুগল ম্যাপস বা ভার্চুয়াল আর্থের উপরে ওভারলেটিংয়ের পরিকল্পনা করে একটি মানচিত্র ডিজাইন করে থাকেন এবং একটি টাইলিং স্কিম তৈরি করেন তবে আমি মনে করি আপনি যা খুঁজছেন তা প্রতিটি জুম স্তরের আঁশ, এইগুলি ব্যবহার করুন:
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
সূত্র: http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#designing_overlay_gm_mve.htm
আমি এই প্রতিক্রিয়াটি পেয়েছি - একটি গুগল কর্মচারী দ্বারা লেখা - এটি সম্ভবত সবচেয়ে নির্ভুল হবে:
এটি সঠিক হবে না, কারণ মরেটর প্রজেকশন (গুগল ম্যাপের মতো) সহ একটি মানচিত্রের রেজোলিউশন অক্ষাংশের উপর নির্ভরশীল।
এই সূত্রটি ব্যবহার করে গণনা করা সম্ভব:
metersPerPx = 156543.03392 * Math.cos(latLng.lat() * Math.PI / 180) / Math.pow(2, zoom)
এটি পৃথিবীর ব্যাসার্ধ 63৩7878১137 মিটার এই ধারণার উপর ভিত্তি করে তৈরি। আমরা যে মানটি ব্যবহার করি তা :)
থেকে নেওয়া হয়েছে: https://groups.google.com/forum/#!topic/google-maps-js-api-v3/hDRO4oHVSeM
বিটিডাব্লু - আমি অনুমান করছি:
'latLng.lat()' = map.getCenter.lat()
'zoom' = map.getZoom()
আপনাকে গণিতগুলি বোঝার জন্য (কোনও সুনির্দিষ্ট গণনা নয়, এটি কেবল উদাহরণের জন্য):
ধরা যাক আপনার কম্পিউটার মনিটরটিতে প্রতি ইঞ্চি 100 পিক্সেল (পিপিআই) রয়েছে। এর অর্থ 256 পিক্সেল দৈর্ঘ্যের প্রায় 6.5 সেমি। এবং এটি 0.065 মি ।
জুম স্তর 0 তে , দ্রাঘিমাংশের পুরো 360 ডিগ্রি একক টাইলে দৃশ্যমান । আপনি গুগল ম্যাপে এটি পর্যবেক্ষণ করতে পারবেন না যেহেতু এটি স্বয়ংক্রিয়ভাবে জুম স্তর 1 এ চলে যায় তবে আপনি এটি ওপেনস্ট্রিটম্যাপের মানচিত্রে দেখতে পাবেন (এটি একই টাইলিং স্কিম ব্যবহার করে)।
নিরক্ষীয় অঞ্চলে 360 ডিগ্রেশন পৃথিবীর পরিধি সমান, 40,075.16 কিমি, যা 40075160 মিটার
40065160 মিটার 0.065 মিটার দিয়ে বিভক্ত করুন এবং আপনি 616313361 পাবেন যা 100 ডিপিআই সহ কম্পিউটার মনিটরের জন্য নিরক্ষীয় অঞ্চলে জুম লেভেল 0 এর স্কেল is
এছাড়াও চেক আউট করুন: http://wiki.openstreetmap.org/wiki/FAQ# কী_এই_ম্যাপ_স্কেল_স_এ_ পার্টিকুলার_জুম_লেভেল_ফেস_ম্যাপ ৩৩ এফ
591657550.500000
এই উত্তর অনুসারে 0 স্তর। তবে @ ক্যাপ্টড্রাগন অনুসারে স্তর 1। গুগল মানচিত্রের সাথে গণনা করার জন্য আমার স্তর 1 থেকে শুরু করা উচিত?
এত সহজ নয়। প্রক্ষেপণ দেওয়া হয়েছে, টাইল পিক্সেলের আকার আপনি আগ্রহী সেই অঞ্চলের অক্ষাংশের উপর নির্ভর করে Then আপনার স্ক্রিনটি ডিপিআই ব্যবহার করছে।
সোজাসাপ্টা অনুমোদনের সঠিক উত্তর:
591657550.500000 / 2^(level-1)
এটি আপনাকে জুম স্তরে প্রবেশ করে উপরের টেবিলটি দেয়।
এটি jsfiddle.net লাইভ চেষ্টা করুন
যেহেতু প্রশ্নটি কেবল গুগল ম্যাপসের জন্য, প্রথম নয়, ওপি 3 ডি জ্যামিতির বিষয়ে চিন্তা করে না। গুগল ম্যাপগুলি আগেই সমতল হয় তাই 1 পিক্সেল সর্বদা একই দূরত্বে থাকে (ডিগ্রিজে, যা গুগল ম্যাপের জন্য উদ্বেগযুক্ত), এখানে এবং মেরুগুলির মতো ইকুয়েটারে।
যাইহোক, আপনি কি বুঝতে পেরেছিলেন যে বিশ্বের মানচিত্রের প্রথম পিক্সেল সারির কোথাও স্কেলটি 1: 1?
মাইক্রোসফ্ট থেকে ভার্চল আর্থ টাইল সিস্টেমের নথিতে এমন একটি সারণী রয়েছে । তবে গুইলাউমিসি বলেছেন যে মানগুলি অক্ষাংশ এবং স্ক্রিন রেজোলিউশনের উপর নির্ভর করে। টেবিলটি নিরক্ষীয় অঞ্চলে এবং 96 ডিপিআই-এর স্ক্রিন রেজোলিউশনে পরিমাপ করা মান দেয়।
পিএস: এটি সম্পর্কে নিশ্চিত নয় তবে গুগলের জুম স্তরের তুলনায় মাইক্রোসফ্ট দ্বারা জুম স্তরগুলি 1 দ্বারা স্থানান্তরিত হতে পারে। তবে তারা অবশ্যই একই প্রক্ষেপণটি ব্যবহার করে যাতে মানগুলির জন্য গুগল সঠিক থাকে।
রেডিয়াস @ নিরক্ষীয় অঞ্চল 6,378,137 মিটার সঠিক (ডাব্লুজিএস -৪৪)
নিরক্ষীয় অঞ্চলে পরিবেশন = 40,075,017 মিটার (2πr)
জুম স্তর 24 পরিধি হিসাবে 2 থেকে 32 পাওয়ার (4,294,967,296) পিক্সেল ব্যবহার করে।
নিরক্ষীয় চক্র / 2 32 = .009330692 মিটার প্রতি পিক্সেল
অক্ষাংশে ইউনিট = (অক্ষাংশের কোসিন) এক্স (নিরক্ষীয় অঞ্চলে ইউনিট)
জুম স্তর প্রতিটি বৃদ্ধি দ্বিগুণ করে।
1 ফুট (আন্তর্জাতিক) = 0.3048 মিটার
সম্পাদন করা
ভাল এটি দিয়ে শুরু করা আসলেই কোনও বৈধ প্রশ্ন নয়। স্কেল অনুপাত কম্পিউটারের স্ক্রিন নয় প্রিন্টড ডকুমেন্টগুলির সাথে সম্পর্কিত। এই চিত্রগুলির যে কোনও নির্ভুলতার সাথে ব্যবহার করার জন্য আপনার যা প্রয়োজন তা হ'ল প্রতিটি পিক্সেলের মাত্রাটি জানার পরে চিত্রটি আপনার ওভারলেলে যা রয়েছে তা অনুযায়ী স্কেল করুন।
১৫-২০ বছর আগে কেউ ডাব্লুজিএস -৪৪ বেস ডেটা হিসাবে নিয়েছিল। (পূর্ববর্তী পোস্টে কেউ 40,075,160 এর মান ব্যবহার করেছেন আমি এটি উইকিপিডিয়াতে কয়েক জায়গায় দেখেছি এবং এটি ভুল rect সঠিক মানটি 40,075,017
তারপরে তারা এটি নিয়েছিল এবং এটি একটি সম্পূর্ণ 32 বিট পূর্ণসংখ্যার দ্বারা ভাগ করে। এটি একটি যৌক্তিক পছন্দ কারণ এটি প্রায় এক সেন্টিমিটারে বিশ্বব্যাপী নির্ভুলতা দেয় যা বায়বীয় চিত্রের জন্য যথেষ্ট। 32 বিট ইন্টিজারগুলি সঞ্চয় এবং প্রক্রিয়া করার জন্যও দক্ষ।
কেন এটি 24 স্তর হিসাবে বেছে নেওয়া হয়েছিল আমি জানি না তবে এখানে অন্য কেউ কাজ করেছেন বলে 0 আপনাকে পৃথিবীর জন্য 256 পিক্সেলের টাইল এ নামিয়ে দেয়।
উপরের ডেটা কীভাবে ব্যবহার করবেন তার উদাহরণের জন্য এখন। বলুন যে আমার কাছে জুম স্তরের 20 তে একটি চিত্র রয়েছে (বর্তমানে এটি জুম হিসাবে তারা আপনাকে পেতে পারে) নিন 0.009330692 (নিরক্ষীয় অঞ্চলে জুম 24) এটি জুম 23 এর জন্য দ্বিগুণ, আবার জুম 22 এর জন্য, আবার জুম 21 এর জন্য এবং শেষবারের সময় 20 এর জন্য আপনার এখন 0.149231071 হওয়া উচিত।
এখন আসুন আমরা বলতে পারি যে আমাদের চিত্রটি অক্ষাংশ 45-এ রয়েছে that এর কোসিন নিন (0.707106781) এবং এটি আমাদের 0.149231071 দ্বারা গুণ করুন এবং এটি আপনাকে 0.105564729 মিটার দেবে। এটি জুম লেভেল ২০-এ 45 অক্ষাংশের চিত্র থেকে একটি পিক্সেলের দৈর্ঘ্য এবং উচ্চতা। আপনি যদি পা চান তবে এটি 0.3048 ভাগ করুন
উত্স হিসাবে, আমি প্রায় 5 বছর পূর্বে গুগল এবং এমএস ম্যাপিং সহায়তা সাইটগুলি সহ ওয়েবে খুঁজে পেয়েছি বিভিন্ন বিট তথ্য এবং ডকুমেন্টেশন থেকে প্রকৌশলীকে বিপরীত করেছি।
আমি এই শত শত সময় ব্যবহার করেছি এবং এটিকে প্রকৃত ক্ষেত্রের সমীক্ষার ডেটা দিয়ে ওভারলাইং করেছি এবং এটি সর্বদা সঠিক ছিল। এখানে পোস্ট করা টেবিলগুলির সাথে এটির বিরুদ্ধে চেক করুন এবং নম্বরগুলি মিলবে।
সবেমাত্র কিছু গণনা করা হয়েছে এবং নিম্নলিখিত ফলাফল পেয়েছেন:
গুগল ম্যাপে 1 কিলোমিটার শাসক (মানচিত্রের নীচে বাম) দেখায় যা দৈর্ঘ্যে 90 পিক্সেল, জুম স্তরে 13. যার অর্থ নিম্নলিখিত:
স্ক্রিন রেজোলিউশন ধরে নিলে 96 ডিপিআই বা 36 ডিপিসিএম, জুম লেভেল 13 এ আমাদের 1 সেমিতে 0.4 কিলোমিটার (36/90 থেকে) রয়েছে, যা 96 ডিপিআই স্ক্রিনের জন্য 1: 40,000 এর মানচিত্র স্কেল দেয়।
স্ক্রিনে বিভিন্ন ক্রিয়াকলাপের জন্য ভিত্তি হিসাবে 90px নেওয়া ভাল, কারণ সমস্ত সংখ্যা সমস্ত জুম স্তরে গোল হবে, যেমন
ইত্যাদি।
দ্রষ্টব্য যে এটি একটি আনুমানিক যা বড় আকারের চেয়ে ছোট আকারের স্কেলগুলিতে কম বেশি জরিমানা কাজ করা উচিত।
(এবং গুগল শেষ পর্যন্ত গোল সংখ্যা পছন্দ করে ...)
প্রদত্ত সমস্ত তথ্যের ভিত্তিতে, আমি একটি ফাংশন তৈরি করেছি যা মানচিত্রে সেরা z প্রদান করে যখন আপনি একটি অনুভূমিক রেখা রাখতে চান যা প্রদর্শিত মানচিত্রের N% প্রতিনিধিত্ব করে।
প্রদর্শিত মানচিত্রটির নিজস্ব পিক্সেল প্রস্থ দ্বারা চিহ্নিত করা হয়েছে।
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);
}
আমি এখনও কোনও মন্তব্য যোগ করতে পারি না তবে এটি উপরের পিটের উত্তরের একটি সম্ভাব্য উত্স: https://developers.google.com/maps/docamentation/javascript/maptypes#MapCoordinates
[...] নোট করুন যে প্রতিটি ক্রমবর্ধমান জুম স্তরটি x এবং y উভয় দিকের দ্বিগুণ হয়ে থাকে। সুতরাং, প্রতিটি উচ্চতর জুম স্তরের পূর্ববর্তী স্তরের চেয়ে চারগুণ বেশি রেজোলিউশন থাকে। উদাহরণস্বরূপ, জুম স্তর 1 এ, মানচিত্রটিতে 4 256x256 পিক্সেল টাইল থাকে, ফলস্বরূপ 512x512 থেকে পিক্সেলের স্থান হয়। জুম স্তরের 19-এ, মানচিত্রের প্রতিটি x এবং y পিক্সেল 0 এবং 256 * 2 19 এর মধ্যে একটি মান ব্যবহার করে উল্লেখ করা যেতে পারে
আমি চারটি জুম স্তরের জন্য স্কেলগুলি গণনা করেছি:
জুম স্তর | স্কেল 20 1: 500 19 1: 1000 18 1: 2000 17 1: 4000
জুম লেভেলটি এক ধাপ বাড়ার সাথে সাথে স্কেলটি দ্বিগুণ হয়ে গেছে বলে মনে হয়। সুতরাং, আমি আশা করি জুম স্তরের 16 এর স্কেল 1: 8000 এবং আরও অনেক কিছু হবে।
হাই আমার মনে হয় যে আমি 1 পিক্সেল = 11.627km সরলরেখায় গণনা করেছি; গ্রহের ব্যাসার্ধকে বিবেচনায় নিই না। এখানে ভিডিওর লিঙ্কটি ব্যাখ্যা করছে যে কীভাবে: https://www.youtube.com/watch?v=Y3cvTeiMJqE&feature=youtu.be । আশা করি যে আপনার মন পরিষ্কার করুন।
Zoom level set meters: ${meters}
); var জুমফ্যাক্টর = 1; যদি (মিটার <1128) {জুমফ্যাক্টর = 15; } অন্যথায় যদি ((মিটার> 1128) && (মিটার <2256)) oom জুমফ্যাক্টর = 14; } অন্যথায় যদি ((মিটার> 2256) && (মিটার <4513)) oom জুমফ্যাক্টর = 13; if অন্যথায় যদি ((মিটার> 4513) && (মিটার <9027)) oom জুমফ্যাক্টর = 12; if অন্যথায় যদি ((মিটার> 9027) && (মিটার <18055)) oom জুমফ্যাক্টর = 11; } অন্যথায় যদি ((মিটার> 18055) && (মিটার <36111)) oom জুমফ্যাক্টর = 10; } অন্যথায় যদি ((মিটার> 36111) && (মিটার <72