PostgreSQL 中地理数据库 (geodatabase) 内的 Terrain 数据集

Terrain 数据集是表示三维空间的表面。利用测量值(以要素类的形式存储)和规则生成不规则三角网 (TIN) 金字塔来表示高程。

源要素类可通过 terrain 数据集进行引用,也可嵌入到 terrain 数据集中。

有关 terrain 数据集的说明,请阅读《了解 terrain 数据集》(Understanding terrain datasets) 一书中的相关主题。可以阅读什么是 terrain 数据集?这一主题作为入门。

ArcGIS Desktop 中的 Terrain

在目录树中,terrain 数据集看起来与其他要素数据集相同,但它们包含 terrain。Terrain 使用以下图标表示:

PostgreSQL 中,地理数据库中的 terrain 数据集名称包含数据库名称、定位器所有者名称及定位器本身的名称。

例如,如果 terrain 数据集 topography_terrain 由用户 sasha 所有,则在名为 m8db 的地理数据库中该数据集将以 m8db.sasha.topograhy_terrain 的形式在目录树中列出。

下图中可以看到参与 terrain 的要素类,即 topo_break_lines、topo_clip_poly、topo_mass_points 和 topo_water_poly。为确定 terrain 数据集中是否存在嵌入的要素类,应检查 terrain 属性。右键单击 terrain,然后单击“数据源”选项卡。将列出所有用于创建该 terrain 的要素类。在本例中,未使用嵌入的要素类创建此 terrain。如果存在嵌入的要素类,那么在“Terrain 属性”对话框的“嵌入式”一栏中,将列出未显示在目录树中的要素数据集中的附加要素类,且该要素类将包含值 Yes。

Terrain 数据源属性
“Terrain 数据源属性”对话框显示用作 terrain 的数据源的要素类。

PostgreSQL 数据库中的 Terrain

作为数据集,terrain 数据集在地理数据库中与要素数据集相同的表中进行管理,另外在创建 terrain 数据集的用户的方案中,还会创建特定于 terrain 的表。这些表如下所示:

dtm_<id>_compositetiles

就周界上的数据涵盖范围而言,合成切片是不完整的。它们可能完全没有测量值,或在一个或多个拐角的邻域内没有测量值。要定义覆盖这些切片范围的表面,应使用周围切片中的切片数据。此表用于确定哪些切片是合成切片,以及哪些相邻切片提供数据来补完这些合成切片。对每个合成切片使用一条记录。

字段名

字段类型

描述

是否允许为空

id

integer

指向相邻切片的形状的唯一标识符

非空

tilenr

integer

合成切片编号

由 terrain 的切片系统定义。值 -1 被保留用于包含 terrain 的周长切片质心的记录。

非空

emptytile

smallint

值 -1 表示切片没有任何测量值。值 0 表示切片有一些数据,但不完整。

非空

othertiles

st_geometry

多点形状,其中存储提供测量值以补完合成切片的各个周围切片的质心。

dtm_<id>_dirtyarea

脏区是指由于对一个或多个参与要素类中的要素进行编辑而失效的切片。此表用于记录这些失效的切片并记录发生此类编辑操作的要素类。对每个发生此类编辑的要素类使用一条记录。如果未进行任何编辑,则该表为空。

字段名

字段类型

描述

是否允许为空

id

integer

形状的唯一标识符

非空

classid

integer

其中进行编辑的要素类的类标识符

非空

tilecount

integer

由于对要素类进行编辑而产生的脏切片数

非空

dirtyarea

st_geometry

多点形状,包含由于对要素类进行编辑而失效的切片质心

非空

dtm_<id>_embed_#

嵌入表用于存储嵌入的多点要素类。可能有 0 至 n 个嵌入表。它们是否存在取决于 terrain 是否具有任何嵌入的数据。对每个嵌入的要素类使用一个表。嵌入表具有作为 terrain 金字塔结构的一部分的双重用途。嵌入的数据按切片和金字塔等级进行分组。

字段名

字段类型

描述

是否允许为空

id

integer

形状的唯一标识符

非空

tilerow

integer

嵌入点所属的 terrain 切片的行号

tilecol

integer

嵌入点所属的 terrain 切片的列号

resolution

numeric(38,8)

表示点在什么金字塔等级下使用

由于金字塔等级是累积的,因此点参与级别时的分辨率将等于或大于自身分辨率。特例为 terrain 概貌。概貌等级的分辨率使用值 -1 表示。分配了此值的点会参与整个金字塔。

pointcount

integer

多点要素中的点数

非空

neighbordata

smallint

表示点是否在切片内图廓线边界内;在外部的点用于保持切片区域的覆盖范围完整。值 0 表示点在切片内。-1 表示点在切片外。

非空

shape

st_geometry

嵌入的多点几何

dtm_<id>_insidetiles

InsideTiles 表用于记录哪些 terrain 切片位于 terrain 的数据区或插值区内。由于范围在不同等级之间可能有差异(例如,在不同金字塔等级中使用不同的裁剪多边形要素类),该表是按金字塔等级进行记录的。对每个金字塔等级使用一条记录。这包括概貌分辨率等级和全分辨率等级。

