GISarabia.org
PostGIS › الدليل الرسمي › 11. مرجع الرستر › 11.3. منشئات الرستر
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_AsRaster

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

الاسم

ST_AsRaster — تحوّل شكلًا هندسيًا (geometry) في PostGIS إلى رستر PostGIS.

المختصر

raster ST_AsRaster(geometry geom, raster ref, text pixeltype, double precision value=1, double precision nodataval=0, boolean touched=false);

raster ST_AsRaster(geometry geom, raster ref, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx, double precision gridy, text pixeltype, double precision value=1, double precision nodataval=0, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, double precision gridx=NULL, double precision gridy=NULL, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, text pixeltype, double precision value=1, double precision nodataval=0, double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, double precision scalex, double precision scaley, text[] pixeltype, double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, double precision gridx, double precision gridy, text pixeltype, double precision value=1, double precision nodataval=0, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, double precision gridx=NULL, double precision gridy=NULL, text[] pixeltype=ARRAY['8BUI'], double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, text pixeltype, double precision value=1, double precision nodataval=0, double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

raster ST_AsRaster(geometry geom, integer width, integer height, text[] pixeltype, double precision[] value=ARRAY[1], double precision[] nodataval=ARRAY[0], double precision upperleftx=NULL, double precision upperlefty=NULL, double precision skewx=0, double precision skewy=0, boolean touched=false);

الوصف

تحوّل شكلًا هندسيًا (geometry) في PostGIS إلى رستر PostGIS. توفّر الصيغ العديدة ثلاث مجموعات من الإمكانات لضبط محاذاة الرستر الناتج وحجم بكسله.

المجموعة الأولى، المكوّنة من الصيغتين الأوليين، تُنتج رسترًا له المحاذاة نفسها (scalex وscaley وgridx وgridy) ونوع البكسل وقيمة nodata نفسها التي للرستر المرجعي المُمرَّر. تمرّر هذا الرستر المرجعي عادةً بربط الجدول الذي يحتوي على الشكل الهندسي بالجدول الذي يحتوي على الرستر المرجعي.

المجموعة الثانية، المكوّنة من أربع صيغ، تتيح لك ضبط أبعاد الرستر بتقديم معاملات حجم البكسل (scalex & scaley وskewx & skewy). سيُضبط width & height للرستر الناتج ليلائم امتداد الشكل الهندسي. في معظم الحالات، يجب أن تحوّل الوسيطين العدديين الصحيحين scalex & scaley إلى double precision لكي يختار PostgreSQL الصيغة الصحيحة.

المجموعة الثالثة، المكوّنة من أربع صيغ، تتيح لك تثبيت أبعاد الرستر بتقديم أبعاده (width & height). وستُضبط معاملات حجم البكسل (scalex & scaley وskewx & skewy) للرستر الناتج لتلائم امتداد الشكل الهندسي.

تتيح لك الصيغتان الأوليان من كلٍّ من هاتين المجموعتين الأخيرتين تحديد المحاذاة بزاوية عشوائية من شبكة المحاذاة (gridx & gridy)، بينما تأخذ الصيغتان الأخيرتان الزاوية العلوية اليسرى (upperleftx & upperlefty).

تتيح كل مجموعة من الصيغ إنتاج رستر بنطاق واحد أو رستر بنطاقات متعددة. لإنتاج رستر متعدد النطاقات، يجب أن تقدّم مصفوفة من أنواع البكسل (pixeltype[])، ومصفوفة من القيم الأولية (value)، ومصفوفة من قيم nodata (nodataval). إذا لم تُقدَّم، تكون القيمة الافتراضية لـ pixeltype هي 8BUI، وللقيم 1، ولـ nodataval القيمة 0.

سيكون الرستر الناتج في النظام المرجعي المكاني نفسه للشكل الهندسي المصدر. والاستثناء الوحيد هو الصيغ التي تأخذ رسترًا مرجعيًا؛ ففي هذه الحالة يحصل الرستر الناتج على SRID نفسه للرستر المرجعي.

المعامل الاختياري touched قيمته الافتراضية false، ويقابل خيار التحويل إلى رستر ALL_TOUCHED في GDAL، الذي يحدد ما إذا كانت البكسلات التي تلامسها الخطوط أو المضلعات ستُحرَق (burned)، وليس فقط تلك الواقعة على مسار رسم الخط أو التي تقع نقطة مركزها داخل المضلع.

هذا مفيد بشكل خاص لإنتاج صور jpeg وpng للأشكال الهندسية مباشرة من قاعدة البيانات عند استخدامه مع ST_AsPNG وغيرها من دوال عائلة ST_AsGDALRaster.

متاحة منذ: 2.0.0 - تتطلب GDAL >= 1.6.0.

[ملاحظة]

غير قادرة بعدُ على رسم أنواع الأشكال الهندسية المعقدة مثل المنحنيات وTIN وPolyhedralSurface، لكن يُفترض أن تصبح قادرة على ذلك متى أصبحت GDAL قادرة عليه.

أمثلة: إخراج الأشكال الهندسية كملفات PNG

دائرة سوداء

-- this will output a black circle taking up 150 x 150 pixels --
SELECT ST_AsPNG(ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150));

مثال من نطاق عازل مرسوم باستخدام PostGIS وحده

-- the bands map to RGB bands - the value (118,154,118) - teal  --
SELECT ST_AsPNG(
    ST_AsRaster(
        ST_Buffer(
            ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'), 10,'join=bevel'),
            200,200,ARRAY['8BUI', '8BUI', '8BUI'], ARRAY[118,154,118], ARRAY[0,0,0]));