কিউজিআইএস সরলকরণ জ্যামিতি সরঞ্জাম ব্যবহার করে সংলগ্ন বহুভুজকে সরলকরণ


10

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

আমি কিউজিআইএস-এ "সরলকরণ জ্যামিতিগুলি" সরঞ্জামটি ব্যবহার করে চেষ্টা করেছি। আমি আমার শেফিলের একটি খুব ছোট অংশে এটি চেষ্টা করেছি এবং ফলাফলগুলি নিয়ে আমি খুশি তবে ছোট সমস্যা রয়েছে যা আমি কীভাবে সমাধান করতে জানি না। সমস্যাটি দেখানোর জন্য আমি চিত্রটি সংযুক্ত করেছি।

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

আমি কীভাবে এই শেফিলটিকে সরল করব এবং বহুভুজগুলির মধ্যে সাধারণ সীমানাকে একক লাইন হিসাবে রেখেছি এবং সরলকরণের পরে তৈরি করা অঞ্চলগুলি মুছে ফেলব?

কিউজিআইএস-এ সরলিকৃত বহুভুজ

অতিরিক্ত তথ্য:

প্রস্তাবিত নির্দেশাবলী অনুসরণ করার পরে

  1. বহুভুজগুলিকে লাইনে রূপান্তর করুন
  2. সরল রেখা
  3. বহুভুজগুলিতে লাইনগুলি রূপান্তর করুন

আমি নিম্নলিখিত ফলাফল পেতে। এটি আগের তুলনায় কিছুটা ভাল তবে এখনও আমি মূল বহুভুজের বাইরে অঞ্চলগুলি পেয়েছি (নীচের ছবিতে সাদা অঞ্চলগুলি দেখুন)।

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

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

আমি এখনও বহুভুজ প্রক্রিয়াটি সহজ করার চেষ্টা করছি। আমি এই পোস্টে প্রস্তাবিত নির্দেশাবলী অনুসরণ করেছি এবং যখন আমি ভেবেছিলাম যে আমি গ্রহণযোগ্য ফলাফল পেয়েছি তখন আরও একটি সমস্যা হাজির। ফলাফলের চিত্রগুলি দিয়ে আমি কী করেছি তার সংক্ষিপ্তসার নীচে দেওয়া হল। QGIS এ প্রোসেসিং টুলবক্স ব্যবহার করে সমস্ত পদক্ষেপগুলি সম্পাদন করা হয়েছে।

  1. প্রথম, আমি বহুভুজগুলিকে লাইনে রূপান্তর করেছি
  2. দ্বিতীয়ত, আমি বিরতি বিকল্পের সাথে v.clean ব্যবহার করে লাইনগুলি পরিষ্কার করেছি। এর ফলস্বরূপ ক্লিন্ড ভেক্টর লেয়ার এবং এরর লেয়ার তৈরি হয়েছিল। ত্রুটি স্তর (সরবরাহিত চিত্রের সবুজ বিন্দু) প্রতিটি লাইন ছেদটিতে সবুজ বিন্দু রয়েছে। আমি এর অর্থ কি জানি না।
  3. তৃতীয়, আমি "সিম্পলাইফ জিওমেট্রি" সরঞ্জাম ব্যবহার করে লাইনগুলি সরলীকরণ করেছি (চিত্রগুলিতে লাল রেখার ফলস্বরূপ)। সরলীকৃত লাল রেখাগুলি এবং আসল কমলা রেখার তুলনা করছি ফলাফলের সাথে আমি খুশি।
  4. চতুর্থত, আমি "প্রসেসিং" তে "বহুভুক্ত" সরঞ্জামটি ব্যবহার করে লাইনগুলি বহুভুজগুলিতে ফিরে রূপান্তর করতে চেয়েছিলাম এবং ফলাফল পেয়েছি যা আমি প্রত্যাশা করি না (শেড গা dark় জলপাই রঙের বহুভুজযুক্ত দ্বিতীয় চিত্র)। এটি বহুভোজনযুক্ত সংযুক্ত ত্রুটি স্তর ছেদ করার মতো দেখায় এবং সরলীকৃত রেখাগুলি উপেক্ষা করে বহুভুজগুলির সম্পূর্ণ আলাদা সেট তৈরি করে।

এখানে কি ভুল হয়েছে কেউ ব্যাখ্যা করতে পারেন?

কেন সরলীকৃত রেখাগুলি সরলীকৃত বহুভুতে সঠিকভাবে রূপান্তর করা হয়নি?

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

প্রক্রিয়াটির শেষ দুটি ধাপের ফলাফল সহ দুটি চিত্র এখানে রয়েছে:

সরলিকৃত লাইন এবং মূল লাইন

প্লাইগোনাইজড সরলীকৃত রেখার ফলাফল


পোলিগোনাইজার ওয়েবপৃষ্ঠায় প্লটিনস.কিগিস.আর.জিগিজ.আর প্লাগইনস / পলিগোনাইজারে @ নোপনটন এটি বলে যে এটি "ছেদ করা রেখা থেকে বহুভুজ তৈরি করে"। এটি প্রস্তাব দেয় যে যখনই কোনও লাইন ছেদ থাকবে তখন বহুভুজ তৈরি করা হবে (তবে আমার ব্যাখ্যাটি ভুল হতে পারে)। আমার যা প্রয়োজন তা হল "সরলকরণের জ্যামিতি" সরঞ্জামটি ব্যবহার করার সময় যে শূন্যস্থানগুলি তৈরি হয়েছিল তা থেকে মুক্তি পাওয়া এবং যদি পলিগোনাইজার এটি করতে পারে তবে আমি খুব খারাপ।
ডেভিড

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

