什么是 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_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 位掩码数组 |