什么是 ST_Raster 存储类型?

ST_Raster 是用户定义的数据类型。该数据类型存储在用户定义表内对象类型 ST_Raster 的单独一行和单独一列中。ST_Raster 提供完全的地理数据库支持以及对栅格数据的 SQL 访问。这样便可使用数据库管理系统 (DBMS) 编写可以访问和使用栅格操作和查询的 SQL 应用程序。

Oracle、Microsoft SQL Server 和 PostgreSQL 数据库中支持 ST_Raster。但在 SQL Server Express 中不支持该数据类型。

要使用 ST_Raster 类型,您必须在 DBMS 中对其进行配置。有关说明,请参阅在 Oracle 中安装 ST_Raster 类型在 PostgreSQL 中安装 ST_Raster 类型在 SQL Server 中安装 ST_Raster 类型

ST_Raster 对象类型定义如下:

CREATE TYPE ST_Raster AS OBJECT (
  raster_id			    INTEGER,
  type				        INTEGER,
  extent			       SE_EXTENT,
  properties			   SE_RASTERPROPERTY_LIST,
  rasterband_list	ST_RASTERBAND_LIST
	 data					       ST_PIXELDATA);

属性

描述

raster_id

唯一标识定义为 ST_Raster 类型的表列中的每个栅格。

type

当前保留为仅限内部使用。

extent

存储搜索范围的可选属性

properties

用于存储与栅格而非单个栅格波段相关联的各种属性

rasterband_list

存储波段特定属性的栅格波段集

data

保留字段

ST_Raster 对象由多个子对象组成。

ST_Raster 类型的对象模型图

ST_RASTERBAND 和 ST_RASTERBAND_LIST

ST_RASTERBAND_LIST 类型定义如下:

CREATE TYPE st_rasterband_list 
AS VARRAY(4096) OF ST_RASTERBAND;

ST_RASTERBAND 类型定义如下:

CREATE TYPE st_rasterband AS OBJECT (
  rasterband_id	INTEGER,
  sequence			   INTEGER,
  types			      INTEGER,
  width			      INTEGER,
  height			     INTEGER,
  extent			     SE_EXTENT,
  block_origin		SE_COORD,
  block_width		 INTEGER,
  block_height		INTEGER,
  flags			      INTEGER);

属性

描述

rasterband_id

唯一标识 ST_Raster 类型的列中的每个栅格波段

sequence

保持栅格波段集中每个波段的顺序不变;对于给定的栅格波段集,栅格波段集中每个波段的顺序值必须唯一。

types

用于存储各种栅格波段元数据的位掩码;位掩码中包含的各个属性均可通过 SQL 函数访问和指定。不应直接修改该属性的值。

width

定义栅格波段的像素宽度

height

定义栅格波段的像素高度

extent

栅格波段的地理范围

block_origin

保留块原点的地理坐标

block_width

定义栅格波段切片的像素宽度

block_height

定义栅格波段切片的像素高度

flags

保存栅格波段元数据的位掩码;位掩码中包含的各个属性均可通过 SQL 函数访问和指定。不应直接修改该属性的值。

SE_RASTERPROPERTY 和 SE_RASTERPROPERTY_LIST

SE_RASTERPROPERTY_LIST 类型定义如下:

CREATE TYPE se_rasterproperty_list
  AS VARRAY(1048576) OF SE_RASTERPROPERTY;

SE_RASTERPROPERTY 类型定义如下:

CREATE TYPE se_rasterproperty AS OBJECT (
  name				 VARCHAR2(65),
  intvalue	INTEGER,
  strvalue	VARCHAR2(160));

属性

描述

name

栅格属性的名称

intvalue

存储栅格属性的整数值

strvalue

存储栅格属性的字符串值

SE_EXTENT

SE_EXTENT 类型定义如下:

CREATE TYPE se_extent AS OBJECT (
  minx				FLOAT(64),
  miny				FLOAT(64),
  maxx				FLOAT(64),
  maxy				FLOAT(64));

属性

描述

minx

最小 X 坐标值

miny

最小 Y 坐标值

maxx

最大 X 坐标值

maxy

最大 Y 坐标值

SE_COORD

SE_COORD 类型定义如下:

CREATE TYPE se_coord AS OBJECT (
  x				FLOAT(64),
  y				FLOAT(64));

属性

描述

x

X 坐标值

y

Y 坐标值

ST_PIXELDATA

ST_PIXELDATA 类型定义如下:

CREATE TYPE st_pixeldata AS OBJECT (
width    INTEGER,
height   INTEGER,
numbands INTEGER,
extent   SE_EXTENT,
types    INTEGER,
data     BLOB,
mask     BLOB);

属性

描述

width

对象的像素宽度

height

对象的像素高度

numbands

定义对象的波段数

extent

对象的地理范围

types

用于存储各种栅格元数据的位掩码;位掩码中包含的各个属性均可通过 SQL 函数访问和指定。不应直接修改该属性的值。

data

对象像素值的数组

mask

对象的 NoData 位掩码数组

9/15/2013