在PostGIS中进行点数据的栅格化(Rasterization of Point Data in PostGIS)

说明

介绍在PotGIS中将点数据转换为栅格数据。

关键字: rasterpointPostGIS

环境准备

  • Postgresql版本:PostgreSQL 14.0, 64-bit
  • PostGIS版本:POSTGIS="3.3.2"
  • QGIS版本:3.28.3-Firenze

基本步骤

一、数据准备

测试数据中有一张点数据表,坐标系3857

CREATE TABLE IF NOT EXISTS public.test_point
(
    geom geometry(Point,3857),
    id bigint,
    h numeric,--指定要转换为栅格值的列,如高程、温度、风速等
    CONSTRAINT test_point_pkey PRIMARY KEY (id)
)

TABLESPACE pg_default;

ALTER TABLE public.test_point
    OWNER to postgres;

二、二维点数据转换为三维点

DROP TABLE IF EXISTS test_point_3d;
CREATE TABLE test_point_3d
    as select h,ST_Force3D(ST_Transform(geom,3857),tp.h) as geom 
    from test_point tp;       

在这里插入图片描述

三、将三维点数据转换为栅格

WITH inputs AS 
    (SELECT 16::INTEGER AS pixelsize,'linear:radius:100' AS algorithm, 
    ST_Collect(geom) AS geom, ST_Expand(ST_Collect(geom), 10) AS ext
    FROM test_point_3d ),sizes AS 
    (SELECT ceil((ST_XMax(ext) - ST_XMin(ext))/pixelsize)::integer AS width,
         ceil((ST_YMax(ext) - ST_YMin(ext))/pixelsize)::integer AS height,
         ST_XMin(ext) AS upperleftx,ST_YMax(ext) AS upperlefty
    FROM inputs )SELECT 1 AS rid,
         ST_InterpolateRaster( geom,
         algorithm,
         ST_SetSRID(ST_AddBand(ST_MakeEmptyRaster(width,
         height,upperleftx,upperlefty,pixelsize),
         '32BF'), ST_SRID(geom)) ) AS rast FROM sizes, inputs;

在这里插入图片描述

其中ST_InterpolateRaster 参见:

https://postgis.net/docs/RT_ST_InterpolateRaster.html

其参数algorithm参见:

https://gdal.org/programs/gdal_grid.html#interpolation-algorithms

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丷丩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值