PostgreSQL 地理数据库中的栅格数据集和栅格目录

栅格数据是在按行与列排列且大小相同的像元的数组中所显示的空间数据。栅格数据可由一个或多个栅格波段组成。有关栅格数据及其属性的完整说明,请参阅本帮助中的“了解栅格数据”一节。您可以从什么是栅格数据?开始阅读

ArcGIS for Desktop 中的栅格

在 ArcGIS 中,栅格数据可存储在单个栅格数据集、栅格目录或镶嵌数据集中。有关这些栅格存储类型的介绍,请参阅栅格数据的编排

在目录树中,PostgreSQL 中的各个栅格数据集具有以下图标:

栅格数据集图标

目录树中的栅格目录具有以下图标:

栅格目录图标

PostgreSQL 中,栅格目录和栅格数据集的名称包含数据库的名称、栅格目录或数据集的所有者名称以及栅格目录或栅格数据集本身的名称。

例如,m8db 数据库中由用户 rocket 所有的的栅格数据集 qa_ras_seattle2 将在目录树中以 m8db.rocket.qa_ras_seattle2 形式列出。

有关镶嵌数据集在地理数据库中如何存储的信息,请参阅 PostgreSQL 地理数据库内的镶嵌数据集

PostgreSQL 数据库中的栅格表

PostgreSQL 数据库中的 ArcSDE 地理数据库可以将栅格数据存储在 PostgreSQL 的本地 bytea 列中,也可以按 ST_Raster 存储类型进行存储。

以 bytea 形式存储的栅格数据

将向业务表中添加栅格列,并且栅格列的每个单元格都包含对存储在单独栅格表中的栅格数据的引用。因此,业务表的每一行都引用整个栅格数据。

向地理数据库导入栅格数据时,会在所选业务表中添加一个栅格列。栅格列的每个像元都包含对存储在单独栅格表中的栅格数据的引用。因此,业务表的每一行都引用整个栅格数据。每个业务表只允许有一个栅格列。

提示提示:

您可以根据自己的喜好对栅格列进行命名,但要符合 PostgreSQL 的列命名约定。

栅格数据集由以下五个表组成:业务表、辅助表、块表、波段表和栅格表。以下是栅格数据集 qa_ras_seattle2_xf 的表。

sde_ras、sde_bnd、sde_aux 和 sde_blk 表中的数字与 sde_raster_columns 表的 rastercolumn_id 对应。

业务表

业务表是用于存储属性的 DBMS 表,并且通过添加栅格列而在空间上启用。它存储栅格的轮廓线(描绘区域)。在上述示例中,业务表是 qa_ras_seattle2_xf 表。

带有栅格列的业务表是栅格数据集或栅格目录。栅格数据集只能有一个业务表行,而栅格目录可以有多个。关于栅格列的信息保留在 sde_raster_columns 系统表中。关于所有业务表(无论它们是否有空间列或栅格列)的信息则保留在 sde_table_registry 系统表中。

栅格影像表

实际的栅格影像存储在这些表中。

注注:

如果地理数据库中有栅格数据,则栅格表将仅显示在数据库中。

sde_aux_<raster_column_id>

栅格辅助表用于存储影像色彩映射表、影像的统计数据以及可选位掩码(用于影像叠加和镶嵌)。

现有的影像元数据(例如影像的统计数据、色彩映射表或位掩码)会自动存储于栅格辅助表中。栅格辅助表的 rasterband_id 列是栅格波段表主键的外键引用。访问栅格波段的元数据时,这两个表会借助此主/外键引用连接起来。

字段名

字段类型

描述

是否允许为空

rasterband_id

integer

表示栅格波段的数字;例如,带有两个栅格波段的栅格数据集将在此字段中有两个不同的值(1 和 2)。

NOT NULL

type

integer

可能的值包括

NOT NULL

object

bytea

包含实际数据,即色彩映射表索引、栅格统计数据或坐标变换

NOT NULL

sde_blk_<raster_column_id>

栅格块表用于存储影像各波段的实际影像数据。

栅格块表存储每个栅格波段的像素。根据用户定义的尺寸将像素分块。将栅格数据导入地理数据库或在地理数据库中创建栅格数据的 ArcGIS 应用程序具有默认尺寸。例如,地理处理工具和 ArcCatalog 采用每个栅格块 128 × 128 像素的默认尺寸。栅格块的尺寸以及压缩方法(如果指定了一个方法)决定每个栅格块的存储大小。应选择结合压缩方法后让栅格块表的每一行都适合 DBMS 的栅格块尺寸。

栅格块表包含 RASTERBAND_ID 列,该列是栅格波段表 RASTERBAND_ID 主键的外键引用。访问栅格波段的块时,这些表会借助主/外键引用连接在一起。

