DB2 地理数据库中的 Terrain 数据集
Terrain 数据集是表示三维空间的表面。利用测量值(以要素类的形式存储)和规则生成不规则三角网 (TIN) 金字塔来表示高程。
源要素类可通过 terrain 数据集进行引用,也可嵌入到 terrain 数据集中。
有关 terrain 数据集的说明,请阅读《了解 terrain 数据集》(Understanding terrain datasets) 一书中的相关主题。可以阅读什么是 terrain 数据集?这一主题作为入门。
ArcGIS for Desktop 中的 terrain
在目录树中,terrain 数据集看起来与其他要素数据集相同,但它们包含 terrain。Terrain 使用以下图标表示:
在 DB2 中,地理数据库中的 terrain 数据集名称包含数据库名称、定位器所有者名称及定位器本身的名称。
例如,如果 terrain 数据集 napa_terrain 的所有者是用户 gis,并且所属地理数据库的名称为 gdb,则在目录树中显示为 GDB.GIS.Napa_terrain。
要查看哪些要素类参与了 terrain,请检查 terrain 属性。在以下示例中,您可以看到参与 terrain 的两个要素类(napa_sub_breaks 和 napa_sub_clip)以及一个嵌入式要素类 napasub。
IBM DB2 数据库中的 Terrain
作为数据集,terrain 数据集在地理数据库中与要素数据集相同的表中进行管理,另外在创建 terrain 数据集的用户的方案中,还会创建特定于 terrain 的表。这些表如下所示:
就周界上的数据涵盖范围而言,合成切片是不完整的。它们可能完全没有测量值,或在一个或多个拐角的邻域内没有测量值。要定义覆盖这些切片范围的表面,应使用周围切片中的切片数据。此表用于确定哪些切片是合成切片,以及哪些相邻切片提供数据来补完这些合成切片。对每个合成切片使用一条记录。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
ID |
INTEGER |
指向相邻切片的形状的唯一标识符 |
NOT NULL |
TILENR |
INTEGER |
合成切片编号 由 terrain 的切片系统定义。值 -1 被保留用于包含 terrain 的周长切片质心的记录。 |
NOT NULL |
EMPTYTILE |
SMALLINT |
值 -1 表示切片没有任何测量值。值 0 表示切片有一些数据,但不完整。 |
NOT NULL |
OTHERTILES |
ST_MULTIPOINT |
多点形状,其中存储提供测量值以补完合成切片的各个周围切片的质心。 |
脏区是指由于对一个或多个参与要素类中的要素进行编辑而失效的切片。此表用于记录这些失效的切片并记录发生此类编辑操作的要素类。对每个发生此类编辑的要素类使用一条记录。如果未进行任何编辑,则该表为空。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
ID |
INTEGER |
形状的唯一标识符 |
NOT NULL |
CLASSID |
INTEGER |
其中进行编辑的要素类的类标识符 |
NOT NULL |
TILECOUNT |
INTEGER |
由于对要素类进行编辑而产生的脏切片数 |
NOT NULL |
DIRTYAREA |
ST_MULTIPOINT |
多点形状,包含由于对要素类进行编辑而失效的切片质心 |
NOT NULL |
嵌入表用于存储嵌入的多点要素类。可能有 0 至 n 个嵌入表。它们是否存在取决于 terrain 是否具有任何嵌入的数据。对每个嵌入的要素类使用一个表。嵌入表具有作为 terrain 金字塔结构的一部分的双重用途。嵌入的数据按切片和金字塔等级进行分组。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
ID |
INTEGER |
形状的唯一标识符 |
NOT NULL |
TILEROW |
INTEGER |
嵌入点所属的 terrain 切片的行号 | |
TILECOL |
INTEGER |
嵌入点所属的 terrain 切片的列号 | |
RESOLUTION |
DECIMAL(31,8) |
表示点在什么金字塔等级下使用 由于金字塔等级是累积的,因此点参与级别时的分辨率将等于或大于自身分辨率。特例为 terrain 概貌。概貌等级的分辨率使用值 -1 表示。分配了此值的点会参与整个金字塔。 | |
POINTCOUNT |
INTEGER |
多点要素中的点数 |
NOT NULL |
NEIGHBORDATA |
SMALLINT |
表示点是否在切片内图廓线边界内;在外部的点用于保持切片区域的覆盖范围完整。值 0 表示点在切片内。-1 表示点在切片外。 |
NOT NULL |
SHAPE |
ST_MULTIPOINT |
嵌入的多点几何 |
InsideTiles 表用于记录哪些 terrain 切片位于 terrain 的数据区或插值区内。由于范围在不同等级之间可能有差异(例如,在不同金字塔等级中使用不同的裁剪多边形要素类),该表是按金字塔等级进行记录的。对每个金字塔等级使用一条记录。这包括概貌分辨率等级和全分辨率等级。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
ID |
INTEGER |
形状的唯一标识符 |
NOT NULL |
ZTOLERANCE | DECIMAL(31,8) |
值为 -1 的金字塔等级 A 的分辨率表示概貌等级。 |
NOT NULL |
INSIDETILES |
ST_MULTIPOINT |
存储数据切片质心的多点几何 |
MRFC 是非嵌入要素类的金字塔结构。只要引用的要素类的离散多点和隔断线折点参与全分辨率金字塔等级(它们也可以参与其他等级),则这些离散多点和折点就会存储在此处。数据按切片和金字塔等级进行分组。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
ID |
INTEGER |
形状的唯一标识符 |
NOT NULL |
TILEROW |
INTEGER |
金字塔点/折点所属的 terrain 切片的行号 | |
TILECOL |
INTEGER |
金字塔点/折点所属的 terrain 切片的列号 | |
RESOLUTION | DECIMAL(31,8) |
指示点在什么金字塔等级下使用(由于金字塔等级是累积的,因此点参与级别时的分辨率将等于或大于自身分辨率)。特例为 terrain 概貌。概貌等级的分辨率使用值 -1 表示。分配了此值的点会参与整个金字塔。 | |
POINTCOUNT |
INTEGER |
多点要素中的点数 |
NOT NULL |
NEIGHBORDATA |
SMALLINT |
表示点是否在切片内图廓线边界内;在外部的点用于保持切片区域的覆盖范围完整。值 0 表示点在切片内。-1 表示点在切片外。 |
NOT NULL |
SHAPE |
ST_MULTIPOINT |
多点几何 |
terrain props 表用于保存单个 terrain 数据集特定于版本的属性。这些属性包括点计数和范围。信息存储在 BLOB 中,用户不可通过表进行访问。但可以使用 terrain 的 ArcObjects API 访问信息。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
ID |
INTEGER |
记录的对象 ID |
NOT NULL |
PROPERTIES |
BLOB |
存储特定于版本的数据集属性 |
还会在 GDB_ITEMS 表中创建一个记录以追踪 terrain 数据集。terrain 表的名称中的 id 来自 GDB_ITEMS 表的 OBJECTID 字段。
由于 terrain 数据集是要素数据集的一部分,因此也可在 GDB_ITEMRELATIONSHIPS 表中追踪它们。要素数据集 UUID 对应于 ORIGINID,而要素类 UUID 在 GDB_ITEMRELATIONSHIPS 表中为 DESTID。terrain 数据集的其他表如下所示。示例 DTM_* 表名称中的 2 来自 GDB_ITEMS 表中的 OBJECTID 字段。
虚线表示各列之间的隐含关系。
XML 文档中的 Terrain
Terrain 数据集在 XML 文档中使用数据集类型 ersriDTTerrain 表示。
<DatasetType>esriDTTerrain</DatasetType>
以下是 napa_sub terrain 数据集的 XML 文档的一部分。下面摘录的 XML 文档包含数据集(包括数据源)的定义,一直到描述数据集中的第一个要素类。
<esri:Workspace xmlns:esri="http://www.esri.com/schemas/ArcGIS/9.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<WorkspaceDefinition xsi:type="esri:WorkspaceDefinition">
<WorkspaceType>esriRemoteDatabaseWorkspace</WorkspaceType>
<Version>RJP.WO2557</Version>
<Domains xsi:type="esri:ArrayOfDomain" />
<DatasetDefinitions xsi:type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DEFeatureDataset">
<CatalogPath>/V=RJP.WO2557/FD=sde.RJP.napa_sub</CatalogPath>
<Name>sde.RJP.napa_sub</Name>
<Children xsi:type="esri:ArrayOfDataElement">
<DataElement xsi:type="esri:DETerrain">
<Version>2</Version>
<CatalogPath>/V=RJP.WO2557/FD=sde.RJP.napa_sub/TERR=sde.RJP.napa_sub_terrain1</CatalogPath>
<Name>sde.RJP.napa_sub_terrain1</Name>
<DatasetType>esriDTTerrain</DatasetType>
<DSID>2</DSID>
<FeatureDatasetName>sde.RJP.napa_sub</FeatureDatasetName>
<Versioned>false</Versioned>
<CanVersion>false</CanVersion>
<ChildrenExpanded>true</ChildrenExpanded>
<MetadataRetrieved>false</MetadataRetrieved>
<FullPropsRetrieved>true</FullPropsRetrieved>
<PyramidType>0</PyramidType>
<TileSize>6000</TileSize>
<MaxShapeSize>5000</MaxShapeSize>
<MaxOverviewSize>50000</MaxOverviewSize>
<TerrainDataSources xsi:type="esri:ArrayOfTerrainDataSource">
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>875</FeatureClassID>
<FeatureClassName>sde.RJP.DTM_2_DISCONNECT_3</FeatureClassName>
<GroupID>1</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>1</SourceType>
<SurfaceFeatureType>18</SurfaceFeatureType>
<IsBase>true</IsBase>
<ApplyToOverview>true</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>0</ResolutionUpperBound>
<SourceName>napasub_embedded</SourceName>
<HeightField>Shape</HeightField>
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>874</FeatureClassID>
<FeatureClassName>sde.RJP.napa_sub_breaks</FeatureClassName>
<GroupID>2</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>0</SourceType>
<SurfaceFeatureType>1</SurfaceFeatureType>
<IsBase>true</IsBase>
<ApplyToOverview>false</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>2.6</ResolutionUpperBound>
<SourceName />
<HeightField>Shape</HeightField>
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
<TerrainDataSource xsi:type="esri:TerrainDataSource">
<Version>1</Version>
<FeatureClassID>873</FeatureClassID>
<FeatureClassName>sde.RJP.napa_sub_clip</FeatureClassName>
<GroupID>3</GroupID>
<SourceStatus>1</SourceStatus>
<SourceType>0</SourceType>
<SurfaceFeatureType>10</SurfaceFeatureType>
<IsBase>false</IsBase>
<ApplyToOverview>true</ApplyToOverview>
<AutoGeneralize>false</AutoGeneralize>
<ResolutionLowerBound>0</ResolutionLowerBound>
<ResolutionUpperBound>31</ResolutionUpperBound>
<SourceName />
<HeightField />
<TagValueField />
<ReservedFields xsi:type="esri:ArrayOfString" />
</TerrainDataSource>
</TerrainDataSources>
<TerrainPyramidLevelZTols xsi:type="esri:ArrayOfTerrainPyramidLevelZTol">
<TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol">
<Version>1</Version>
<PyramidLevelStatus>1</PyramidLevelStatus>
<PointCount>-1</PointCount>
<MaxScale>10000</MaxScale>
<Resolution>5</Resolution>
</TerrainPyramidLevelZTol>
<TerrainPyramidLevelZTol xsi:type="esri:TerrainPyramidLevelZTol">
<Version>1</Version>
<PyramidLevelStatus>1</PyramidLevelStatus>
<PointCount>-1</PointCount>
<MaxScale>20000</MaxScale>
<Resolution>10</Resolution>
</TerrainPyramidLevelZTol>
</TerrainPyramidLevelZTols>
</DataElement>
<DataElement xsi:type="esri:DEFeatureClass">