我在 Postgres(带有 Postgis)中有一张表,看起来像这样:
geom | val |
---|---|
多边形(...坐标) | 80 |
多边形(...坐标) | 72 |
这些多边形中的每一个代表地图上一个 30m 的菱形正方形。我使用 4326 作为 SRID。
我想创建更大的钻石,每个钻石 1 公里(较低的分辨率),这样我就可以在不同的缩放级别检索地图的数据。
我的尝试
谷歌搜索后,我发现我可以使用栅格函数对我的容器重新采样(如 st_resample),但我必须先将我的多边形转换为栅格。
如何根据这些数据创建 1 公里的 bin 大小?
我尝试了很多方法将这些多边形转换为单个栅格,但都没有成功。
-- Creating an empty raster:
create table empty_raster (
rast raster
);
with
-- First I calculated the bounding box for all of the polygons:
bbox as (SELECT ST_Extent(geom) as geom FROM my_data)
insert into empty_raster
-- Then I create an empty raster with that size
select (
-- I probably don't need this SetSRID
ST_SetSRID(
ST_MakeEmptyRaster(
-- width/height
ceil((ST_XMax(bbox.geom) - ST_XMin(bbox.geom)))::int,
ceil((ST_YMax(bbox.geom) - ST_YMin(bbox.geom)))::int,
-- position
ST_XMin(bbox.geom)::float8,
ST_YMax(bbox.geom)::float8,
-- bin size (what scale should I use here? Meters?)
30,
0,
0,
4326
),
4326
)
) AS rast FROM bbox;
但我需要一种填充/刻录它的方法,但我不知道如何将每个多边形与光栅中的像素匹配,也不知道以后如何对其重新采样。
问题
如何通过提取落入较大方块的所有 30m 方块值的平均值来创建 1km 方块菱形?