গড় অক্ষাংশ এবং দ্রাঘিমাংশ স্থানাঙ্ক গণনা করা


19

আমি কীভাবে বেশ কয়েকটি অক্ষাংশ এবং দ্রাঘিমাংশ দাগের মধ্যে গড় গণনা করতে পারি?

আমি কি কেবল ল্যাট এবং এলএনজি উভয়ের জন্য পাটিগণিতের গড় গণনা করব?


3
আমি মনে করি গড় ব্যবহারের যথাযথতা আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে। আপনি যদি কেবল কোনও ওয়েব ম্যাপের জন্য শহরের রেস্তোঁরাগুলির অবস্থানগুলি ক্লাস্টারিং করে থাকেন তবে নিশ্চিত হন যে গড় গড়ে বেশিরভাগ সময় কাজ করবে। তবে আপনি কিছু জায়গায় বাগ পাবেন .. একটি প্রোটোটাইপ বা স্বল্প বাজেটের অ্যাপ্লিকেশনটির জন্য এটি ঠিক আছে। তবে, আপনি যদি আরও গুরুতর কিছু করছেন বা বিস্তৃত অঞ্চল জুড়ে আছেন তবে আপনার সম্ভবত প্রজেকশন সূক্ষ্মতাগুলি অ্যাকাউন্টে নেওয়া দরকার।
গ্লেন

1
এই পয়েন্টগুলি কীভাবে সংগ্রহ করা হয়েছিল? স্থানাঙ্কগুলি কীভাবে গড় করা যায় তা জিজ্ঞাসা করার পরিবর্তে, জিজ্ঞাসা করুন যে গড় পরিমাপের ত্রুটিগুলি পূরণ করার উপযুক্ত উপায় কিনা। এই ইবুকটিতে প্রচুর ত্রুটি সংজ্ঞা রয়েছে।
কर्क কুইকেনডাল

কেবল একটি নোট যে কিছু প্রান্তের ক্ষেত্রে রয়েছে যেখানে একটি 'গড় পয়েন্ট' যথাযথভাবে সংজ্ঞায়িত হয় না: যেমন নিরক্ষীয় অঞ্চলের পাশের যে কোনও জায়গায় সম্ভবত এন এবং এস মেরুগুলির "গড়" হতে পারে।
ড্যান এস

উত্তর:


15

সাধারণ গড় হিসাবে, আপনি দ্রাঘিমাংশ এবং অক্ষাংশ স্থানাঙ্ক গড় করতে চান না। এটি নিম্ন অক্ষাংশে বেশ ভাল কাজ করতে পারে তবে উচ্চতর অক্ষাংশে এটি খারাপ ফলাফল দিতে শুরু করবে এবং মেরুগুলির কাছে পুরোপুরি ভেঙে পড়বে।

আমি এই ধরণের জিনিসটির জন্য যে পদ্ধতিটি ব্যবহার করেছি তা হ'ল দ্রাঘিমাংশ / অক্ষাংশ স্থানাঙ্কগুলিকে 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এমন একটি সম্পত্তি যা একটি রেডিয়ান মান দেয়)।

নোট করুন যে অপ্টিমাইজেশন সম্ভব: উদাহরণস্বরূপ সদৃশ সাইন গণনা। এছাড়াও আপনি যদি তাদেরকে অনেক কল করেন তবে ট্রিগার গণনাগুলি ক্যাশেযোগ্য হতে পারে।


1
দুর্দান্ত পয়েন্ট আমি বিশ্বাস করতে পারি না যে আমি উল্লেখ করতে ভুলে গেছি .. খুঁটি এবং তারিখের লাইনের কাছাকাছি গড় আমাকে আগে দংশন করেছে।
গ্লেন

3
(+1) সমস্যাটি খুঁটি এবং + -180 ডিগ্রি মেরিডিয়ানের মধ্যে সীমাবদ্ধ নয়: যখন পয়েন্টগুলির অক্ষাংশের গড় গড় পরিবর্তিত হয়, তখন ল্যাট / লম্বা স্থানাঙ্কগুলির একটি সরল গড় প্লেট ক্যারি প্রজেকশন ব্যবহারের সমতুল্য হয়, যা অক্ষাংশের সাথে ক্রমবর্ধমান একটি পরিবর্তনশীল মেট্রিক বিকৃতি উপস্থাপন করে। কোনও সংখ্যাগত সমস্যা নেই তবে গড়টি কেবল ভুল জায়গায় in এই কারণে @ গ্লেনের উত্তরে প্রস্তাবিত দীর্ঘ / দীর্ঘ গণনা তুলনামূলকভাবে ছোট অ-মেরু অঞ্চল বাদে খুব কমই গ্রহণযোগ্য।
শুক্র

@ উইন্ডো ধন্যবাদ, আপনি কি কিছু (জাভা) কোড স্নিপেট বা এটি করার জন্য ভাল টিউটোরিয়াল প্রস্তাব করতে পারেন?
এনিউরিজম

