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


34

আমার একটি বহুভুজ ভেক্টর রয়েছে এবং আমি একটি পাঠ্য নথিতে সন্নিবেশের জন্য দ্রুত এই বহুভুজের সেন্ট্রয়েড অর্জন করতে চাই। আমি কিউজিআইএস-এর সাথে কাজ করছি। আমি অন্যান্য প্রশ্নের মাধ্যমে অনুসন্ধান করেছি এবং যদিও কিছুটা কাছাকাছি হলেও তারা আমার প্রশ্নের যথেষ্ট উত্তর দেয় না।

আদর্শভাবে, সেন্ট্রয়েড স্থানাঙ্কগুলি বহুভুজের বৈশিষ্ট্য সারণীতে থাকবে এবং আমি কেবল স্থানাঙ্কগুলি অনুলিপি করে আটক করতে পারি।

আমি কোনও পৃথক পয়েন্ট ভেক্টর ফাইল তৈরি করতে চাই না যা সেন্ট্রয়েডকে উপস্থাপন করে এবং তারপরে এই সমন্বয়গুলি সন্ধান করে তাদের অনুলিপি করে আটকান।


আপনার পাঠ্য দলিলটি কী ফর্ম্যাট?
নাথান ডাব্লু

এটি একটি এমএস ওয়ার্ড ডকুমেন্ট তবে সত্যই এটি কিছু হতে পারে।
ডেভিড

উত্তর:


34

একটি সেন্ট্রয়েড সংজ্ঞা হিসাবে একটি পয়েন্ট লেয়ার হয় তবে বহুভুজ নয়। এর জন্য আপনাকে একটি নতুন স্তর তৈরি করতে হবে যা QGIS 1.8 এবং উচ্চতর সংস্করণগুলিতে পাই হিসাবে সহজ।

  • আপনার বহুভুজ লোড করুন
  • মেনুতে যান -> ভেক্টর -> জ্যামিতি সরঞ্জাম -> বহুভুজ কেন্দ্র্রয়েড এবং একটি সেন্ট্রয়েড পয়েন্ট স্তর তৈরি করুন
  • -> ভেক্টর মেনু -> জ্যামিতি সরঞ্জাম -> জ্যামিতি কলামগুলিকে রফতানি / যোগ করে ক্লিক করে তৈরি করা সেন্ট্রয়েডের স্থানাঙ্ক রফতানি করুন table

এরপরে আপনি বহুভুজগুলিতে সেন্ট্রয়েডস কলাম যুক্ত করতে আবার পয়েন্ট স্তরটি মোছার জন্য একটি স্থানিক যোগ করতে পারেন।


উত্তরের জন্য ধন্যবাদ আমি সাহায্যের প্রশংসা করি। তবুও সেন্ট্রয়েডের স্থানাঙ্কগুলি কী তা জানার জন্য এটি অনেক কাজ সহজ। খুব খারাপ, কিউজিআইএস-এ কোনও সহজ উপায় নেই।
ডেভিড

আপনি যদি এখনও এটি আরও সহজ চান তবে আপনি পোস্টজিআইএস এবং নীচে উল্লিখিত ST_Centroid ফাংশনটি একবার দেখে নিতে পারেন। এইভাবে আপনার অস্থায়ী ফাইল তৈরি করার দরকার নেই। বিকল্পভাবে আপনি কিউজিআইএসের জন্য একটি অজগর স্ক্রিপ্ট লিখতে পারেন বা SEXTANTE মডেলারটি ব্যবহার করতে পারেন।
কার্লিউ

10

সত্যই, একটি নতুন শেফফাইল তৈরি করা আপনার সহজ বিকল্পগুলির মধ্যে একটি। তবে আপনাকে স্থানাঙ্কগুলি অনুলিপি এবং আটকানোর দরকার নেই। এটা কর:

  • বহুভুজ সেন্ট্রয়েডস সরঞ্জামটি ব্যবহার করে আপনার সেন্ট্রয়েডগুলি ফাইল করুন।
  • সেন্ট্রয়েডস অ্যাট্রিবিউট টেবিলটি খুলুন এবং এটিকে সম্পাদনযোগ্য করে তুলুন (নীচে পেন্সিল আইকন)।
  • ফিল্ড ক্যালকুলেটরটি (নীচে ক্যালকুলেটর আইকন) খুলুন এবং নতুন ক্ষেত্র তৈরি করুন বিকল্পটি চয়ন করুন এবং এটিকে অর্থপূর্ণ কিছু বলুন (উদাঃ পূর্ব))
  • ফাংশনগুলি থেকে তালিকাটি জ্যামিতি মেনু প্রসারিত করুন এবং choose x চয়ন করুন তারপরে column y এর জন্য একটি নতুন কলামের সাথে পুনরাবৃত্তি করুন (এটিকে নরমিং বলে, বলুন)।
  • আপনার সম্পাদনাগুলি সংরক্ষণ করুন এবং যদি আপনি সেন্ট্রয়েডস সরঞ্জামটি ব্যবহার করেন তবে মূল বহুভুজ আইডি এবং বৈশিষ্ট্যগুলির সাথে সম্পূর্ণ অ্যাট্রিবিউট টেবিলের অংশ হিসাবে আপনার কাছে সমস্ত স্থানাঙ্ক রয়েছে।

