ST_IntersectionFractions — 计算给定 geometry 覆盖到每个 raster 像元的比例。
raster ST_IntersectionFractions(raster rast, geometry geom);
计算给定 geometry 覆盖每个 raster 像元的比例。第一个参数是 raster,定义用于计算的网格几何;第二个参数是 geometry,与网格叠加并据此为每个像元赋值:对 Polygon 返回像元面积中被 geometry 覆盖的比例,对 LineString 返回线在像元中所占的长度。
可用性:3.6.0 -- 需要 GEOS 3.14 或更高版本。
CREATE TABLE raster_proportions_rast (
name text,
rast raster
);
INSERT INTO raster_proportions_rast (name, rast) VALUES (
'2x2 raster covering 0,0 to 10,10',
ST_MakeEmptyRaster(
2, 2, -- raster width/height in pixels
0, 10, -- upper-left corner x/y coordinates
5, -5, -- pixel width/height in ground units
0, 0, -- skew x/y
0 -- SRID
));
--
-- This rotated square polygon covers half of each cell in the
-- raster.
--
SELECT name, ST_DumpValues(
ST_IntersectionFractions(
rast,
'POLYGON((5 0, 0 5, 5 10, 10 5, 5 0))'::geometry),1)
FROM raster_proportions_rast;
2x2 raster covering 0,0 to 10,10
---------------------------------
{{0.5,0.5},{0.5,0.5}}