কিউজিআইএস ব্যবহার করে অ্যাট্রিবিউটের মানের ভিত্তিতে বহুভুজের ভিতরে নিয়মিত স্পেস পয়েন্ট তৈরি করছেন?


11

আমার একটি বহুভুজ স্তর রয়েছে যা একটি বহুভুজের অভ্যন্তরে ব্যক্তির গণনা উপস্থাপন করে একটি বৈশিষ্ট্যযুক্ত মান যুক্ত থাকে। আমি কিউজিআইএস ৩.০ ব্যবহার করছি।

বহুভুজের অভ্যন্তরে পয়েন্টগুলির গ্রিড হিসাবে আমার সংখ্যাগুলি কল্পনা করতে হবে (অর্থাত 1 পয়েন্ট = 100 ব্যাঙ, স্পেসি দ্বারা বর্ণিত)। পয়েন্টগুলি অগত্যা পুরো বহুভুজ দখল করার প্রয়োজন হয় না এবং প্রাক-সংজ্ঞায়িত স্পেসিং (অর্থাত 300 মিটার) দিয়ে একটি সেন্ট্রয়েডের চারপাশে আঁকতে হবে, যাতে তারা একটি নির্দিষ্ট রেজোলিউশনে একটি ঝরঝরে গ্রিড উপস্থাপন করতে পারে।

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

সংক্ষেপে: প্রতিটি বহুভুজ (ব্যাচের) জন্য নিয়মিত পয়েন্ট (পয়েন্টগুলির # টি সংখ্যার সাথে চিহ্নিত, অঙ্কিত)> অতিরিক্ত পয়েন্ট মুছুন> # পয়েন্টগুলিতে অ্যাট্রিবিউট মান নির্ধারণ করুন

বিকল্প (অনিয়মিত ব্যবধান এড়ানো, তবে আরও বেশি হেরফের প্রয়োজন):

নিয়মিত পয়েন্টগুলি (সংজ্ঞায়িত স্পেসিং অর্থাত 300 মিটার) সম্পূর্ণ স্তরের পরিমাণে> বহুভুজের পরিমাণে ক্লিপ করুন> প্রতিটি পলিগনে অতিরিক্ত পয়েন্ট মুছুন যতক্ষণ না আপনি পছন্দসই # পয়েন্টের> পয়েন্টগুলিতে বৈশিষ্ট্য মান নির্ধারণ করুন।

আমার কর্মক্ষেত্রগুলির প্রধান সমস্যাটি হ'ল বহুভুজ বাই বহুভুজ প্রক্রিয়াজাতকরণ, যা ডেটা আপডেট করতে এবং বহু সংখ্যক বহুভুজের সাথে কাজ করা কঠিন করে তোলে।

অ্যানালগাসিক প্রশ্নটি QGIS- তে বহুভুজের মধ্যে নিয়মিত ব্যবধানযুক্ত # পয়েন্টের সংজ্ঞায়িত করা হিসাবে জিজ্ঞাসা করা হয়েছিল , তবে নির্দিষ্টকরণ আলাদা।

কাঙ্ক্ষিত ফলাফলের স্ক্রিনশট:

বৈশিষ্ট্য টেবিলএল:


1
আপনার প্রশ্নের চিত্রটি কি আপনাকে ফলাফল হিসাবে প্রত্যাশা করে? রঙিন পয়েন্ট গণনা কোথা থেকে আসে? আপনি কি স্তরটির বৈশিষ্ট্য সারণী যুক্ত করতে পারেন? বিশেষত বহুভুজগুলির বৈশিষ্ট্যগুলিতে এডমন্টন এবং শেরউড পার্ক অন্তর্ভুক্ত রয়েছে, রঙগুলি এবং গুনাগুলির আরও ভাল বোঝার জন্য।
কাদির bazাহবাজ

১. এটি কেবল মুখোশযুক্ত ডেটা যা প্রকৃত বহুভুজগুলির সাথে খুব বেশি কিছু করার নেই, তবে হ্যাঁ আমি এই জাতীয় ফলাফলের প্রত্যাশা করি তবে বহুভুজকে কেন্দ্র করে প্রায় বিন্দুর সাথে। ২. গুণাবলীগুলি টেবিলের কলামগুলি থেকে আসে, কারণ তিনটি কলাম / পয়েন্টের ধরণের পয়েন্ট রয়েছে আমি প্রথমে বহুভুতে প্রতি পয়েন্টের সঠিক সংখ্যা পেতে প্রথমে একটি কলামে তাদের একত্রিত করেছিলাম এবং তারপরে এক্সপ্রেশনগুলি ব্যবহার করে গুণ / রং নির্ধারণ করি assign সম্পাদনা: প্রশ্নে এক্সেল টেবিল যুক্ত , মানগুলি উপস্থাপন করে না, তবে আমার ডেটার কাঠামোকে উপস্থাপন করে।
রুসলান

উত্তর:


5

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

এখানে চিত্র বর্ণনা লিখুন

আমি কেবল একটি গুই সরঞ্জাম দিয়ে পয়েন্টগুলি তৈরি করার কোনও পদ্ধতি সম্পর্কে অবগত নই, তবে তুলনামূলক সহজ সরল অজগর স্ক্রিপ্টটি এটি করা উচিত।

with edit(point_layer):
    for polygon_feature in polygon_layer.getFeatures():
        point_feature = QgsFeature(point_layer.fields())
        point_feature.setGeometry(polygon_feature.geometry().centroid())

        point_feature['type'] = 'Frog'
        for i in range(polygon_feature['Frogs']):
            point_layer.addFeature(point_feature)

        point_feature['type'] = 'Cat'
        for i in range(polygon_feature['Cats']):
            point_layer.addFeature(point_feature)

        point_feature['type'] = 'Diplodoc'
        for i in range(polygon_feature['Diplodocs']):
            point_layer.addFeature(point_feature)

আপনি যদি পাগল হতে চান তবে এটি একটি কাস্টম প্রসেসিং অ্যালগরিদমে মুড়ে দিন।


ধন্যবাদ ম্যাথিয়াস, এটি অন্যান্য সমাধানের চেয়ে আরও ভাল বলে মনে হচ্ছে। এটি অর্জনের জন্য আপনি কী এট্রিবিউট টেবিলের উপর ভিত্তি করে পছন্দসই পয়েন্টগুলি দ্রুত তৈরি করার কোনও উপায় প্রস্তাব করতে পারেন?
রুসলান

আমি অজগর লিপিটি লেখার বাইরে কোনও সহজ পদ্ধতি সম্পর্কে অবগত নই। কোডটি সম্পূর্ণরূপে অনির্ধারিত, তাই কিছু টাইপস থাকতে পারে;)
ম্যাথিয়াস কুহন

