将栅格对象转化为文件格式二进制流。

语法

setof record ST_AsDatasetFile(raster raster_obj,
                              box extent,
                              integer pyramidLevel default 0,
                              cstring bands default '',
                              cstring format default 'GTiff',
                              cstring create_option default '{}',
                              cstring process_option default '{}',
                              out ext cstring,
                              out data bytea);

参数

参数名称 描述
raster_obj 需要计算的raster对象。
extent 影像的范围,默认使用地理坐标系统。
pyramidLevel 影像金字塔层级,从0开始,默认值为0。
bands 需要获取的波段列表,从0开始,用'0-2'或者‘1,2,3’这种形式表示。默认为'',获取所有波段。
format 输出影像文件格式。详情请参见ST_RasterDrivers函数。
create_option JSON字符串类型的数据集创建选项。详情请参见ST_RasterDrivers函数。
process_option JSON字符串类型的操作选项。

参数为rast_coord,表示传入的box是否为像元坐标。

如果是像元坐标,横坐标x表示像元的列号(起始为0),纵坐标y表示像元的行号(起始为0)。

ext 文件后缀名称,常见如TIF,XML等。
data 数据文件二进制流数据。

描述

  • 文件格式必须在ST_RasterDrivers函数中,对应驱动can_asfile字段为true。
  • 默认的裁剪缓存为100 MB,代表最多只能裁剪出100 MB大小的结果数据,如果需要调整返回结果大小,可使用参数ganos.raster.clip_max_buffer_size设置缓存的大小。
  • 参数create_option可以通过ST_RasterDrivers函数中的create_options获得。

示例

--使用裁剪范围。
SELECT ST_AsDatasetFile(raster_obj, 
                  '(-180,-90), (0,0)'::Box) 
FROM raster_table    
WHERE id =1;

--指定金字塔层级。
SELECT ST_AsDatasetFile(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1) 
FROM raster_table
WHERE id =1;

--指定波段使用裁剪范围。
SELECT ST_AsDatasetFile(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1,
                 '0-2') 
FROM raster_table    
WHERE id =1;

--指定格式为GIF。
SELECT ST_AsDatasetFile(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1,
                 '0-2',
                       'GIF') 
FROM raster_table    
WHERE id =1;

--指定格式创建选项。
SELECT ST_AsDatasetFile(raster_obj, 
                  '(-180,-90), (0,0)'::Box,
                 1,
                 '0-2',
                       'GTiff',
                       '{"blockxsize":256, "blockysize":256, "compress": "DEFLATE"}') 
FROM raster_table    
WHERE id =1;

--指定使用像元坐标。
SELECT ST_AsDatasetFile(raster_obj, 
                  '(0,0), (100,100)'::Box,
                 1,
                 '0-2',
                       'GTiff',
                       '{}',
                       '{"rast_coord":"true"}') 
FROM raster_table    
WHERE id =1;