如何将 postgis 中的多边形重新采样为较低的分辨率?

问题描述 投票:0回答:0

我在 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 方块菱形?

sql postgresql maps gis postgis
© www.soinside.com 2019 - 2024. All rights reserved.