PostgreSQL 地理数据库中的栅格数据集和栅格目录
栅格数据是在按行与列排列且大小相同的像元的数组中所显示的空间数据。栅格数据可由一个或多个栅格波段组成。有关栅格数据及其属性的完整说明,请参阅本帮助中的“了解栅格数据”一节。您可以从什么是栅格数据?开始阅读
ArcGIS Desktop 中的栅格
在 ArcGIS 中,栅格数据可存储在单个栅格数据集、栅格目录或镶嵌数据集中。有关这三种栅格存储方式的介绍,请参阅栅格数据的编排。
在目录树中,PostgreSQL 中的各个栅格数据集具有以下图标:
目录树中的栅格目录具有以下图标:
PostgreSQL 中,栅格目录和栅格数据集的名称包含数据库的名称、栅格目录或数据集的所有者名称以及栅格目录或栅格数据集本身的名称。
例如,m8db 数据库中由用户 rocket 所有的的栅格数据集 qa_ras_seattle2 将在目录树中以 m8db.rocket.qa_ras_seattle2 形式列出。
有关如何在地理数据库中存储镶嵌数据集的信息,请参阅 PostgreSQL 地理数据库中的镶嵌数据集。
PostgreSQL 数据库中的栅格表
PostgreSQL 数据库中的 ArcSDE 地理数据库可以将栅格数据存储在 PostgreSQL 的本地 bytea 列中,也可以按 ST_Raster 存储类型进行存储。
以 bytea 形式存储的栅格数据
将向业务表中添加栅格列,并且栅格列的每个单元格都包含对存储在单独栅格表中的栅格数据的引用。因此,业务表的每一行都引用整个栅格数据。
向 ArcSDE 地理数据库导入栅格数据时,会在所选业务表中添加一个栅格列。栅格列的每个像元都包含对存储在单独栅格表中的栅格数据的引用。因此,业务表的每一行都引用整个栅格数据。ArcSDE 限定每个业务表只能添加一个栅格列。
您可以根据自己的喜好对栅格列进行命名,但要符合 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 系统表中。
栅格影像表
实际的栅格影像存储在这些表中。
如果地理数据库中有栅格数据,则栅格表将仅显示在数据库中。
栅格辅助表用于存储影像色彩映射表、影像的统计数据以及可选位掩码(用于影像叠加和镶嵌)。
ArcSDE 会自动在栅格辅助表中存储所有现有影像的元数据,例如影像的统计数据、色彩映射表或位掩码。栅格辅助表的 rasterband_id 列是栅格波段表主键的外键引用。访问栅格波段的元数据时,ArcSDE 会借助此主/外键引用来连接两个表。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
rasterband_id |
integer |
表示栅格波段的数字;例如,带有两个栅格波段的栅格数据集将在此字段中有两个不同的值(1 和 2)。 |
非空 |
type |
integer |
可能的值包括 |
非空 |
object |
bytea |
包含实际数据,即色彩映射表索引、栅格统计数据或坐标变换 |
非空 |
栅格块表用于存储影像各波段的实际影像数据。
栅格块表存储每个栅格波段的像素。ArcSDE 根据用户定义的尺寸将像素分块。ArcSDE 没有规定默认尺寸;但是,用于存储 ArcSDE 地理数据库中的栅格数据的应用程序有默认尺寸。例如,地理处理工具和 ArcCatalog 使用每个块为 128 × 128 像素的默认栅格块尺寸。栅格块的尺寸以及压缩方法(如果指定了一个方法)决定每个栅格块的存储大小。应选择结合压缩方法后让栅格块表的每一行都适合 DBMS 的栅格块尺寸。
栅格块表包含 RASTERBAND_ID 列,该列是栅格波段表 RASTERBAND_ID 主键的外键引用。访问栅格波段的块时,这些表会借助主/外键引用连接在一起。
栅格块表根据分辨率逐渐减小的金字塔进行填充。金字塔的高度由应用程序所指定的等级数确定。通过应用程序(例如地理处理工具或 ArcCatalog)可定义等级、请求 ArcSDE 计算等级,或同时提供这两种功能。金字塔从底部或等级 0(包含影像的原始像素)开始。通过将之前等级的四个像素合并为当前等级下的单个像素,金字塔向顶点延伸。继续执行此过程直到 ArcSDE 到达顶点,该顶点可能是自动定义的或用户定义的。
金字塔的其他等级将栅格块数增加了三分之一。但是,由于可以指定等级数,金字塔的大小可能较小。金字塔的第一个等级将是底层的 25%。还需注意,金字塔的第一个等级可以忽略,这是可大大减小金字塔大小的因素之一。
构建金字塔时,大多数栅格都是通过按乘数 2 逐渐减采样前一等级直至顶点的方式创建的。当应用程序进行缩小操作并且栅格像元变得比分辨率阈值小时,ArcSDE 就会选择更高的一个金字塔等级。使用金字塔的目的是优化显示性能。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
rasterband_id |
integer |
表示栅格波段的数字;例如,带有两个栅格波段的栅格数据集将在此字段中有两个不同的值(1 和 2)。 |
非空 |
rrd_factor |
integer |
金字塔等级;金字塔等级从 0 开始并可从该等级开始增加。 |
非空 |
row_nbr |
integer |
切片行号位置 |
非空 |
col_nbr |
integer |
列行号位置 |
非空 |
block_data |
bytea |
存储在切片中的像素数据 |
非空 |
栅格波段表用于存储关于影像波段的信息。每个栅格波段都有一条对应的记录。
ArcSDE 地理数据库将栅格波段存储在栅格波段表中。ArcSDE 借助 RASTER_ID 列将栅格波段表与栅格表连接。栅格波段表列的 RASTER_ID 是栅格表主键的外键引用。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
rasterband_id |
integer |
表示栅格波段的数字;例如,带有两个栅格波段的栅格数据集将在此字段中有两个不同的值(1 和 2)。 |
非空 |
sequence_nbr |
integer |
栅格数据集内的栅格波段顺序 |
非空 |
raster_id |
integer |
栅格数据集的唯一标识符;对应于业务表的栅格列中的值 |
非空 |
name |
varchar(65) |
可选栅格波段名称 | |
band_flags |
integer |
包含有关波段属性的位掩码 |
非空 |
band_width |
integer |
波段的像素宽度 |
非空 |
band_height |
integer |
波段的像素高度 |
非空 |
band_types |
integer |
包含有关波段属性的位掩码 |
非空 |
block_width |
integer |
块的像素宽度 |
非空 |
block_height |
integer |
块的像素高度 |
非空 |
block_origin_x |
double precision |
栅格原点的 x 坐标 |
非空 |
block_origin_y |
double precision |
栅格原点的 y 坐标。 |
非空 |
eminx |
double precision |
栅格波段的最小 x 值 |
非空 |
eminy |
double precision |
栅格波段的最小 y 值 |
非空 |
emaxx |
double precision |
栅格波段中的最大 y 值 |
非空 |
emaxy |
double precision |
栅格波段中的最大 y 值 |
非空 |
cdate |
integer |
栅格波段的创建日期 |
非空 |
mdate |
integer |
栅格波段的上次修改日期 |
非空 |
栅格描述表用于存储栅格列内影像的描述。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
raster_id |
integer |
栅格数据集的唯一标识符;对应于业务表的栅格列中的值 |
非空 |
raster_flags |
integer |
保留以供今后使用 | |
description |
varchar(65) |
栅格数据集的描述 |
用于追踪栅格的其他系统表
与其他数据类型一样,可在 gdb_items 和 sde_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>