İki tabloda iki set çokgen var. Setler üst üste biniyor. A kümesindeki her çokgen için, B kümesindeki çokgenin kimliğini en çok örtüştüğü şekilde almak istiyorum. PostGIS uzantılı PostgreSQL kullanıyorum.
Sadece doğru / yanlış koşullara göre katılabileceğinizi bilmek için SQL hakkında yeterli bilgim var. Yani bu işe yaramaz:
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)))
çünkü max () ON yan tümcesinde olamaz.
ST_Intersects()
doğru / yanlış bir testtir, bu yüzden buna katılabilirim, ancak A kümesindeki çokgenler genellikle B kümesindeki birden çok çokgenle çakışır ve hangisinin en çok çakıştığını bilmem gerekir . ST_Intersects, örtüşmenin boyutuna bakılmaksızın karşılaştığı ilk çakışan kimliği muhtemelen geri döndürür.
Bu, yapılabilmesi gerektiği gibi görünüyor, ama benim dışımda. Düşüncesi olan var mı?
DISTINCT ON
benim için yeni - bu bağlamda çok kullanışlı.