ST_IntersectionFractions — ラスタ上の個々のセルのうち与えられたジオメトリで覆われたものの断片を計算します。
raster ST_IntersectionFractions(raster rast, geometry geom);
ラスタ上の個々のセルのうち与えられたジオメトリで覆われている割合を計算します。一つ目の引数はラスタで、計算に使うジオメトリグリッドを定義します。範囲とセルサイズはこのラスタから読みます。二つ目の引数はジオメトリです。グリッドを覆っていて、個々のグリッドの値は、ジオメトリが覆うグリッドに基づいて設定されます。ポリゴンについては、個々のセルについて返される値は、ジオメトリに覆われた領域の割合です。ラインストリングについては、個々のセルから返される値はセルに含まれる長さです。
Availability: 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}}