বহুভুজের সেন্ট্রয়েড ঠিক কীভাবে গণনা করা হয়?


10

আমি জানতে চাই কি ঠিক QGIS জ্যামিতি সরঞ্জামগুলি -> বহুভুজ সেন্ট্রয়েড পয়েন্ট স্থানাঙ্কগুলি গণনা করছে। উদাহরণস্বরূপ, এটি বহুভুজের বোর্ডারকে ছোট পয়েন্টগুলিতে বিভক্ত করে, সর্বোচ্চ দুরত্বের সাথে দুটি জোড়া দুটি পয়েন্ট (দৈর্ঘ্য এবং প্রস্থ) নেয় এবং সেন্ট্রয়েড হিসাবে এই দুটি লাইনের ক্রসিং গ্রহণ করে?

উত্তর:


13

কিউজিআইএস যদি জিইওএসের সাথে সেন্ট্রয়েডকে একটি জেটিএস পোর্ট হিসাবে গণনা করছে তবে অ্যালগরিদমটি হ'ল এই http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/algorithm/CenterroidArea.html । তত্ত্ব সম্পর্কে জাভাদকের একটি লিঙ্ক রয়েছে http://www.faqs.org/faqs/ographicics/algorithms-faq/ এ , বিভাগ 2.02 দেখুন: বহুভুজের সেন্ট্রয়েড কীভাবে গণনা করা যায় ?.

বহুভুজের সেন্ট্রয়েড (ওরফে ভর কেন্দ্রের, বা মাধ্যাকর্ষণ কেন্দ্রের) বহুভুজের একটি বিভাজনের সেন্ট্রয়েডের ওজনফল হিসাবে ত্রিভুজগুলিতে গণনা করা যেতে পারে। একটি ত্রিভুজের সেন্ট্রয়েড কেবল তার তিনটি সূচকের গড়, অর্থাৎ এর স্থানাঙ্ক (x1 + x2 + x3) / 3 এবং (y1 + y2 + y3) / 3 থাকে। এটি প্রথমে বহুভুজকে ত্রিভঙ্গীকরণ করার পরামর্শ দেয়, তারপরে প্রতিটি ত্রিভুজের ক্ষেত্রফল দ্বারা ভারিত প্রতিটি ত্রিভুজের সেন্ট্রয়েডের যোগফল গঠন করে, মোট সমষ্টিটি বহুভুজ অঞ্চল দ্বারা সাধারণীকরণ করা হয়। এটি প্রকৃতপক্ষে কার্যকর হয় তবে একটি সহজ পদ্ধতি রয়েছে: ত্রিভুজাকরণটি একটি বিভাজন হওয়া উচিত নয়, বরং বহুভুজটির ক্ষেত্রের গণনা করার সময় ব্যবহার করা হয় ইতিবাচক এবং নেতিবাচক ওরিয়েন্টেড ত্রিভুজগুলি (ইতিবাচক এবং নেতিবাচক অঞ্চলগুলি সহ) ব্যবহার করতে পারেন। এটি তাদের স্বাক্ষরিত অঞ্চলটির সাথে ওজনযুক্ত ত্রিভুজ সেন্ট্রয়েডের যোগফলের উপর ভিত্তি করে সেন্ট্রয়েড গণনার জন্য খুব সাধারণ অ্যালগরিদম বাড়ে। ত্রিভুজগুলি যে কোনও নির্দিষ্ট বিন্দু দ্বারা গঠিত, যেমন বহুভুজের ভার্টেক্স v0 এবং বহুভুজের ধারাবাহিক প্রান্তের দুটি প্রান্ত: (v1, v2), (v2, v3) ইত্যাদি দ্বারা গ্রহণ করা যেতে পারে a, b, c এর সাথে একটি ত্রিভুজের অর্ধেকটি এই অভিব্যক্তির অর্ধেক: (b [X] - a [X]) * (c [Y] - a [y]) - (c [X] - a [X] ) * (খ [ওয়াই] - ক [ওয়াই]);

Code available at ftp://cs.smith.edu/pub/code/centroid.c (3K).
Reference: [Gems IV] pp.3-6; also includes code.

আমার কাছে মনে হয় পদ্ধতিটি সঠিক is যদি আপনি স্থানাঙ্ক মানগুলি কীভাবে ব্যবহৃত হয় এবং যদি রাউন্ডিং ত্রুটি ইত্যাদি হতে পারে ইত্যাদি পরীক্ষা করতে চান তবে আপনি জেটিএস বা জিইওএসের উত্স কোডটি দেখে নিতে পারেন।


1
আরও কয়েকটি লিঙ্ক: gdal.org/python/osgeo.ogr.Geometry-class.html# সেন্ট্রয়েড নোট করে যে জিডিএল জিওএস.এসজিও . org / ডিগ্রিঅক্সিজেন / ক্লাসজেস_1_1 এলগোরিদিম_1_1 সেন্ট্রয়েড html এ বর্ণিত জিওওএস পদ্ধতিটি ব্যবহার করে uses কিউজিআইএস ব্যাকগ্রাউন্ডে জিডিএল কার্যকারিতা ব্যবহার করে।
AndreJ

2
পদ্ধতিটি খুব খুব ছোট বহুভুজগুলির জন্য সঠিক। বড়দের জন্য আপনি এই সমস্যাটি নিয়ে চলেছেন যে পৃথিবী সমতল নয়।
পিটার টেলর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.