1
গণিতটি 'কার্টেসিয়ান সমন্বয়সমূহ' এর অধীনে এন.ইউইকিপিডিয়া.র.উইকি / সেফেরিক্যাল_কমর্ডিনেটে রয়েছে । (আমার বাস্তবায়ন সি # এবং
আংশিকরূপে

1
আমি মনে করি প্রকৃত ইঞ্জিনিয়ারিং ব্যবহারের ক্ষেত্রে আপনি খুব সঠিক। তবে, চূড়ান্ত নির্ভুলতার প্রয়োজন না হলে, ডাব্লুজিএস ৮৮ ল্যাটকে গড়ে গড়ে তোলা হয়, শহর এবং এমনকি আঞ্চলিক অঞ্চলে এলএনজি স্থানাঙ্কগুলি খুব সুন্দরভাবে কাজ করে এবং এমন ফলাফল দেয় যা বেশিরভাগ ব্যবহারের ক্ষেত্রে গ্রহণযোগ্যভাবে সঠিক হয় যেখানে গড় ব্যবহার হত।
গ্লেন

3

ক্লাস্টারিং বিকল্পগুলি : আমি মনে করি যে ধারণামূলক বাজে শব্দটি এই ধরণের অপারেশনকে অন্তর্ভুক্ত করে এটি "ক্লাস্টারিং"। গড়ে তোলা এখন পর্যন্ত বাস্তবায়নের সবচেয়ে সহজ এবং বেশিরভাগ উদ্দেশ্যে ভাল কাজ করে। আমি অন্য কিছু ব্যবহার করার সময়টি হ'ল যদি আপনি বিদেশী [সম্পাদনা] -> বা খুঁটি বা আন্তর্জাতিক তারিখের বিষয়ে উদ্বিগ্ন হন। [সম্পাদনা] -> গড় গড়েও, যখন এটি আপনাকে ক্লাস্টারের কেন্দ্রের কাছাকাছি দেখায় এমন কিছু দেবে, যখন ডিগ্রি ল্যাট এলএনজি সবসময় একই দূরত্ব হয় না এই কারণে প্রক্ষেপণ ভুলত্রুটির কারণে কিছুটা দূরে থাকবে কিমি / মাইল দূরে। আপনি যত বেশি গড় বিকশনের উপরে গড় অঞ্চল।

এখানে কয়েকটি ক্লাস্টারিং বিকল্পের তুলনা করা হল

গড় (সহজ, দ্রুত, ত্রুটিযুক্ত): কেবলমাত্র পরবর্তী মানগুলি যোগ করুন এবং গণনা অনুসারে ভাগ করুন এবং এলএনজি মানগুলির জন্য একই করুন। আপনি যদি কোনও 32 টি সিস্টেম (উল্লেখযোগ্যভাবে সি #) ব্যবহার করছেন তবে নিঃশব্দে কম সংখ্যায় ফিরে আসবে ওভারফ্লোটি সন্ধান করতে ভুলবেন না। আপনি আপনার যোগফলের জন্য ভাসমান পয়েন্ট নির্ভুলতা ব্যবহার করে এই এরোগগুলি এড়াতে পারেন। এই পদ্ধতির সাথে একটি সমস্যা হ'ল আউটলিয়াররা আপনার অবস্থানটি স্কু করতে পারে। [সম্পাদনা] -> আর একটি হ'ল খুঁটি এবং আন্তর্জাতিক তারিখের লাইনের নিকটে গণিতের গড় ভাল হয় না এবং অবস্থানগুলি খারাপভাবে আঁকায়।

নিকটবর্তী নিকটবর্তী (কিছুটা শক্ত, ধীর, আউটরিয়র পক্ষপাতদুষ্ট নয়) গড়ের পরিবর্তে আপনি তার প্রতিবেশীদের সবচেয়ে ছোট গড় দূরত্বের সাথে প্রকৃত ল্যাট এলএনজি অবস্থানের সাথে যেতে পারেন। এটি "মিডিয়ান" গ্রহণের মতো। নীচের দিকটি হ'ল এটি গণনাগতভাবে ব্যয়বহুল কারণ আপনি প্রতিটি পয়েন্টকে প্রতিটি অন্যান্য বিন্দুর সাথে তুলনা করেন এবং তাদের মধ্যে দূরত্ব গণনা করেন। উদাহরণস্বরূপ, 10,000 পয়েন্ট ক্লাস্টারিংয়ের জন্য 100 মিলিয়ন দূরত্বের গণনা প্রয়োজন .. এটি ধীর নয় তবে এটি অবশ্যই ভাল স্কেল করে না।

গ্রিড সেল (আউটলার পক্ষপাতদুষ্ট নয়, কিছুটা অতিরিক্ত সেটআপ দরকার) এটি নিকটতম প্রতিবেশীর সাথে একই রকম তবে আরও দ্রুত। আপনি একটি নির্বিচার স্তরের নির্ভুলতার বাছাই করতে পারেন, বলুন .01 ডিগ্রী লেট এলএনজি (যা প্রায় জনসংখ্যার ল্যাটিচিউডের প্রায় 1 কিলোমিটার) এবং আপনার পয়েন্টগুলিকে .01 x .01 ডিগ্রি বালতিতে বিভক্ত করুন। এরপরে আপনি বালতিটিকে সর্বাধিক পয়েন্ট সহ বাছাই করতে পারেন এবং হয় সেই পয়েন্টগুলির গড় নিতে পারেন বা কেবল সেই পয়েন্টগুলিতে নিকটতম প্রতিবেশী বিশ্লেষণ চালাতে পারেন। আমি সত্যিই বড় ডেটাসেটগুলি (শত শত বিলিয়ন রেকর্ড) দিয়ে এই পদ্ধতিটি ব্যবহার করি এবং এটি নির্ভুলতা এবং গতির মধ্যে একটি দুর্দান্ত ভারসাম্য খুঁজে পাই।

উত্তল হাল হ্যান্ড সেন্ট্রয়েড (শক্ত, ধীর, ঝরঝরে ফলাফল): আপনি এমন একটি আকার নির্ধারণ করতে আপনার পয়েন্টগুলির চারপাশে একটি ব্যান্ডও আঁকতে পারেন যা সেগুলি সমস্তকে আবরণ করে ( উইকিপিডিয়া দেখুন ), এবং তারপরে এই আকারের কেন্দ্র বিন্দু গণনা করুন। সাধারণ সেন্ট্রয়েড ফাংশনগুলি ওজনকে কেন্দ্র করে হয় না তাই আপনি আপনার আকারের অভ্যন্তরে নমুনা পয়েন্টগুলি ব্যবহার করে এমন এক ধরণের বিপরীত নিকটবর্তী প্রতিবেশী বিশ্লেষণের প্রয়োজন হবে যতক্ষণ না আপনি প্রান্তগুলি থেকে খুব দূরে সন্ধান করেন। এই পদ্ধতিটি সত্যিকারের কেন্দ্রের আলগোরিদিম আবিষ্কারের চেয়ে উত্তল হলের চেয়ে নিজেই আকর্ষণীয় কারণ এটি তাত্পর্যপূর্ণ বা বিশেষভাবে সুনির্দিষ্ট নয় .. তবে হলের আকৃতিতে আপনার ডেটা সহ অন্যান্য দরকারী অ্যাপ্লিকেশন থাকতে পারে।


@ উইন্ডোয়েড খুঁটির কাছাকাছি স্থানাঙ্কগুলির গড় সম্পর্কে দুর্দান্ত বক্তব্য রাখে এবং আমি আন্তর্জাতিক তারিখের লাইনটি যুক্ত করব। উদাহরণস্বরূপ, যদি আপনার একদিকে এক বিন্দু থাকে এবং অন্যদিকে আপনি কিছু খারাপ গড় পান (এবং এছাড়াও বাক্স বাক্সগুলি)। এটি খুব কমই সামনে আসে, তবে এটি ডিবাগ করার জন্য যখন আসল ব্যথা হয়
গ্লেন

@ হুবার আপনার গড়পড়তা সময়ে সেন্টার ড্রাইফিং সম্পর্কে একটি ভাল বক্তব্য রাখে। গড়পড়তা যখন আপনাকে এমন কিছু দেবে যা ক্লাস্টারের কেন্দ্রের কাছাকাছি দেখায়, তখন কিছুটা দূরে থাকি কারণ প্রক্ষেপণ ভুলত্রুটিগুলির কারণে যে ডিগ্রি ল্যাট এলএনজি সর্বদা কিমি / মাইল দূরে একই দূরত্বে থাকে না। আপনি যত বেশি গড় বিকশনের উপরে গড় অঞ্চল।
গ্লেন

0

আপনি কী অর্জন করতে চাইছেন তা নিশ্চিত নন, তবে যে বিন্দুংশটি মূল পয়েন্ট সেটটির দৈর্ঘ্যের গড় এবং দ্রাঘিমাংশ মূল পয়েন্ট সেটটির দ্রাঘিমাংশের গড়, মূল পয়েন্ট সেটটির গড় পয়েন্ট হবে। [আপডেট]: উপরের দিকে, গড়টি পাটিগণিত গড়।


আপনার উত্তরে, গড় = গাণিতিক মানে?
aneuryzm

1
হ্যাঁ সঠিক. এটাই আমি স্পষ্টতার অভাবের জন্য দুঃখিত চাইছিলাম। আমি উত্তর আপডেট। কিন্তু আমি না নিশ্চিত আমি ভয়ঙ্কর টেবিলে দরকারী কিছু এখানে আনছি করছি ...
GuillaumeC
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.