官方文档地址:
ST_MakeEmptyRasterpostgis.net一、函数签名
二、描述
ST_MakeEmptyRaster用于创建一个空的没有像元值的栅格(没有波段),各个参数用于定义这个空栅格的元数据:
- width、height —— 栅格的列数和行数
- upperleftx、upperlefty —— 对应空间坐标系中栅格左上角的坐标
- scalex、scaley —— 单个像元的宽度和长度(单位等同于空间参考坐标系的单位)。
- skewx、skewy —— 旋转角度,如果栅格数据北方朝上,该值为0。默认值为0。
- srid —— 空间参考坐标系,默认被设置为0。
- pixelsize —— 单个像元的宽度和长度。当scalex和scaley相等时,就可以直接使用这个参数设置像元大小。
上面的第一个函数签名传入现有的栅格数据作为新创建栅格的模板,会返回具有相同元数据(没有波段、没有像元值)的栅格数据。
在创建了一个空栅格之后,要向其添加波段,并可能要对其进行编辑。可以使用以下函数:
- ST_AddBand —— 用于定义波段。
- ST_SetValue —— 用于设置像元值。
三、示例
CREATE TABLE dummy_rast(rid integer, rast raster); -- 创建一个栅格数据表
-- 插入一个没有像元值的空栅格
INSERT INTO dummy_rast(rid,rast)
VALUES(3, ST_MakeEmptyRaster( 100, 100, 0.0005, 0.0005, 1, 1, 0, 0, 4326) );
-- 使用一个现有的栅格数据作为新栅格的模板
INSERT INTO dummy_rast(rid,rast)
SELECT 4, ST_MakeEmptyRaster(rast)
FROM dummy_rast WHERE rid = 3;
-- 输出我们刚添加的空栅格的元数据
SELECT rid, (md).*
FROM (SELECT rid, ST_MetaData(rast) As md
FROM dummy_rast
WHERE rid IN(3,4)) As foo;
-- output --
rid | upperleftx | upperlefty | width | height | scalex | scaley | skewx | skewy | srid | numbands
-----+------------+------------+-------+--------+------------+------------+-------+-------+------+----------
3 | 0.0005 | 0.0005 | 100 | 100 | 1 | 1 | 0 | 0 | 4326 | 0
4 | 0.0005 | 0.0005 | 100 | 100 | 1 | 1 | 0 | 0 | 4326 | 0