বিকল্পভাবে আপনাকে আপনার ডেটা পোস্টজিআইজে আমদানি করতে হবে এবং তারপরে ST_Centroid ফাংশনটি ব্যবহার করে বহুভুজগুলির উপর পুনরাবৃত্তি করতে হবে এবং ফলাফলটি একটি নতুন ক্ষেত্রে সংরক্ষণ করতে হবে। জড়িত কাজ একই রকম তবে দ্বিতীয় বিকল্পটির অর্থ আপনার আলাদা সেন্ট্রয়েডস পয়েন্ট ফাইল নেই।


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


6

২.২ ফিল্ড ক্যালকুলেটরে এটি ব্যবহার সম্পর্কে কীভাবে?

লম্বা ক্ষেত্র = সাবস্ট্রাস্ট (জিওমটোওকিটি (সেন্ট্রয়েড ($ জ্যামিতি)), 7, 12)

ল্যাট ফিল্ড = সাবস্ট্রাস্ট (জিওমটোওকিটি (সেন্ট্রয়েড ($ জ্যামিতি)), স্ট্রপোস (জিওমটোওকিটি (সেন্ট্রয়েড ($ জ্যামিতি)), '') +2, 12)

দেখে মনে হচ্ছে এটি ২.6-এ xmin বিকল্প xmin (সেন্ট্রয়েড ($ জ্যামিতি)) দিয়ে সম্বোধন করা হয়েছে


5

আমি মাত্র এই পোস্টটি প্রায় 5 বছর দেরীতে এসেছি (!), তবে ২.১18.১৪ সংস্করণে বহুভুজ সেন্ট্রয়েডগুলি গণনা করতে আমি এখানে যা করছি:

  1. বহুভুজ স্তর সম্পাদনা শুরু করুন
  2. একটি নতুন পাঠ্য ক্ষেত্র তৈরি করুন, এটিকে সেন্ট্রয়েডক্সি বলুন
  3. ক্ষেত্র ক্যালকুলেটর ব্যবহার করে, সেন্ট্রয়েডক্সি = x ($ জ্যামিতি) গণনা করুন || ',' || Y ($ জ্যামিতি)
  4. ফলাফলটি দেখতে এমন কিছু দেখাচ্ছে: 397640.915545362, 2126924.53637653
  5. আপনার সম্পাদনাগুলি সংরক্ষণ করুন।
  6. আপনার বহুভুজ স্তরটিতে এখন x, y সেন্ট্রয়েড মান সহ একটি ক্ষেত্র রয়েছে

সহজ এবং চমত্কার
কাজুহিতো

3

বহুভুজের টেবিলের সাথে সেন্ট্রয়েড পয়েন্টস টেবিলটি যুক্ত করুন এবং তারপরে বহুভুজ নাম এবং আকারের সাথে স্থানাঙ্কগুলি রাখুন। বহুভুজের নিজস্ব ও দীর্ঘস্থায়ী দীর্ঘত্ব নেই


আপনার উত্তরের জন্য ধন্যবাদ. হ্যাঁ আমি বুঝতে পারি বহুভুজগুলির একটি দীর্ঘতর দীর্ঘায়িত হয় না এবং সেগুলির মধ্যে এটি কেবল এমন কিছু যা গণনা করা যায়। দুর্ভাগ্যক্রমে, কিউজিস-এ এটির চেয়ে সহজ নয়। উত্তরের জন্য আবার সবাইকে ধন্যবাদ। এবং খুব দ্রুত। ধন্যবাদ!
ডেভিড

2

এই পোস্টটি জুড়ে এসে অনুসরণ করা শক্ত, প্রস্তাবিত আপডেট:

দ্রষ্টব্য: এটি আপনার প্রজেকশন স্থানাঙ্কগুলিতে (যা মিটার হতে পারে) অক্ষাংশ এবং দ্রাঘিমাংশ গণনা করবে। আপনি যদি দশমিক ডিগ্রীতে স্থানাঙ্ক চান (আমি ধরে নিই যে আপনি করেন বা তারা বেশিরভাগই অনির্বচনীয়) প্রথমে এই সিআরএসে স্তরটি সংরক্ষণ করুন: ইপিএসজি: 4326, ডাব্লুজিএস 84।

  1. ওপেন ফিল্ড ক্যালকুলেটর
  2. নতুন ক্ষেত্র তৈরি করুন
  3. নাম প্রবেশ করান (অক্ষাংশ বা দ্রাঘিমাংশ)
  4. আউটপুট ক্ষেত্রের ধরণ হিসাবে দশমিক নির্বাচন করুন
  5. অক্ষাংশের জন্য এই এক্সপ্রেশনটি প্রবেশ করান: y ($ জ্যামিতি) এবং দ্রাঘিমাংশের জন্য এই অভিব্যক্তি: x ($ জ্যামিতি)
  6. ঠিক আছে টিপুন

-2

দীর্ঘ = ToReal (regexp_substr (geomToWKT (সেন্ট্রয়েড ($ জ্যামিতি))), '([\ s]')) ল্যাট = ToReal (regexp_substr (geomToWKT (সেন্ট্রয়েড ($ জ্যামিতি))), '\ গুলি []]')


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