আমি কীভাবে বেশ কয়েকটি অক্ষাংশ এবং দ্রাঘিমাংশ দাগের মধ্যে গড় গণনা করতে পারি?
আমি কি কেবল ল্যাট এবং এলএনজি উভয়ের জন্য পাটিগণিতের গড় গণনা করব?
আমি কীভাবে বেশ কয়েকটি অক্ষাংশ এবং দ্রাঘিমাংশ দাগের মধ্যে গড় গণনা করতে পারি?
আমি কি কেবল ল্যাট এবং এলএনজি উভয়ের জন্য পাটিগণিতের গড় গণনা করব?
উত্তর:
সাধারণ গড় হিসাবে, আপনি দ্রাঘিমাংশ এবং অক্ষাংশ স্থানাঙ্ক গড় করতে চান না। এটি নিম্ন অক্ষাংশে বেশ ভাল কাজ করতে পারে তবে উচ্চতর অক্ষাংশে এটি খারাপ ফলাফল দিতে শুরু করবে এবং মেরুগুলির কাছে পুরোপুরি ভেঙে পড়বে।
আমি এই ধরণের জিনিসটির জন্য যে পদ্ধতিটি ব্যবহার করেছি তা হ'ল দ্রাঘিমাংশ / অক্ষাংশ স্থানাঙ্কগুলিকে 3 ডি কার্টেসিয়ান স্থানাঙ্কগুলিতে রূপান্তর করা (x, y, z)। এগুলি গড় করুন (কোনও কার্তেসিয়ান ভেক্টর দেওয়ার জন্য) এবং তারপরে আবার পরিবর্তন করুন। নোট করুন যে আপনার সম্ভবত ভেক্টরটিকে স্বাভাবিক করার দরকার নেই, তাই প্রকৃত গড় প্রক্রিয়াটি একটি সাধারণ যোগফল হতে পারে।
সম্পাদনা করুন, এখানে আমার সি # কোড রয়েছে:
নিম্নলিখিতটি কারটিশীয় স্থানাঙ্ককে অক্ষাংশ / দ্রাঘিমাংশ (ডিগ্রীতে) রূপান্তর করে: RAD2DEG
রেডিয়েন্সের জন্য স্থায়ীগুলি সরান ।
Latitude = MPUtility.RAD2DEG * Math.Atan2(z, Math.Sqrt(x * x + y * y));
Longitude = MPUtility.RAD2DEG * Math.Atan2(-y, x);
এবং আমরা এখানে অক্ষাংশ / দ্রাঘিমাংশ (রেডিয়ানে নির্দিষ্ট) থেকে কার্টেসিয়ান স্থানাঙ্ক গণনা করি:
private void CalcCartesianCoord()
{
_x = Math.Sin(LatitudeRadians) * Math.Cos(LongitudeRadians);
_y = Math.Sin(LatitudeRadians) * Math.Sin(LongitudeRadians);
_z = Math.Cos(LatitudeRadians);
}
উভয়ই রিয়েল কোড থেকে কাটা এবং আটকানো হয়, সুতরাং ডিগ্রি এবং রেডিয়ানগুলির মিশ্রণ। এখানে কিছু বৈশিষ্ট্য রয়েছে যা কিছু রূপান্তর করে (উদাহরণস্বরূপ LatitudeRadians
এমন একটি সম্পত্তি যা একটি রেডিয়ান মান দেয়)।
নোট করুন যে অপ্টিমাইজেশন সম্ভব: উদাহরণস্বরূপ সদৃশ সাইন গণনা। এছাড়াও আপনি যদি তাদেরকে অনেক কল করেন তবে ট্রিগার গণনাগুলি ক্যাশেযোগ্য হতে পারে।
ক্লাস্টারিং বিকল্পগুলি : আমি মনে করি যে ধারণামূলক বাজে শব্দটি এই ধরণের অপারেশনকে অন্তর্ভুক্ত করে এটি "ক্লাস্টারিং"। গড়ে তোলা এখন পর্যন্ত বাস্তবায়নের সবচেয়ে সহজ এবং বেশিরভাগ উদ্দেশ্যে ভাল কাজ করে। আমি অন্য কিছু ব্যবহার করার সময়টি হ'ল যদি আপনি বিদেশী [সম্পাদনা] -> বা খুঁটি বা আন্তর্জাতিক তারিখের বিষয়ে উদ্বিগ্ন হন। [সম্পাদনা] -> গড় গড়েও, যখন এটি আপনাকে ক্লাস্টারের কেন্দ্রের কাছাকাছি দেখায় এমন কিছু দেবে, যখন ডিগ্রি ল্যাট এলএনজি সবসময় একই দূরত্ব হয় না এই কারণে প্রক্ষেপণ ভুলত্রুটির কারণে কিছুটা দূরে থাকবে কিমি / মাইল দূরে। আপনি যত বেশি গড় বিকশনের উপরে গড় অঞ্চল।
এখানে কয়েকটি ক্লাস্টারিং বিকল্পের তুলনা করা হল
গড় (সহজ, দ্রুত, ত্রুটিযুক্ত): কেবলমাত্র পরবর্তী মানগুলি যোগ করুন এবং গণনা অনুসারে ভাগ করুন এবং এলএনজি মানগুলির জন্য একই করুন। আপনি যদি কোনও 32 টি সিস্টেম (উল্লেখযোগ্যভাবে সি #) ব্যবহার করছেন তবে নিঃশব্দে কম সংখ্যায় ফিরে আসবে ওভারফ্লোটি সন্ধান করতে ভুলবেন না। আপনি আপনার যোগফলের জন্য ভাসমান পয়েন্ট নির্ভুলতা ব্যবহার করে এই এরোগগুলি এড়াতে পারেন। এই পদ্ধতির সাথে একটি সমস্যা হ'ল আউটলিয়াররা আপনার অবস্থানটি স্কু করতে পারে। [সম্পাদনা] -> আর একটি হ'ল খুঁটি এবং আন্তর্জাতিক তারিখের লাইনের নিকটে গণিতের গড় ভাল হয় না এবং অবস্থানগুলি খারাপভাবে আঁকায়।
নিকটবর্তী নিকটবর্তী (কিছুটা শক্ত, ধীর, আউটরিয়র পক্ষপাতদুষ্ট নয়) গড়ের পরিবর্তে আপনি তার প্রতিবেশীদের সবচেয়ে ছোট গড় দূরত্বের সাথে প্রকৃত ল্যাট এলএনজি অবস্থানের সাথে যেতে পারেন। এটি "মিডিয়ান" গ্রহণের মতো। নীচের দিকটি হ'ল এটি গণনাগতভাবে ব্যয়বহুল কারণ আপনি প্রতিটি পয়েন্টকে প্রতিটি অন্যান্য বিন্দুর সাথে তুলনা করেন এবং তাদের মধ্যে দূরত্ব গণনা করেন। উদাহরণস্বরূপ, 10,000 পয়েন্ট ক্লাস্টারিংয়ের জন্য 100 মিলিয়ন দূরত্বের গণনা প্রয়োজন .. এটি ধীর নয় তবে এটি অবশ্যই ভাল স্কেল করে না।
গ্রিড সেল (আউটলার পক্ষপাতদুষ্ট নয়, কিছুটা অতিরিক্ত সেটআপ দরকার) এটি নিকটতম প্রতিবেশীর সাথে একই রকম তবে আরও দ্রুত। আপনি একটি নির্বিচার স্তরের নির্ভুলতার বাছাই করতে পারেন, বলুন .01 ডিগ্রী লেট এলএনজি (যা প্রায় জনসংখ্যার ল্যাটিচিউডের প্রায় 1 কিলোমিটার) এবং আপনার পয়েন্টগুলিকে .01 x .01 ডিগ্রি বালতিতে বিভক্ত করুন। এরপরে আপনি বালতিটিকে সর্বাধিক পয়েন্ট সহ বাছাই করতে পারেন এবং হয় সেই পয়েন্টগুলির গড় নিতে পারেন বা কেবল সেই পয়েন্টগুলিতে নিকটতম প্রতিবেশী বিশ্লেষণ চালাতে পারেন। আমি সত্যিই বড় ডেটাসেটগুলি (শত শত বিলিয়ন রেকর্ড) দিয়ে এই পদ্ধতিটি ব্যবহার করি এবং এটি নির্ভুলতা এবং গতির মধ্যে একটি দুর্দান্ত ভারসাম্য খুঁজে পাই।
উত্তল হাল হ্যান্ড সেন্ট্রয়েড (শক্ত, ধীর, ঝরঝরে ফলাফল): আপনি এমন একটি আকার নির্ধারণ করতে আপনার পয়েন্টগুলির চারপাশে একটি ব্যান্ডও আঁকতে পারেন যা সেগুলি সমস্তকে আবরণ করে ( উইকিপিডিয়া দেখুন ), এবং তারপরে এই আকারের কেন্দ্র বিন্দু গণনা করুন। সাধারণ সেন্ট্রয়েড ফাংশনগুলি ওজনকে কেন্দ্র করে হয় না তাই আপনি আপনার আকারের অভ্যন্তরে নমুনা পয়েন্টগুলি ব্যবহার করে এমন এক ধরণের বিপরীত নিকটবর্তী প্রতিবেশী বিশ্লেষণের প্রয়োজন হবে যতক্ষণ না আপনি প্রান্তগুলি থেকে খুব দূরে সন্ধান করেন। এই পদ্ধতিটি সত্যিকারের কেন্দ্রের আলগোরিদিম আবিষ্কারের চেয়ে উত্তল হলের চেয়ে নিজেই আকর্ষণীয় কারণ এটি তাত্পর্যপূর্ণ বা বিশেষভাবে সুনির্দিষ্ট নয় .. তবে হলের আকৃতিতে আপনার ডেটা সহ অন্যান্য দরকারী অ্যাপ্লিকেশন থাকতে পারে।
আপনি কী অর্জন করতে চাইছেন তা নিশ্চিত নন, তবে যে বিন্দুংশটি মূল পয়েন্ট সেটটির দৈর্ঘ্যের গড় এবং দ্রাঘিমাংশ মূল পয়েন্ট সেটটির দ্রাঘিমাংশের গড়, মূল পয়েন্ট সেটটির গড় পয়েন্ট হবে। [আপডেট]: উপরের দিকে, গড়টি পাটিগণিত গড়।