GISarabia.org
PostGIS › الدليل الرسمي › 11. مرجع الرستر › 11.12. معالجة الرستر: جبر الخرائط (Map Algebra)
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_Union

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_Union — تُعيد اتحاد مجموعة من بلاطات الرستر في رستر واحد يتكون من نطاق واحد أو أكثر.

المختصر

raster ST_Union(setof raster rast);

raster ST_Union(setof raster rast, unionarg[] unionargset);

raster ST_Union(setof raster rast, integer nband);

raster ST_Union(setof raster rast, text uniontype);

raster ST_Union(setof raster rast, integer nband, text uniontype);

الوصف

تُعيد اتحاد مجموعة من بلاطات الرستر في رستر واحد يتكون من نطاق واحد على الأقل. امتداد الرستر الناتج هو امتداد المجموعة كاملة. وفي حالة التقاطع، تتحدد القيمة الناتجة بـ uniontype الذي يكون أحد ما يلي: LAST (الافتراضي) أو FIRST أو MIN أو MAX أو COUNT أو SUM أو MEAN أو RANGE.

[ملاحظة]

لكي تُدمج الرسترات في اتحاد، يجب أن تكون جميعها ذات محاذاة واحدة. استخدم ST_SameAlignment وST_NotSameAlignmentReason لمزيد من التفاصيل والمساعدة. إحدى طرق إصلاح مشكلات المحاذاة هي استخدام ST_Resample واستخدام رستر المرجع نفسه للمحاذاة.

متاحة منذ: 2.0.0

حُسّنت في: 2.1.0 تحسين السرعة (تنفيذ كامل بلغة C).

متاحة منذ: 2.1.0 أُضيف الشكل ST_Union(rast, unionarg).

حُسّنت في: 2.1.0 يوحّد الشكل ST_Union(rast) (الشكل 1) جميع نطاقات جميع الرسترات المُدخلة. كانت الإصدارات السابقة من PostGIS تفترض النطاق الأول فقط.

حُسّنت في: 2.1.0 يوحّد الشكل ST_Union(rast, uniontype) (الشكل 4) جميع نطاقات جميع الرسترات المُدخلة.

أمثلة: إعادة تكوين بلاطة رستر أحادية النطاق مقسّمة إلى أجزاء

-- this creates a single band from first band of raster tiles
-- that form the original file system tile
SELECT filename, ST_Union(rast,1) As file_rast
FROM sometable WHERE filename IN('dem01', 'dem02') GROUP BY filename;
                    

أمثلة: إعادة رستر متعدد النطاقات يمثّل اتحاد البلاطات المتقاطعة مع شكل هندسي

-- this creates a multi band raster collecting all the tiles that intersect a line
-- Note: In 2.0, this would have just returned a single band raster
-- , new union works on all bands by default
-- this is equivalent to unionarg: ARRAY[ROW(1, 'LAST'), ROW(2, 'LAST'), ROW(3, 'LAST')]::unionarg[]
SELECT ST_Union(rast)
FROM aerials.boston
WHERE ST_Intersects(rast,  ST_GeomFromText('LINESTRING(230486 887771, 230500 88772)',26986) );
                    

أمثلة: إعادة رستر متعدد النطاقات يمثّل اتحاد البلاطات المتقاطعة مع شكل هندسي

نستخدم هنا الصيغة الأطول إذا أردنا مجموعة جزئية فقط من النطاقات أو أردنا تغيير ترتيب النطاقات

-- this creates a multi band raster collecting all the tiles that intersect a line
SELECT ST_Union(rast,ARRAY[ROW(2, 'LAST'), ROW(1, 'LAST'), ROW(3, 'LAST')]::unionarg[])
FROM aerials.boston
WHERE ST_Intersects(rast,  ST_GeomFromText('LINESTRING(230486 887771, 230500 88772)',26986) );