أكثر

طلب postGIS SQL مع تجميع ST_Union ()

طلب postGIS SQL مع تجميع ST_Union ()


لدي جدول postGIS يبدو كالتالي:

معرف | قيمة | الهندسة (مضلع متعدد) 1 10 ... 1 20 ... 1 30 ... 2 10 ... 2 20 ... 2 30 ...

ما أرغب في فعله هو إنشاء عمود هندسة جديد يحتوي على Multipolygon وهو اتحاد جميع المضلعات الأخرى للصفوف التي لها نفس المعرف وقيمة أصغر أو متساوية.

وبالتالي :

  • الصف الأول "new_geometry" سيكون مطابقًا لـ "geometry".
  • سيكون الصف الثاني "new_geometry" هو اتحاد "الهندسة" للصفين الأول والثاني.
  • الصف الثالث: اتحاد الصفوف 1 ، 2 ، 3
  • يساوي الصف 4
  • إلخ

لقد كتبت شيئًا كهذا:

حدد t.id، t.val، St_Union (t.geometry) من (SELECT cs.id، cs.value as val، cs.geometry from mytable cs INNER JOIN (SELECT DISTINCT value from myTable) v ON (v.value < = cs.value)) AS t تجميع حسب t.val، t.id؛

لكن عمود الهندسة الذي أحصل عليه لم يتم تجميعه ، فهو يساوي عمود الهندسة الأصلي. ومع ذلك ، يعمل التجميع إذا "جمعت حسب" فقط بمعيار واحد.


جرب استخدام ST_Union كدالة نافذة متراكمة:

حدد معرّف ، قيمة ، ST_Union (هندسة) OVER (PARTITION BY ID ORDER BY value) AS geom FROM mytable ؛

شاهد الفيديو: Топ ошибок со стороны разработки при работе с PostgreSQL. Алексей Лесовский Data Egret