字段名

字段类型

描述

是否允许为空

id

integer

形状的唯一标识符

非空

ztolerance

numeric(38,8)

值为 -1 的金字塔等级 A 的分辨率表示概貌等级。

非空

insidetiles

st_geometry

存储数据切片质心的多点几何

dtm_<id>_mrfc

MRFC 是非嵌入要素类的金字塔结构。只要引用的要素类的离散多点和隔断线折点参与全分辨率金字塔等级(它们也可以参与其他等级),则这些离散多点和折点就会存储在此处。数据按切片和金字塔等级进行分组。

字段名

字段类型

描述

是否允许为空

id

integer

形状的唯一标识符

非空

tilerow

integer

嵌入点所属的 terrain 切片的行号

tilecol

integer

金字塔点/折点所属的 terrain 切片的列号

resolution

numeric(38,8)

表示点在什么金字塔等级下使用

由于金字塔等级是累积的,因此点参与级别时的分辨率将等于或大于自身分辨率。特例为 terrain 概貌。概貌等级的分辨率使用值 -1 表示。分配了此值的点会参与整个金字塔。

pointcount

integer

多点要素中的点数

非空

neighbordata

smallint

表示点是否在切片内图廓线边界内;在外部的点用于保持切片区域的覆盖范围完整。值 0 表示点在切片内。-1 表示点在切片外。

非空

shape

st_geometry

多点几何

dtm_<id>_props

terrain props 表用于保存单个 terrain 数据集特定于版本的属性。这些属性包括点计数和范围。信息存储在 BLOB 中,用户不可通过表进行访问。但可以使用 terrain 的 ArcObjects API 访问信息。

字段名

字段类型

描述

是否允许为空

id

integer

记录的对象 ID

非空

properties

bytea

存储特定于版本的数据集属性

还会在 gdb_items 表中创建一个记录以追踪 terrain 数据集。terrain 表的名称中的 id 来自 gdb_items 表的 objectid 字段。

由于 terrain 数据集是要素数据集的一部分,因此也可在 gdb_itemrelationships 表中追踪它们。要素数据集 uuid 对应于 col_originalid,而要素类 uuidgdb_itemrelationships 表中为 destid。terrain 数据集的其他表如下所示。DTM_* 表名称中的 1 来自 gdb_items 表中的 objectid 字段。

注注:

由于数据集中不存在嵌入的要素类,因此未创建对应的 dtm_1_embed 表。

PostgreSQL 中的 Terrain 数据集表

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

注注:

当使用 PostGIS 几何存储时,Terrain 数据集的使用将受到限制。

XML 工作空间文档中的 Terrain

Terrain 数据集在 XML 文档中使用数据集类型 ersriDTTerrain 表示。

<DatasetType>esriDTTerrain</DatasetType>

以下是 terrain 数据集的 XML 文档的一部分。下面摘录的 XML 文档包含数据集(包括数据源)的定义,一直到描述数据集中的第一个要素类。

 <esri:Workspace xmlns:esri="http://www.esri.com/schemas/ArcGIS/10" 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>sde.DEFAULT</Version> 
  <Domains xsi:type="esri:ArrayOfDomain" /> 
  <DatasetDefinitions xsi:type="esri:ArrayOfDataElement">
    <DataElement xsi:type="esri:DEFeatureDataset">
      <CatalogPath>/V=sde.DEFAULT/FD=m8db.sasha.topography</CatalogPath> 
      <Name>m8db.sasha.topography</Name> 
      <Children xsi:type="esri:ArrayOfDataElement">
        <DataElement xsi:type="esri:DETerrain">
          <Version>1</Version> 
              <CatalogPath>/V=sde.DEFAULT/FD=m8db.sasha.topography/TERR=m8db.sasha.topography_terrain</CatalogPath> 
          <Name>m8db.sasha.topography_terrain</Name> 
          <DatasetType>esriDTTerrain</DatasetType> 
          <DSID>1</DSID> 
          <FeatureDatasetName>m8db.sasha.topography</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>874</FeatureClassID> 
              <FeatureClassName>m8db.sasha.topo_break_lines</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>m8db.sasha.topo_clip_poly</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>
           <TerrainDataSource xsi:type="esri:TerrainDataSource">
              <Version>1</Version> 
              <FeatureClassID>873</FeatureClassID> 
              <FeatureClassName>m8db.sasha.topo_mass_points</FeatureClassName> 
              <GroupID>4</GroupID> 
              <SourceStatus>1</SourceStatus> 
              <SourceType>0</SourceType> 
              <SurfaceFeatureType>2</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>
           <TerrainDataSource xsi:type="esri:TerrainDataSource">
              <Version>1</Version> 
              <FeatureClassID>873</FeatureClassID> 
              <FeatureClassName>m8db.sasha.topo_water_poly</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">

相关主题


7/10/2012