আবার ধন্যবাদ. আমি সম্ভবত অনেক স্তর / এক্সটেন্টস ইত্যাদির জন্য একই ধরণের দৃষ্টিভঙ্গি করতে হবে তাই আমি এর জন্য কমপক্ষে একটি প্রসেসিং মডেল তৈরি করার চেষ্টা করব।
রুসলান

5

সরথ এসআরকে-র উত্তরে অনুপ্রেরণা যোগাতে অন্য কোনও উপায় হতে পারে:

  1. বহুভুজের সেন্ট্রয়েড
  2. স্কোয়ারের সাথে একটি অভিব্যক্তি নিয়োগ করে এবং আপনার স্কেলের সাথে মানিয়ে নিতে বাফার: যেমন (1000 * (স্ক্রুট ("ব্যাঙ" + "বিড়াল" + "ডিপ্লোডোকস") / 2)) + 1 এবং বিভাগ = 1, শেষ ক্যাপ শৈলী = স্কোয়ার
  3. বাফারের স্কেল সহ একটি ফাঁক ব্যবস্থার সাথে নতুন গ্রিড পয়েন্ট।
  4. বাফার স্তরটি ছেদ না করে এমন পয়েন্ট মুছুন (অবস্থান অনুসারে নির্বাচন করুন)
  5. অবস্থান অনুসারে বিশিষ্ট হয়ে যোগ দিন (বাফার বা মূল বহুভুজগুলির গুণাবলী)

