আমার কাছে দুটি টেবিলে দুটি সেট বহুভুজ রয়েছে। সেটগুলি একে অপরকে ওভারল্যাপ করে। সেট এ এর প্রতিটি বহুভুজের জন্য আমি সেট বি তে বহুভুজটির আইডি পেতে চাই যা এটি সবচেয়ে বেশি ওভারল্যাপ করে। আমি পোস্টগ্রিজ এক্সটেনশন সহ পোস্টগ্রিজ এসকিউএল ব্যবহার করছি।
এসকিউএল সম্পর্কে আমি কেবল যথেষ্ট জানি যে আপনি কেবল সত্য / মিথ্যা শর্তের ভিত্তিতে যোগদান করতে পারেন। সুতরাং এটি কাজ করবে না:
SELECT
a.id as a_id,
b.id as b_id,
FROM
a
JOIN
b
ON
max(ST_Area(ST_Intersection(a.geom, b.geom)))
কারণ সর্বোচ্চ () অন ক্লজে থাকতে পারে না।
ST_Intersects()
সত্য / মিথ্যা পরীক্ষা, তাই আমি এতে যোগ দিতে পারতাম , তবে সেট এ-তে বহুভুজগুলি প্রায়শই বি বিতে একাধিক বহুভুজ দিয়ে ওভারল্যাপ হয়ে যায় এবং কোনটি সবচেয়ে বেশি ওভারল্যাপ করে তা আমার জানতে হবে । ST_Intersects সম্ভবত ওভারল্যাপের পরিমাণ নির্বিশেষে এটি কেবল প্রথম ওভারল্যাপিং আইডিটি ফিরিয়ে আনবে।
এটি করণে সক্ষম হওয়া উচিত বলে মনে হচ্ছে তবে এটি আমার বাইরে। কোন চিন্তা?
DISTINCT ON
আমার কাছে নতুন - এই প্রসঙ্গে খুব সুবিধাজনক।