栅格块表根据分辨率逐渐减小的金字塔进行填充。金字塔的高度由应用程序所指定的等级数确定。通过应用程序(例如地理处理工具或 ArcCatalog)可定义等级、请求地理数据库计算等级,或同时提供这两种功能。金字塔从底部或等级 0(包含影像的原始像素)开始。通过将之前等级的四个像素合并为当前等级下的单个像素,金字塔向顶点延伸。继续执行此过程直到其到达顶点,该顶点可能是自动定义的或用户定义的。

金字塔的其他等级将栅格块数增加了三分之一。但是,由于可以指定等级数,金字塔的大小可能较小。金字塔的第一个等级将是底层的 25%。还需注意,金字塔的第一个等级可以忽略,这是可大大减小金字塔大小的因素之一。

栅格金字塔
栅格金字塔

构建金字塔时,大多数栅格都是通过按乘数 2 逐渐减采样前一等级直至顶点的方式创建的。当应用程序进行缩小操作并且栅格像元变得比分辨率阈值小时,将选择一个更高的金字塔等级。使用金字塔的目的是优化显示性能。

字段名

字段类型

描述

是否允许为空

rasterband_id

integer

表示栅格波段的数字;例如,带有两个栅格波段的栅格数据集将在此字段中有两个不同的值(1 和 2)。

NOT NULL

rrd_factor

integer

金字塔等级;金字塔等级从 0 开始并可从该等级开始增加。

NOT NULL

row_nbr

integer

切片行号位置

NOT NULL

col_nbr

integer

列行号位置

NOT NULL

block_data

bytea

存储在切片中的像素数据

NOT NULL

sde_bnd_<raster_column_id>

栅格波段表用于存储关于影像波段的信息。每个栅格波段都有一条对应的记录。

地理数据库将栅格波段存储在栅格波段表中。栅格波段表通过 RASTER_ID 列与栅格表连接。栅格波段表列的 RASTER_ID 是栅格表主键的外键引用。

字段名

字段类型

描述

是否允许为空

rasterband_id

integer

表示栅格波段的数字;例如,带有两个栅格波段的栅格数据集将在此字段中有两个不同的值(1 和 2)。

NOT NULL

sequence_nbr

integer

栅格数据集内的栅格波段顺序

NOT NULL

raster_id

integer

栅格数据集的唯一标识符;对应于业务表的栅格列中的值

NOT NULL

name

varchar(65)

可选栅格波段名称

band_flags

integer

包含有关波段属性的位掩码

NOT NULL

band_width

integer

波段的像素宽度

NOT NULL

band_height

integer

波段的像素高度

NOT NULL

band_types

integer

包含有关波段属性的位掩码

NOT NULL

block_width

integer

块的像素宽度

NOT NULL

block_height

integer

块的像素高度

NOT NULL

block_origin_x

double precision

栅格原点的 x 坐标

NOT NULL

block_origin_y

double precision

栅格原点的 y 坐标。

NOT NULL

eminx

double precision

栅格波段的最小 x 值

NOT NULL

eminy

double precision

栅格波段的最小 y 值

NOT NULL

emaxx

double precision

栅格波段中的最大 y 值

NOT NULL

emaxy

double precision

栅格波段中的最大 y 值

NOT NULL

cdate

integer

栅格波段的创建日期

NOT NULL

mdate

integer

栅格波段的上次修改日期

NOT NULL

sde_ras_<raster_column_id>

栅格描述表用于存储栅格列内影像的描述。

字段名

字段类型

描述

是否允许为空

raster_id

integer

栅格数据集的唯一标识符;对应于业务表的栅格列中的值

NOT NULL

raster_flags

integer

保留以供今后使用

description

varchar(65)

栅格数据集的描述

用于追踪栅格的其他系统表

与其他数据类型一样,可在 gdb_itemssde_layers 表中追踪栅格目录和数据集。栅格类型的列可在 sde_raster_columns 表中追踪,每个包含栅格列的表都有一个条目。

还可以有其他属性表作为栅格数据集或栅格目录的一部分。每个栅格数据集只能有一个栅格属性表,但栅格目录可以有多个这样的表。栅格属性表用于定义特定栅格像元值的属性。有关使用这些表的信息,请参阅栅格数据集属性表

可以使用“数据管理”工具箱的“栅格”工具集中“栅格属性”工具集的“构建栅格属性”工具。有关此工具的详细信息,请参阅构建栅格属性表(数据管理)

对于栅格数据集,其他属性表以 sde_vat_<raster_column_ID> 格式进行命名。对于栅格目录,表名称的格式为 sde_vat_<raster_column_ID>_<Object_ID>。

View a diagram of a raster dataset using bytea storage in PostgreSQL.

虚线表示各列之间的隐含关系。

注注:

需要使用 Adobe Acrobat Reader 才能打开此文件。

以 ST_Raster 格式存储的栅格数据

