নগরীর পাড়াগুলি বলুন, আমার কাছে বহু অঞ্চলগুলির একটি বৃহত অঞ্চল উপস্থাপন করার একটি সেট রয়েছে। আমি তাদের মধ্যে বৃহত ওভারল্যাপিং অঞ্চলগুলি সনাক্ত করতে চাই।
তবে একটি সমস্যা আছে: কখনও কখনও এই বহুভুজগুলি তাদের ঘেরগুলির সাথে ওভারল্যাপ হয়ে যায় (কারণ এগুলি সামান্য নির্ভুলতার সাথে আঁকা হয়েছিল)। এটি এমন দীর্ঘ এবং সংকীর্ণ ওভারল্যাপগুলি উত্পন্ন করবে যা আমি যত্ন করি না।
তবে অন্য সময় শক্তিশালী বহুভুজগুলির বড় আকারের ওভারল্যাপগুলি আসবে, যার অর্থ এমন বৃহত অঞ্চল যেখানে কোনও প্রতিবেশীর বহুভুজ অন্যটির ওভারল্যাপ হয়। আমি কেবল এইগুলি নির্বাচন করতে চাই।
কেবল ওভারল্যাপগুলির নীচের চিত্রটি দেখুন। ভাবুন আমি নীচের বাম কোণে কেবল নীল বহুভুজ নির্বাচন করতে চেয়েছি।
আমি অঞ্চলগুলি দেখতে পেলাম, তবে কখনও কখনও সংকীর্ণগুলি এত দীর্ঘ হয় যে তারা নীল বহুভুজের মতো বৃহত অঞ্চলগুলি ধারণ করে। আমি অঞ্চল / ঘেরের একটি অনুপাত করার চেষ্টা করেছি, তবে এটি মিশ্র ফলাফলও পেয়েছে।
আমি এমনকি ব্যবহার করার চেষ্টা করেছি ST_MinimumClearance
, তবে কখনও কখনও বড় অঞ্চলগুলির সাথে এটি একটি সংকীর্ণ অংশ বা দুটি খুব কাছের কোণে সংযুক্ত থাকে।
অন্যান্য পদ্ধতির কোনও ধারণা?
নীচে @ সিরিল এবং @ এফগ্রিগের পরামর্শ অনুসারে, আমার জন্য যা সবচেয়ে ভাল কাজ করেছে তা হল একটি নেতিবাচক বাফার ব্যবহার করা।
আমি এরকম কিছু ব্যবহার করেছি:
ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area
আমার ক্ষেত্রে, ইউনিটগুলি মিটার ছিল, সুতরাং 10 মিটার নেতিবাচক বাফার।
সংকীর্ণ বহুভুজগুলির জন্য, এই অঞ্চলটি শূন্য ফিরে এসেছে (এছাড়াও, জ্যামিতিটি খালি হবে)। তারপরে আমি এই কলামটি সংকীর্ণ বহুভুজগুলি ফিল্টার করার জন্য ব্যবহার করেছি।