GISarabia.org
PostGIS › الدليل الرسمي › 11. مرجع الرستر › 11.15. معالجة الرستر: من رستر إلى شكل هندسي
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_Polygon

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

الاسم

ST_Polygon — تُعيد شكلًا هندسيًا من نوع multipolygon يتكوّن من اتحاد البكسلات التي لا تساوي قيمتها قيمة NODATA. إذا لم يُحدَّد رقم النطاق، فالقيمة الافتراضية لرقم النطاق هي 1.

المختصر

geometry ST_Polygon(raster rast, integer band_num=1);

الوصف

تغيّرت في: 3.3.0 عُطّل التحقق من الصلاحية والإصلاح لتحسين الأداء. قد ينتج عن ذلك أشكال هندسية غير صالحة.

متاحة منذ: 0.1.6 تتطلب GDAL 1.7 أو أحدث.

حُسّنت في: 2.1.0 تحسين السرعة (تنفيذ كامل بلغة C) وأصبح المضلع المتعدد المُعاد مضمون الصلاحية.

تغيّرت في: 2.1.0 في الإصدارات السابقة كانت تُعيد أحيانًا مضلعًا، وتغيّرت لتُعيد دائمًا مضلعًا متعددًا.

أمثلة

-- by default no data band value is 0 or not set, so polygon will return a square polygon
SELECT ST_AsText(ST_Polygon(rast)) As geomwkt
FROM dummy_rast
WHERE rid = 2;

geomwkt
--------------------------------------------
MULTIPOLYGON(((3427927.75 5793244,3427928 5793244,3427928 5793243.75,3427927.75 5793243.75,3427927.75 5793244)))


-- now we change the no data value of first band
UPDATE dummy_rast SET rast = ST_SetBandNoDataValue(rast,1,254)
WHERE rid = 2;
SELECt rid, ST_BandNoDataValue(rast)
from dummy_rast where rid = 2;

-- ST_Polygon excludes the pixel value 254 and returns a multipolygon
SELECT ST_AsText(ST_Polygon(rast)) As geomwkt
FROM dummy_rast
WHERE rid = 2;

geomwkt
---------------------------------------------------------
MULTIPOLYGON(((3427927.9 5793243.95,3427927.85 5793243.95,3427927.85 5793244,3427927.9 5793244,3427927.9 5793243.95)),((3427928 5793243.85,3427928 5793243.8,3427927.95 5793243.8,3427927.95 5793243.85,3427927.9 5793243.85,3427927.9 5793243.9,3427927.9 5793243.95,3427927.95 5793243.95,3427928 5793243.95,3427928 5793243.85)),((3427927.8 5793243.75,3427927.75 5793243.75,3427927.75 5793243.8,3427927.75 5793243.85,3427927.75 5793243.9,3427927.75 5793244,3427927.8 5793244,3427927.8 5793243.9,3427927.8 5793243.85,3427927.85 5793243.85,3427927.85 5793243.8,3427927.85 5793243.75,3427927.8 5793243.75)))

-- Or if you want the no data value different for just one time

SELECT ST_AsText(
    ST_Polygon(
        ST_SetBandNoDataValue(rast,1,252)
        )
    ) As geomwkt
FROM dummy_rast
WHERE rid =2;

geomwkt
---------------------------------
MULTIPOLYGON(((3427928 5793243.85,3427928 5793243.8,3427928 5793243.75,3427927.85 5793243.75,3427927.8 5793243.75,3427927.8 5793243.8,3427927.75 5793243.8,3427927.75 5793243.85,3427927.75 5793243.9,3427927.75 5793244,3427927.8 5793244,3427927.85 5793244,3427927.9 5793244,3427928 5793244,3427928 5793243.95,3427928 5793243.85),(3427927.9 5793243.9,3427927.9 5793243.85,3427927.95 5793243.85,3427927.95 5793243.9,3427927.9 5793243.9)))
                    

انظر أيضًا

ST_Value، ST_DumpAsPolygons