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

ST_MapAlgebra (expression version)

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

الاسم

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

    1. [rast] - قيمة البكسل محل الاهتمام

    2. [rast.val] - قيمة البكسل محل الاهتمام

    3. [rast.x] - عمود البكسل محل الاهتمام (يبدأ العدّ من 1)

    4. [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

يتحكم في امتداد الرستر الناتج

  1. INTERSECTION - امتداد الرستر الجديد هو تقاطع الرسترين. وهذا هو الافتراضي.

  2. UNION - امتداد الرستر الجديد هو اتحاد الرسترين.

  3. FIRST - امتداد الرستر الجديد هو امتداد الرستر الأول نفسه.

  4. SECOND - امتداد الرستر الجديد هو امتداد الرستر الثاني نفسه.

nodata1expr

تعبير جبري يتضمن rast2 فقط أو ثابت، يحدد ما يُعاد عندما تكون بكسلات rast1 ذات قيم nodata وتكون لبكسلات rast2 المقابلة مكانيًا قيم.

nodata2expr

تعبير جبري يتضمن rast1 فقط أو ثابت، يحدد ما يُعاد عندما تكون بكسلات rast2 ذات قيم nodata وتكون لبكسلات rast1 المقابلة مكانيًا قيم.

nodatanodataval

ثابت عددي يُعاد عندما تكون بكسلات rast1 وrast2 المتقابلة مكانيًا كلتاهما ذات قيم nodata.

  • الكلمات المفتاحية المسموح بها في expression وnodata1expr وnodata2expr

    1. [rast1] - قيمة البكسل محل الاهتمام من rast1

    2. [rast1.val] - قيمة البكسل محل الاهتمام من rast1

    3. [rast1.x] - عمود البكسل محل الاهتمام من rast1 (يبدأ العدّ من 1)

    4. [rast1.y] - صف البكسل محل الاهتمام من rast1 (يبدأ العدّ من 1)

    5. [rast2] - قيمة البكسل محل الاهتمام من rast2

    6. [rast2.val] - قيمة البكسل محل الاهتمام من rast2

    7. [rast2.x] - عمود البكسل محل الاهتمام من rast2 (يبدأ العدّ من 1)

    8. [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;