मेरे पास दो तालिकाओं में दो सेट बहुभुज हैं। सेट एक दूसरे को ओवरलैप करते हैं। सेट ए में प्रत्येक बहुभुज के लिए, मैं सेट बी में बहुभुज की आईडी प्राप्त करना चाहूंगा कि यह सबसे अधिक ओवरलैप करता है। मैं PostgreSQL का उपयोग PostGIS एक्सटेंशन के साथ कर रहा हूं।
मैं एसक्यूएल के बारे में बस इतना जानना चाहता हूं कि आप केवल सही / गलत स्थितियों के आधार पर जुड़ सकते हैं। तो यह काम नहीं करेगा:
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
मेरे लिए नया है - इस संदर्भ में बहुत उपयोगी है।