টপোলজি সংরক্ষণের একটি ভাল উপায় @radouxju দ্বারা প্রস্তাবিত ওয়ার্কফ্লোতে অন্তর্ভুক্ত রয়েছে (সেন্ট্রয়েড গণনা বাদে যা প্রয়োজনীয় নয়) এবং আমার উত্তরটিতে প্রসেসিং মডেলটিতে উপস্থাপিত হয়। বিকল্পভাবে, আমি মনে করি যে গ্রাস v.generalizeআরেকটি দুর্দান্ত বিকল্প। আশাকরি এটা সাহায্য করবে.
আন্তোনিও ফ্যালকিয়ানো

সম্পর্কিত প্রশ্ন: gis.stackexchange.com/questions/20799/…
simon04

উত্তর:


7

ডিফল্ট মানগুলি ব্যবহার করে প্রসেসিং টুলবক্স থেকে জিআরএসএস v.generalize ব্যবহার করে আমি বেশ ভাল ফলাফল পেয়েছি:

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

কিছু লাইন ছোঁয়া থাকে।


@ কান্তনের পরামর্শ অনুসারে ভি.এন.ই.জি.আর.এন.আর.এর স্নাপ সহনশীলতা ( ০.০০০০০০১ ) থেকে 0.00001 এ সেট করার পরে এই পদ্ধতিতে ভাল সাফল্য ছিল ।
সেমি 1

4

আমি কিজিআইএস ২.১ with নিয়ে এই সমস্যায় পড়েছি, তবে @ আন্ড্রেজ-এর মতো টপোলজিক্যালি সঠিক ফলাফল দেওয়ার জন্য গ্রাস পাওয়া যায়নি।

V.generalize.simplify সরঞ্জামটির উন্নত পরামিতিগুলিতে v.in.ogr স্ন্যাপ সহনশীলতা পরিবর্তন করা একটি দুর্দান্ত কাজ । ডিফল্ট হ'ল -1, যা গ্রাসে স্ন্যাপিং প্রতিরোধ করে।

এখানে একটি ছোট মান স্থাপন করে (1e-05 মি এর মতো), স্ন্যাপিং সক্ষম করা হয় এবং গ্রাস বহুভুজগুলির ভাগ করা সীমানাগুলি সনাক্ত করে। সরলীকরণটি তখন গর্ত ছাড়াই একটি টপোলজিক্যালি সঠিক স্তর দেয়।

দ্রষ্টব্য: উচ্চ মানগুলিতে স্ন্যাপ সহনশীলতা সেট করে, বহুভুজগুলিকে পরিবর্তন করা এমনকি সম্ভব যাতে আপনি চাইলে খুব পাতলা মুছতে পারেন। Rmarea ব্যবহার করে v.clean দিয়ে সেই অপারেশনটি অনুসরণ করুন এবং ছোট বাম অংশগুলি মুছতে যথেষ্ট বড় একটি চৌম্বকটি ব্যবহার করুন এবং সেখানে আপনি কাজ শেষ করেছেন!


3

প্রথমে আপনার বহুভুজকে লাইনে রূপান্তর করুন

আপনার টপোলজি পরিষ্কার করতে v.clean ব্যবহার করুন ("ব্রেক" বিকল্পের সাহায্যে)

তারপরে আপনি আপনার লাইনগুলি সরল করুন

অবশেষে আপনি আপনার লাইনগুলি বহুভুজগুলিতে ফিরিয়ে দিন ((বহুভুজ ব্যবহার করে)

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


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

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

@David। আমি মনে করি আপনার সমস্যাটি বহুভুজের লাইন 3 ধাপে থাকতে পারে। প্রসেসিং সরঞ্জামদণ্ডে "Polygonize" নামে একটি সরঞ্জাম আছে এবং আমি এটি চেষ্টা করব। আমি মনে করি এটি ইনস্টল করার জন্য শ্যাপলি এবং নম্পি প্যাকেজগুলি এখনও দরকার। এটি বলেছে, কিউজিআইএস-মাস্টারটিতে আমার জন্য কাজ করার জন্য "পলিগোনাইজ" আমি পেতে পারি না ঠিক এই মুহুর্তে। এন।
নপটন

2

আপনি প্রসেসিং (প্রাক্তন SEXTANTE) মডেলটির সাহায্যে সমস্যাটি সমাধান করতে পারেন:

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

স্ক্রিপ্ট সংস্করণ:

##Simplify polygons=name
##vectorlayer_input=vector
##number_tolerance=number 0.0
##output_layer_alg3=output vector
outputs_0=Processing.runalg("qgis:polygonstolines", vectorlayer_input, None)
outputs_1=Processing.runalg("qgis:simplifygeometries", outputs_0['OUTPUT'], number_tolerance, None)
outputs_2=Processing.runalg("qgis:linestopolygons", outputs_1['OUTPUT'], None)
outputs_3=Processing.runalg("qgis:joinattributestable", outputs_2['OUTPUT'], vectorlayer_input, ID, ID, output_layer_alg3)

নোট: শুধুমাত্র বাধ্যতা যে সাধারণ ক্ষেত্র হতে হয়েছে হয় IDমধ্যে Join attributes table, কারণ আউটপুট মাত্র ক্ষেত্র Lines to polygons। এজন্য সাধারণ ক্ষেত্রটি মডেলের কোনও পরিবর্তনশীল ইনপুট নয়। সুতরাং IDইনপুট বহুভুজ স্তরতে একটি ক্ষেত্র উপলব্ধ থাকতে হবে।

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