ST_Raster.mosaic

定义

ST_Raster.mosaic 函数用于将输入影像与现有 ST_Raster 对象进行合并。此函数仅可用于 UPDATE 语句。在 SELECT 语句中使用时,将返回数据库错误。

ST_Raster.mosaic 函数在单个事务内执行,这样,对于适应待决事务可用的回滚空间量,必须考虑同时镶嵌的源栅格数。

源栅格数据位于网络驱动器上时,必须为当前数据库进程的所有者授予相应的文件访问权限。

语法

Oracle

mosaic (filename IN VARCHAR2) RETURN ST_RASTER

mosaic (filename IN VARCHAR2, 
        parameter_list IN VARCHAR2) RETURN ST_RASTER

mosaic (data IN ST_PIXELDATA) RETURN ST_RASTER

mosaic (data IN ST_PIXELDATA, 
        parameter_list IN VARCHAR2) RETURN ST_RASTER

PostgreSQL

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

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

mosaic (raster IN ST_RASTER, 
        data IN ST_PIXELDATA) RETURN ST_RASTER

mosaic (raster IN ST_RASTER, 
        data IN ST_PIXELDATA, 
        parameter_list IN TEXT) RETURN ST_RASTER

SQL Server

mosaic (filename IN NVARCHAR, 
        data IN ST_PIXELDATA, 
        parameter_list IN NVARCHAR) RETURN ST_RASTER

返回值

ST_Raster

参数

参数

描述

filename

源栅格数据的文件名

文件名可包含操作系统通配符。也可以是从用户定义的表中选择单个 ST_Raster 列的 SQL SELECT 语句。支持的影像文件格式为 GeoTIFF。

data

预定义的 ST_PixelData 对象

raster

指定影像将镶嵌至的 ST_Raster 目标值

parameter_list

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

  • align - 执行从源栅格到目标 ST_Raster 的范围捕捉。
  • recursive - 如果通配符参数作为源数据路径提供,则递归搜索提供的顶级文件夹的所有子文件夹。
  • conversion <rgb | 灰度> - 设置为 rgb 时,转换参数指向 mosaic 函数以将单波段、色彩映射的源影像转换为三波段 RGB ST_Raster 对象。设置为灰度的转换参数表示 mosaic 函数应将 1 位黑白源影像转换为 8 位灰度 ST_Raster。
  • quality <值> - 如果基础图层的压缩类型为 JPEG 或 JPEG 2000,则通过设置此参数来控制金字塔的压缩质量。JPEG 压缩的默认值为 75,而 JPEG 2000 压缩的默认值为 0。
  • bitrate <值> - JPEG 2000 固定压缩的比特率
  • nodata (r,g,b) | <值> - 镶嵌至 ST_Raster 时转换为 nodata 的源影像的像素值
  • nocolormap - 表示色彩映射表镶嵌至 T_Raster 时,将其从色彩映射的源影像中移除
  • edge <值>:<容差> - 移除标记为 NoData 的 ST_Raster 周围不需要的边界像素;边表示只移除栅格边外部位于指定值范围中的像素。这可以防止栅格内值相同的像素被移除。
  • level <金字塔级别> - 在源影像镶嵌至 ST_Raster 后将存在的 ST_Raster 的最大金字塔等级
  • skipLevel1 - 指示函数不存储第一金字塔等级
  • nearest | bilinear | bicubic - 用于构建金字塔的插值算法;默认为最邻近
  • log <日志文件名> - 日志文件会捕获 mosaic 函数的结果,因为该文件镶嵌源数据。
  • erase - 为 mosaic 启用删除模式;对于任何给定输入 NoData,均从所生成的栅格中移除相应像素数据。

示例

这些示例说明了以下内容:

  1. 在指向现有 ST_Raster 对象的路径 E:\data 及其所有子文件夹下创建所有 TIFF 的 mosaic。将 mosaic 函数的结果写入日志文件 E:\'log.txt' 中。
  2. 使用 ST_Raster 对象的像素填充 ST_PixelData 对象,然后将其镶嵌至另一 ST_Raster 对象。

Oracle

  1. UPDATE SAT t
    SET image = t.image.mosaic('E:\data\*.tif',
                               'recursive,log=E:\log.txt');
  2. DECLARE
      	  data sde.ST_PIXELDATA;
     BEGIN
      	  SELECT t.image.getPixelData('level=1') 
         INTO DATA 
         FROM SAT t;
    
      	  UPDATE SAT t
    	    SET image = t.image.mosaic(data,'log=E:\log.txt'); 
     END; 
     /

PostgreSQL

  1. UPDATE sat
    SET image = mosaic(image,'E:\data\*.tif',
                      'recursive,log=E:\log.txt');
  2. DROP FUNCTION IF EXISTS mosaic_from_pixeldata();
    
    CREATE OR REPLACE FUNCTION mosaic_from_pixeldata() 
    RETURNS integer AS '
    DECLARE data sde.st_pixeldata; 
     BEGIN 
      	  SELECT getPixelData(image) 
         INTO data 
      	  FROM sat; 
      	  UPDATE sat 
      	  SET image = mosaic(image,data,''log=E:\log.txt'') 
      	  WHERE name = ''1_1_data'';
     END;' 
    LANGUAGE plpgsql; 
    
         SELECT mosaic_from_pixeldata();
    
    DROP FUNCTION IF EXISTS mosaic_from_pixeldata();

SQL Server

  1. UPDATE sat
    SET image = image.mosaic('E:\data\*.tif',NULL,
                             'recursive,log=E:\log.txt');

  2. DECLARE
    @data ST_PIXELDATA;
     SET @data = (SELECT image.getPixelData('level=1')
     FROM sat);
    
    UPDATE sat
    SET image = image.mosaic(NULL,@data,'log=E:\log.txt');

7/10/2012