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

ST_ReclassExact

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

الاسم

ST_ReclassExact — تُنشئ رسترًا جديدًا يتكون من نطاقات مُعاد تصنيفها من الأصل، باستخدام ربط واحد لواحد (1:1) من القيم في النطاق الأصلي إلى قيم جديدة في النطاق الهدف.

المختصر

raster ST_ReclassExact(raster rast, double precision[] inputvalues, double precision[] outputvalues, integer bandnumber=1, text pixeltype=32BF, double precision nodatavalue=NULL);

الوصف

تُنشئ رسترًا جديدًا يتكون بتطبيق عملية إعادة تصنيف تعرّفها المصفوفتان inputvalues وoutputvalues. تُربط قيم البكسلات الموجودة في مصفوفة المُدخلات بالقيمة المقابلة في مصفوفة المُخرجات. وتُربط جميع قيم البكسلات الأخرى بـ nodatavalue.

نوع البكسل الناتج افتراضيًا هو float، لكن يمكن تحديده باستخدام المعامل pixeltype. إذا لم يُحدَّد bandnumber فيُفترض النطاق 1.

سيكون للرستر الجديد الإسناد الجغرافي والعرض والارتفاع نفسها للرستر الأصلي. وتُعاد النطاقات غير المعيّنة دون تغيير.

متاحة منذ: 3.6.0

مثال: أساسي

إنشاء رستر صغير وربط بكسلاته بقيم جديدة.

CREATE TABLE reclassexact (
        id integer,
        rast raster
);

--
-- Create a raster with just four pixels
-- [1  2]
-- [3  4]
--
INSERT INTO reclassexact (id, rast)
SELECT 1, ST_SetValues(
    ST_AddBand(
      ST_MakeEmptyRaster(
        2,    -- width in pixels
        2,    -- height in pixels
        0,    -- upper-left x-coordinate
        0,    -- upper-left y-coordinate
        1,    -- pixel size in x-direction
        -1,   -- pixel size in y-direction (negative for north-up)
        0,    -- skew in x-direction
        0,    -- skew in y-direction
        4326  -- SRID (e.g., WGS 84)
      ),
      '32BUI'::text, -- pixel type (e.g., '32BF' for float, '8BUI' for unsigned 8-bit int)
      0.0,           -- initial value for the band (e.g., 0.0 or a no-data value)
      -99            -- nodatavalue
    ),
    1, -- band number (usually 1 for single-band rasters)
    1, -- x origin for setting values (usually 1)
    1, -- y origin for setting values (usually 1)
    ARRAY[
      ARRAY[1, 2],
      ARRAY[3, 4]
    ]::double precision[][] -- 2D array of values
  );

-- Reclass the values to new values
-- and dump the values of the new raster for display
WITH rc AS (
  SELECT ST_ReclassExact(
    rast,                -- input raster
    ARRAY[4,3,2,1],      -- input map
    ARRAY[14,13,12,11],  -- output map
    1,                   -- band number to remap
    '32BUI'              -- output raster pixtype
    ) AS rast
  FROM reclassexact
  WHERE id = 1
  )
SELECT 'rce-1', (ST_DumpValues(rc.rast)).*
FROM rc;