তবুও, আপনার এই জাতীয় কিছু থাকবে এখানে চিত্র বর্ণনা লিখুন

  1. "@Row_number" কমান্ডের সাহায্যে একটি নতুন ক্ষেত্র তৈরি করতে à গ্রাফিকাল মডেলারটি ব্যবহার করুন এখানে চিত্র বর্ণনা লিখুন

  2. বাফার স্তরটিতে একটি পুনরাবৃত্তি দিয়ে মডেলটি সম্পাদন করুন এখানে চিত্র বর্ণনা লিখুন

  3. সমস্ত নতুন স্তর মার্জ করুন

  4. আপনার ক্ষেত্রের যোগফলের চেয়ে বড় আইডি_পিঠের ক্ষেত্র সহ সমস্ত পয়েন্ট মুছুন ("ব্যাঙ" + "বিড়াল" + "ডিপলডকস")

  5. বিধি দ্বারা শ্রেণিবদ্ধকরণ (যেমন
    • "ID_pt" <= "ব্যাঙ"
    • "ID_pt"> "ব্যাঙ" এবং "ID_pt" <= ("বিড়াল" + "ব্যাঙ")
    • "ID_pt"> ("বিড়াল" + "ব্যাঙ") এবং "ID_pt" <= ("বিড়াল" + "ব্যাঙ" + "ডিপ্লোডোকস") এখানে চিত্র বর্ণনা লিখুন

এর জন্য ধন্যবাদ! আমার আজ এটি চেষ্টা করার সময় হবে না, তবে আপনি আউটপুট পছন্দসই পেয়েছেন তা বিবেচনা করে এটি একটি কার্যক্ষম সমাধানের মতো বলে মনে হচ্ছে।
রুসলান

1

আপনি এর জন্য জ্যামিতি জেনারেটর ব্যবহার করতে পারেন।

  1. প্রতীকটিতে 3 টি সাবলেয়ার যুক্ত করুন, প্রতিটি রঙ / বৈশিষ্ট্যের জন্য একটি one
  2. একটি অভিব্যক্তি তৈরি করুন যা প্রতিটি সাবলেয়ারের জন্য একটি বহুভুজ তৈরি করে।
  3. এখন শক্ত অংশটি গুণকের উপর ভিত্তি করে গুণমানের জন্য বর্গক্ষেত্র তৈরি করুন parts আমার ধারণা এটির জন্য একটি কাস্টম পাইথন এক্সপ্রেশন ফাংশন প্রয়োজন হবে।
  4. Ptionচ্ছিক, বহুভুজ এবং ব্যবধানের স্কেলিং নির্ধারণ করতে মানচিত্রের জন্য রেন্ডারিং ভেরিয়েবলগুলি ব্যবহার করুন।

দুঃখিত, আমি একটি সম্পূর্ণ উত্তরের জন্য এখনই ব্যস্ত, কিন্তু এই রেসিপি থেকে এখানে কিছু রান্না করার চেষ্টা করা খুব আকর্ষণীয় চ্যালেঞ্জ হবে। এর উপর ভিত্তি করে কেউ আমাদের একটি সুন্দর সমাধান সরবরাহ করতে পারে।
ম্যাথিয়াস কুহন

1

একটি সমাধান হতে পারে প্রতিটি বহুভুজের সেন্ট্রয়েডে পয়েন্ট সহ একটি পয়েন্ট স্তর তৈরি করা। সুতরাং উদাহরণস্বরূপ আপনি অ্যাডমন্টন 25 সুপারপোজড পয়েন্টের সেন্ট্রয়েডে পেয়েছেন: একটি ব্যাঙের বৈশিষ্ট্য সহ 5, বিড়ালের সাথে 20 পয়েন্ট এবং ডিপ্লোডোকস সহ 0 টি।

তারপরে গ্রিড হিসাবে প্লেসমেন্ট পদ্ধতি সেট সহ পয়েন্ট ডিসপ্লেসমেন্ট রেন্ডারার ব্যবহার করে আপনি প্রভাব পেতে সক্ষম হবেন।

অসুবিধাটি হচ্ছে পয়েন্ট স্তরটি তৈরি করা ...


0

স্তরের বৈশিষ্ট্যে পাওয়া পাই চার্টটি ব্যবহার করা খুব সহজ বিকল্প হতে পারে? বৈশিষ্ট্য এবং আকারগুলি একটি অভিব্যক্তি দ্বারা নির্ধারিত হতে পারে।

এখানে চিত্র বর্ণনা লিখুন


2
ওয়েল আমি ডেটা ম্যাপ করার বিকল্প উপায় সম্পর্কে জানি। প্রশ্নের বিন্দুটি হ'ল সেই ভিজ্যুয়ালাইজেশন কার্যপ্রবাহকে সম্ভব করে তোলা। পাই চার্টগুলি সত্যই কার্যকর হয় না কারণ আপনি গ্রিডের দিকে তাকালে আপনি ব্যক্তিদের গণনায় খুব ভাল ধারণা পেতে পারেন। পাই চার্ট থেকে প্রতিটি বহুভুজের নির্দিষ্ট স্বতন্ত্র গণনা অনুমান করার চেষ্টা করা প্রায় অসম্ভব।
রুসলান

0

বহুভুজ সেন্ট্রয়েড থেকে শুরু করে আপনি একটি সর্পিল পথে পয়েন্ট তৈরি করতে পারেন। নীচের স্ট্যাক ওভারফ্লো পোস্টে সামঞ্জস্যপূর্ণ পয়েন্টগুলি তৈরি করার জন্য পাইথন কোড রয়েছে তবে আমার অবসর সময় না থাকার কারণে আমি এই মুহুর্তে এটি পরীক্ষা করতে পারি না।


যথেষ্ট কাছাকাছি বলে মনে হচ্ছে, তবে প্রশ্নটিতে উল্লিখিত হিসাবে আমি এই কোডটি / সেখানে প্রস্তাবিত কোড পরিবর্তন করার পক্ষে যথেষ্ট দক্ষ নই।
রুসলান

আশা করি পর্যাপ্ত জ্ঞান ও সময় নিয়ে কেউ চিম
.ুকবে

0

তোমার ক্ষেত্রে,

  1. পুরো এওআইয়ের জন্য প্রদত্ত দূরত্ব ব্যবহার করে নিয়মিত দুরত্বের পয়েন্ট তৈরি করুন
  2. সমস্ত বহুভুজ (ইনপুট) এর জন্য সেন্ট্রয়েড পয়েন্ট তৈরি করুন।
  3. বিভাগগুলির মান '1' সহ স্থির দূরত্বের বাফার ব্যবহার করে সেই সেন্ট্রয়েড পয়েন্টগুলির জন্য বাফার তৈরি করুন । এটি বৃত্তের পরিবর্তে স্কোয়ার বাফার তৈরি করবে (আপনি যদি বাফার বহুভুজগুলি ঘুরতে চান তবে Qgis এ ঘূর্ণন সরঞ্জামটি ব্যবহার করুন)।
  4. ভেক্টর ব্যবহার করে বাফার বহুভুজের ভিতরে পয়েন্টের একটি নির্বাচন তৈরি করুন -> গবেষণা সরঞ্জাম -> অবস্থান অনুসারে নির্বাচন করুন (বহুভুজের নিয়মের মধ্যে পয়েন্ট)।
  5. নির্বাচন স্যুইচ করুন এবং বাফার বহুভুজগুলির বাইরে পয়েন্টগুলি মুছুন। সুতরাং এখন আপনি বহুভুজগুলির সেন্ট্রয়েডের চারপাশে নিয়মিতভাবে স্পেস পয়েন্ট পেয়েছেন।
  6. পুরো পয়েন্টগুলির জন্য সংখ্যাগরিষ্ঠ বৈশিষ্ট্য দিন এবং বাকী পয়েন্টগুলিকে ম্যানুয়ালি শ্রেণিবদ্ধ করা দরকার Quick অ্যাট্রিবিউটগুলি সহজে আপডেট করার জন্য কুইকমুলটিএট্রিবিউটএডিট সরঞ্জামটি ব্যবহার করুন।

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