الاسم
ST_AsGDALRaster — تُعيد بلاطة الرستر بصيغة رستر GDAL المحددة. صيغ الرستر هي إحدى الصيغ التي تدعمها المكتبة المُترجَمة لديك. استخدم ST_GDALDrivers() للحصول على قائمة بالصيغ التي تدعمها مكتبتك.
المختصر
bytea ST_AsGDALRaster(raster rast, text format, text[] options=NULL, integer srid=sameassource);
الوصف
تُعيد بلاطة الرستر بالصيغة المحددة. الوسائط مفصّلة أدناه:
-
formatالصيغة المطلوب الإخراج بها. يعتمد هذا على المشغّلات (drivers) المُترجَمة في مكتبة libgdal لديك. المتاح عمومًا هو 'JPEG' و'GTIff' و'PNG'. استخدم ST_GDALDrivers للحصول على قائمة بالصيغ التي تدعمها مكتبتك. -
optionsمصفوفة نصية من خيارات GDAL. تعتمد الخيارات الصالحة على الصيغة. راجع خيارات صيغ رستر GDAL لمزيد من التفاصيل. -
srsقيمة proj4text أو srtext (من spatial_ref_sys) المراد تضمينها في الصورة
متاحة منذ: 2.0.0 - تتطلب GDAL >= 1.6.0.
مثال على إخراج JPEG، عدة بلاطات كرستر واحد
SELECT ST_AsGDALRaster(ST_Union(rast), 'JPEG', ARRAY['QUALITY=50']) As rastjpg FROM dummy_rast WHERE rast && ST_MakeEnvelope(10, 10, 11, 11);
استخدام دعم الكائنات الكبيرة (Large Object) في PostgreSQL لتصدير الرستر
إحدى طرق تصدير الرستر إلى صيغة أخرى هي استخدام دوال تصدير الكائنات الكبيرة في PostgreSQL. سنكرر المثال السابق مع التصدير أيضًا. لاحظ أنك ستحتاج لذلك إلى صلاحية المستخدم الخارق (super user) على قاعدة البيانات لأنه يستخدم دوال lo من جهة الخادم. كما سيُصدَّر إلى مسار على شبكة الخادم. إذا كنت تحتاج إلى التصدير محليًا، فاستخدم دوال lo_ المكافئة في psql التي تُصدِّر إلى نظام الملفات المحلي بدلًا من نظام ملفات الخادم.
DROP TABLE IF EXISTS tmp_out ;
CREATE TABLE tmp_out AS
SELECT lo_from_bytea(0,
ST_AsGDALRaster(ST_Union(rast), 'JPEG', ARRAY['QUALITY=50'])
) AS loid
FROM dummy_rast
WHERE rast && ST_MakeEnvelope(10, 10, 11, 11);
SELECT lo_export(loid, '/tmp/dummy.jpg')
FROM tmp_out;
SELECT lo_unlink(loid)
FROM tmp_out;
أمثلة على إخراج GTIFF
SELECT ST_AsGDALRaster(rast, 'GTiff') As rastjpg
FROM dummy_rast WHERE rid=2;
-- Out GeoTiff with jpeg compression, 90% quality
SELECT ST_AsGDALRaster(rast, 'GTiff',
ARRAY['COMPRESS=JPEG', 'JPEG_QUALITY=90'],
4269) As rasttiff
FROM dummy_rast WHERE rid=2;