الاسم
ST_MapAlgebra (expression version) — نسخة التعبير - تُعيد رسترًا بنطاق واحد انطلاقًا من رستر مُدخل واحد أو اثنين وفهارس نطاقات وتعبير SQL واحد أو أكثر يحدده المستخدم.
المختصر
raster ST_MapAlgebra(raster rast, integer nband, text pixeltype, text expression, double precision nodataval=NULL);
raster ST_MapAlgebra(raster rast, text pixeltype, text expression, double precision nodataval=NULL);
raster ST_MapAlgebra(raster rast1, integer nband1, raster rast2, integer nband2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL);
raster ST_MapAlgebra(raster rast1, raster rast2, text expression, text pixeltype=NULL, text extenttype=INTERSECTION, text nodata1expr=NULL, text nodata2expr=NULL, double precision nodatanodataval=NULL);
الوصف
نسخة التعبير - تُعيد رسترًا بنطاق واحد انطلاقًا من رستر مُدخل واحد أو اثنين وفهارس نطاقات وتعبير SQL واحد أو أكثر يحدده المستخدم.
متاحة منذ: 2.1.0
الوصف: الشكلان 1 و2 (رستر واحد)
تُنشئ رسترًا جديدًا بنطاق واحد يتكون بتطبيق عملية جبرية صالحة في PostgreSQL يعرّفها expression على الرستر المُدخل (rast). إذا لم يُقدَّم nband، فيُفترض النطاق 1. سيكون للرستر الجديد الإسناد الجغرافي والعرض والارتفاع نفسها للرستر الأصلي، لكن سيكون له نطاق واحد فقط.
إذا مُرِّر pixeltype، فسيكون للرستر الجديد نطاق من ذلك النوع. وإذا مُرِّر pixeltype بقيمة NULL، فسيكون لنطاق الرستر الجديد نوع البكسل نفسه لنطاق rast المُدخل.
-
الكلمات المفتاحية المسموح بها في
expression-
[rast]- قيمة البكسل محل الاهتمام -
[rast.val]- قيمة البكسل محل الاهتمام -
[rast.x]- عمود البكسل محل الاهتمام (يبدأ العدّ من 1) -
[rast.y]- صف البكسل محل الاهتمام (يبدأ العدّ من 1)
-
الوصف: الشكلان 3 و4 (رستران)
تُنشئ رسترًا جديدًا بنطاق واحد يتكون بتطبيق عملية جبرية صالحة في PostgreSQL على النطاقين اللذين يعرّفهما expression في نطاقي الرسترين المُدخلين rast1 و(rast2). إذا لم يُحدَّد band1 وband2 فيُفترض النطاق 1. سيُحاذى الرستر الناتج (المقياس والانحراف وأركان البكسلات) على الشبكة التي يعرّفها الرستر الأول. وسيكون للرستر الناتج الامتداد الذي يعرّفه المعامل extenttype.
-
expression -
تعبير جبري في PostgreSQL يتضمن الرسترين ودوال/عوامل معرّفة في PostgreSQL، يحدد قيمة البكسل عند تقاطع البكسلات. مثلًا (([rast1] + [rast2])/2.0)::integer
-
pixeltype -
نوع البكسل الناتج للرستر المُخرَج. يجب أن يكون أحد الأنواع المدرجة في ST_BandPixelType أو أن يُغفل أو يُضبط على NULL. إذا لم يُمرَّر أو ضُبط على NULL، فسيكون افتراضيًا نوع البكسل للرستر الأول.
-
extenttype -
يتحكم في امتداد الرستر الناتج
-
INTERSECTION- امتداد الرستر الجديد هو تقاطع الرسترين. وهذا هو الافتراضي. -
UNION- امتداد الرستر الجديد هو اتحاد الرسترين. -
FIRST- امتداد الرستر الجديد هو امتداد الرستر الأول نفسه. -
SECOND- امتداد الرستر الجديد هو امتداد الرستر الثاني نفسه.
-
-
nodata1expr -
تعبير جبري يتضمن
rast2فقط أو ثابت، يحدد ما يُعاد عندما تكون بكسلاتrast1ذات قيم nodata وتكون لبكسلات rast2 المقابلة مكانيًا قيم. -
nodata2expr -
تعبير جبري يتضمن
rast1فقط أو ثابت، يحدد ما يُعاد عندما تكون بكسلاتrast2ذات قيم nodata وتكون لبكسلات rast1 المقابلة مكانيًا قيم. -
nodatanodataval -
ثابت عددي يُعاد عندما تكون بكسلات rast1 وrast2 المتقابلة مكانيًا كلتاهما ذات قيم nodata.
-
الكلمات المفتاحية المسموح بها في
expressionوnodata1exprوnodata2expr-
[rast1]- قيمة البكسل محل الاهتمام منrast1 -
[rast1.val]- قيمة البكسل محل الاهتمام منrast1 -
[rast1.x]- عمود البكسل محل الاهتمام منrast1(يبدأ العدّ من 1) -
[rast1.y]- صف البكسل محل الاهتمام منrast1(يبدأ العدّ من 1) -
[rast2]- قيمة البكسل محل الاهتمام منrast2 -
[rast2.val]- قيمة البكسل محل الاهتمام منrast2 -
[rast2.x]- عمود البكسل محل الاهتمام منrast2(يبدأ العدّ من 1) -
[rast2.y]- صف البكسل محل الاهتمام منrast2(يبدأ العدّ من 1)
-
أمثلة: الشكلان 1 و2
WITH foo AS (
SELECT ST_AddBand(ST_MakeEmptyRaster(10, 10, 0, 0, 1, 1, 0, 0, 0), '32BF'::text, 1, -1) AS rast
)
SELECT
ST_MapAlgebra(rast, 1, NULL, 'ceil([rast]*[rast.x]/[rast.y]+[rast.val])')
FROM foo;
أمثلة: الشكلان 3 و4
WITH foo AS (
SELECT 1 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 0, 1, -1, 0, 0, 0), 1, '16BUI', 1, 0), 2, '8BUI', 10, 0), 3, '32BUI'::text, 100, 0) AS rast UNION ALL
SELECT 2 AS rid, ST_AddBand(ST_AddBand(ST_AddBand(ST_MakeEmptyRaster(2, 2, 0, 1, 1, -1, 0, 0, 0), 1, '16BUI', 2, 0), 2, '8BUI', 20, 0), 3, '32BUI'::text, 300, 0) AS rast
)
SELECT
ST_MapAlgebra(
t1.rast, 2,
t2.rast, 1,
'([rast2] + [rast1.val]) / 2'
) AS rast
FROM foo t1
CROSS JOIN foo t2
WHERE t1.rid = 1
AND t2.rid = 2;
انظر أيضًا
rastbandarg, ST_Union, ST_MapAlgebra (callback function version)