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

ST_ColorMap

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

الاسم

ST_ColorMap — تُنشئ رسترًا جديدًا يضم حتى أربعة نطاقات من نوع 8BUI (تدرّج رمادي، RGB، RGBA) من الرستر المصدر ونطاق محدد. يُفترض النطاق 1 إذا لم يُحدَّد.

المختصر

raster ST_ColorMap(raster rast, integer nband=1, text colormap=grayscale, text method=INTERPOLATE);

raster ST_ColorMap(raster rast, text colormap, text method=INTERPOLATE);

الوصف

تطبّق colormap على النطاق nband من rast لينتج رستر جديد يتكون من حتى أربعة نطاقات 8BUI. يتحدد عدد نطاقات 8BUI في الرستر الجديد بعدد مكوّنات اللون المعرّفة في colormap.

إذا لم يُحدَّد nband، فيُفترض النطاق 1.

يمكن أن تكون colormap كلمة مفتاحية لخريطة ألوان معرّفة مسبقًا أو مجموعة من الأسطر تعرّف القيمة ومكوّنات اللون.

الكلمات المفتاحية الصالحة لخرائط الألوان colormap المعرّفة مسبقًا:

  • grayscale أو greyscale لرستر بنطاق 8BUI واحد بدرجات الرمادي.

  • pseudocolor لرستر بأربعة نطاقات 8BUI (RGBA) بألوان تتدرج من الأزرق إلى الأخضر إلى الأحمر.

  • fire لرستر بأربعة نطاقات 8BUI (RGBA) بألوان تتدرج من الأسود إلى الأحمر إلى الأصفر الباهت.

  • bluered لرستر بأربعة نطاقات 8BUI (RGBA) بألوان تتدرج من الأزرق إلى الأبيض الباهت إلى الأحمر.

يمكن للمستخدمين تمرير مجموعة من المُدخلات (واحد في كل سطر) إلى colormap لتحديد خرائط ألوان مخصصة. يتكون كل مُدخل عمومًا من خمس قيم: قيمة البكسل ومكوّنات الأحمر والأخضر والأزرق وألفا المقابلة (مكوّنات اللون بين 0 و255). يمكن استخدام قيم مئوية بدلًا من قيم البكسل، حيث 0% و100% هما القيمتان الدنيا والعليا الموجودتان في نطاق الرستر. يمكن الفصل بين القيم بفواصل (',') أو علامات جدولة أو نقطتين (':') و/أو مسافات. يمكن ضبط قيمة البكسل على nv أو null أو nodata لقيمة NODATA. يرد مثال أدناه.

5 0 0 0 255
4 100:50 55 255
1 150,100 150 255
0% 255 255 255 255
nv 0 0 0 0
                    

تشبه صياغة colormap صياغة وضع color-relief في أداة gdaldem من GDAL.

الكلمات المفتاحية الصالحة لـ method:

  • INTERPOLATE لاستخدام الاستيفاء الخطي لمزج الألوان بسلاسة بين قيم البكسلات المعطاة

  • EXACT للمطابقة الصارمة لقيم البكسلات الموجودة في خريطة الألوان فقط. البكسلات التي لا تطابق قيمتها أي مُدخل في خريطة الألوان تُضبط على 0 0 0 0 (RGBA)

  • NEAREST لاستخدام مُدخل خريطة الألوان الذي تكون قيمته الأقرب إلى قيمة البكسل

[ملاحظة]

من المراجع الممتازة لخرائط الألوان ColorBrewer.

[تنبيه]

لن تكون للنطاقات الناتجة في الرستر الجديد قيمة NODATA مضبوطة. استخدم ST_SetBandNoDataValue لضبط قيمة NODATA إذا لزم الأمر.

متاحة منذ: 2.1.0

أمثلة

هذا جدول تجريبي للعب به

-- setup test raster table --
DROP TABLE IF EXISTS funky_shapes;
CREATE TABLE funky_shapes(rast raster);

INSERT INTO funky_shapes(rast)
WITH ref AS (
    SELECT ST_MakeEmptyRaster( 200, 200, 0, 200, 1, -1, 0, 0) AS rast
)
SELECT
    ST_Union(rast)
FROM (
    SELECT
        ST_AsRaster(
            ST_Rotate(
                ST_Buffer(
                    ST_GeomFromText('LINESTRING(0 2,50 50,150 150,125 50)'),
                    i*2
                ),
                pi() * i * 0.125, ST_Point(50,50)
            ),
            ref.rast, '8BUI'::text, i * 5
        ) AS rast
    FROM ref
    CROSS JOIN generate_series(1, 10, 3) AS i
) AS shapes;
                    
SELECT
    ST_NumBands(rast) As n_orig,
    ST_NumBands(ST_ColorMap(rast,1, 'greyscale')) As ngrey,
    ST_NumBands(ST_ColorMap(rast,1, 'pseudocolor')) As npseudo,
    ST_NumBands(ST_ColorMap(rast,1, 'fire')) As nfire,
    ST_NumBands(ST_ColorMap(rast,1, 'bluered')) As nbluered,
    ST_NumBands(ST_ColorMap(rast,1, '
100% 255   0   0
 80% 160   0   0
 50% 130   0   0
 30%  30   0   0
 20%  60   0   0
  0%   0   0   0
  nv 255 255 255
    ')) As nred
FROM funky_shapes;
                    
n_orig | ngrey | npseudo | nfire | nbluered | nred
--------+-------+---------+-------+----------+------
      1 |     1 |       4 |     4 |        4 |    3
                    

أمثلة: مقارنة مظاهر خرائط الألوان المختلفة باستخدام ST_AsPNG

SELECT
    ST_AsPNG(rast) As orig_png,
    ST_AsPNG(ST_ColorMap(rast,1,'greyscale')) As grey_png,
    ST_AsPNG(ST_ColorMap(rast,1, 'pseudocolor')) As pseudo_png,
    ST_AsPNG(ST_ColorMap(rast,1, 'nfire')) As fire_png,
    ST_AsPNG(ST_ColorMap(rast,1, 'bluered')) As bluered_png,
    ST_AsPNG(ST_ColorMap(rast,1, '
100% 255   0   0
 80% 160   0   0
 50% 130   0   0
 30%  30   0   0
 20%  60   0   0
  0%   0   0   0
  nv 255 255 255
    ')) As red_png
FROM funky_shapes;
                    

orig_png

grey_png

pseudo_png

fire_png

bluered_png

red_png