ST_Raster 是用户定义的对象类型,由子类型组成。采用 ST_Raster 存储的栅格数据集由以下三个表组成:业务表、辅助表和块表。当在地理数据库中使用 ST_Raster 存储时,将存储在栅格和二进制栅格的栅格波段表中的等效信息是基表中 ST_Raster 对象的一部分。ST_Raster 对象也存储栅格的几何。

以 ST_Raster 格式存储的栅格具有辅助 (sde_aux_<raster_ID>) 表和块 (sde_blk_<raster_ID>) 表(请参阅此主题的“栅格影像表”部分),但不使用栅格波段 (sde_bnd_<raster_ID>) 或栅格 (sde_ras_<raster_ID>) 表。

View a diagram of a raster dataset using ST_Raster storage in PostgreSQL.

虚线表示各列之间的隐含关系。

注注:

需要使用 Adobe Acrobat Reader 才能打开此文件。

XML 工作空间文档中的栅格

在 XML 文档中,栅格数据集使用 DataElement 标签修饰。该标签包含值“esri:DERasterDataset”。

<DataElement xsi:type="esri:DERasterDataset">
       <CatalogPath>/V=sde.DEFAULT/RD=m8db.rocket.qa_ras_seattle2_xf</CatalogPath> 
       <Name>m8db.rocket.qa_ras_seattle2_xf</Name> 
       <Children xsi:type="esri:ArrayOfDataElement">
          <DataElement xsi:type="esri:DERasterBand">
            <CatalogPath>/V=sde.DEFAULT/RD=m8db.rocket.qa_ras_seattle2_xf/RB=Band_1</CatalogPath> 
            <Name>Band_1</Name> 
            <DatasetType>esriDTRasterBand</DatasetType> 
            <DSID>-1</DSID> 
            <Versioned>false</Versioned> 
            <CanVersion>false</CanVersion> 
            <HasOID>true</HasOID> 
            <OIDFieldName>ObjectID</OIDFieldName> 
            <Fields xsi:type="esri:Fields">
              <FieldArray xsi:type="esri:ArrayOfField">
                <Field xsi:type="esri:Field">
                    <Name>ObjectID</Name> 
                    <Type>esriFieldTypeOID</Type> 
                    <IsNullable>false</IsNullable> 
                    <Length>4</Length> 
                    <Precision>0</Precision> 
                    <Scale>0</Scale> 
                    <Required>true</Required> 
                    <Editable>false</Editable> 
                </Field>
                <Field xsi:type="esri:Field">
                    <Name>Value</Name> 
                    <Type>esriFieldTypeInteger</Type> 
                    <IsNullable>true</IsNullable> 
                    <Length>0</Length> 
                    <Precision>0</Precision> 
                    <Scale>0</Scale> 
               </Field>
               <Field xsi:type="esri:Field">
                    <Name>Count</Name> 
                    <Type>esriFieldTypeInteger</Type> 
                    <IsNullable>true</IsNullable> 
                    <Length>0</Length> 
                    <Precision>0</Precision> 
                    <Scale>0</Scale> 
               </Field>
             </FieldArray>
         </Fields>
         <Indexes xsi:type="esri:Indexes">
           <IndexArray xsi:type="esri:ArrayOfIndex" /> 
         </Indexes>
         <IsInteger>true</IsInteger> 
         <MeanCellHeight>0.175996089009095</MeanCellHeight> 
         <MeanCellWidth>0.176000337991447</MeanCellWidth> 
         <Height>1024</Height> 
         <Width>2048</Width> 
         <PixelType>U8</PixelType> 
         <PrimaryField>1</PrimaryField> 
         <TableType>esriRasterTableValue</TableType> 
         <Extent xsi:type="esri:EnvelopeN">
            <XMin>-179.906382261841</XMin> 
            <YMin>-90.1303147686327</YMin> 
            <XMax>180.542309944643</XMax> 
            <YMax>90.089680376681</YMax> 
            <SpatialReference xsi:type="esri:GeographicCoordinateSystem">
   <WKT>GEOGCS["GCS_WGS_1984", DATUM["D_WGS_1984", SPHEROID["WGS_1984",6378137.0,298.257223563]], PRIMEM["Greenwich",0.0], UNIT["Degree",0.0174532925199433]]</WKT> 
          <XOrigin>-400</XOrigin> 
          <YOrigin>-400</YOrigin> 
          <XYScale>11258999068426.2</XYScale> 
          <ZOrigin>0</ZOrigin> 
          <ZScale>1</ZScale> 
          <MOrigin>0</MOrigin> 
          <MScale>1</MScale> 
          <XYTolerance>8.98315284119521E-09</XYTolerance> 
          <ZTolerance>2</ZTolerance> 
          <MTolerance>2</MTolerance> 
          <HighPrecision>true</HighPrecision> 
          <LeftLongitude>-180</LeftLongitude> 
         </SpatialReference>
        </Extent>
      </DataElement>
9/15/2013