ST_Raster.export

定义

ST_Raster.export 函数用于将整个 ST_Raster 对象或其某部分写入一个图像文件。该函数被设计为仅可用作 SQL SELECT 语句的选择列表的一部分。

语法

Oracle

export (filename IN VARCHAR2) RETURN VARCHAR2

export (filename IN VARCHAR2, 
        parameter_list IN VARCHAR2) RETURN VARCHAR2

PostgreSQL

export (raster IN ST_RASTER, 
        filename IN TEXT) RETURN TEXT

export (raster IN ST_RASTER, 
        filename IN TEXT, 
        parameter_list IN TEXT) RETURN TEXT

SQL Server

export (filename IN NVARCHAR, 
        parameter_list IN NVARCHAR) RETURN NVARCHAR

返回值

VARCHAR

参数

参数

描述

filename

导出的栅格文件的名称

filename 参数为 VARCHAR 类型,所以必须用单引号将其括起来。文件的扩展名确定了将用于导出文件的栅格格式。目前所支持的栅格导出格式为 GeoTIFF。因此,要追加扩展名 .tif。

raster

要导出的 ST_Raster 值

parameter_list

用单引号括起来且以逗号分隔的参数列表可能包含以下参数:

  • band <第 1 个波段号>[,<第 2 个波段号>],…,[第 n 个波段号]> - 以逗号分割的待导出波段的波段序号列表

    按波段序号的顺序导出像素数据。如果未指定参数,则所有波段都以常规波段顺序导出。

  • level <金字塔等级> - 待导出 ST_Raster 对象的金字塔等级;默认为基础等级 (0)。
  • compression <lzw | g3 | g4 | zip> - 用于创建图像文件的压缩形式;默认设置为不使用压缩而创建图像文件。
  • window (minx,miny,maxx,maxy) - 待导出至图像文件的 ST_Raster 对象的范围(以像素坐标指定)
  • extent (minx,miny,maxx,maxy) - 待导出至图像文件的 ST_Raster 对象的范围(以地理坐标指定)
  • overwrite - 如果文件已存在,则将其覆盖。默认行为是返回一个错误。

示例

这些示例显示了以下内容:

  1. 如何将 ST_Raster 对象导出至名为 border.tif 的 GeoTIFF 文件
  2. 如何以降序波段顺序导出 ST_Raster 对象、GeoTIFF 文件以及 pyramid.tif 的第二金字塔等级

在这些示例中,文件被导出至处理 SQL 的 DBMS 服务器上的位置。您可能包括带有文件名的特定路径。确保该路径对于 DBMS 服务器有效。

Oracle

  1. SELECT image.export('border.tif', 'compression=zip') 
      FROM BORDER t
      WHERE t.image.raster_id = 10;
    
  2. SELECT image.export('pyramid.tif', 'level=2, band=(3,2,1)')
      FROM BORDER
      WHERE image.raster_id = 20;
    

PostgreSQL

  1. SELECT export(image,'border.tif', 'compression=zip') 
      FROM border
      WHERE raster_id(image) = 10;
    
  2. SELECT export(image, 'pyramid.tif', 'level=2, band=(3,2,1)')
      FROM border
      WHERE raster_id(image) = 20;
    

SQL Server

  1. SELECT image.export('border.tif', 'compression=zip')
     FROM border
     WHERE image.raster_id = 10;
    
  2. SELECT image.export('pyramid.tif', 'level=2, band=(3,2,1)')
    FROM border
    WHERE image.raster_id = 20;
    
5/25/2014