PostgreSQL 地理数据库中的要素类
要素类是具有相同几何类型(点、线、面、多点、注记、尺寸或多面体)的地理要素集合。例如,可将表示某条铁路沿线所有车站的点存储于一个要素类中。而在另一个要素类中,可存储表示所有铁轨的线。
本主题介绍要素类在目录窗口、数据库管理系统 (DBMS) 和 XML 文档中的显示方式。
ArcGIS for Desktop 中的要素类
在 ArcGIS for Desktop 中可创建七种要素类:点、多点、线、面、注记、尺寸和多面体。
根据图标可在目录树中看出要素类的类型。下表显示了每种要素类的图标。
要素类图标 |
要素类类型 |
---|---|
点或多点 | |
线 | |
面 | |
注记 | |
尺寸 | |
多面体 |
在 PostgreSQL 中,目录树中显示的要素类名称包括要素类所在数据库的名称、拥有该要素类的用户的名称以及要素类本身的名称。
例如,如果要素类 parcels 为用户 harley 所有,并且所在的地理数据库名为 stegageo,则该要素类在目录树中的名称为 stegageo.harley.parcels。
有关不同类型要素类的说明,请参见要素类基础知识。
PostgreSQL 数据库中的要素类
PostgreSQL 数据库中的要素类地理数据库采用以下两种几何存储类型中的一种:ST_Geometry 或 PostGIS 几何。
所有要素类都有一个存储属性信息、对象 ID 和 Shape 字段的基表(又称业务表)。对象 ID 和 Shape 字段可以有不同的名称,但它们必须位于要素类的基表中。
PostgreSQL 数据库中采用 ST_Geometry 存储的要素类
默认情况下,在 PostgreSQL 数据库管理系统 (DBMS) 的地理数据库中创建的要素类采用 ST_Geometry 存储。这意味着 ST_Geometry 列将被添加到要素类的业务表中用来存储空间属性。
ST_Geometry 为非实例化抽象超类,其子类可实例化。有关详细信息,请参见什么是 ST_Geometry 存储类型?。
使用 ST_Geometry 存储通过 ArcGIS 创建要素类时,将在所有者的方案中创建带 ST_Geometry 列的业务表。此外,记录还将添加到 sde 用户方案中的 sde_layers、sde_table_registry、sde_geometry_columns、sde_column_registry、sde_spatial_references(如果定义了空间参考)和 gdb_items 表中以追踪要素类信息。sde 用户方案中的 gdb_itemtypes 表定义数据类型,此例中为要素类。
加载了数据后,数据库中将出现多个 i 表和存储过程。这些存储过程和 i 表用于为要素类生成要素 ID。i 表的名称中包含一个数字。该数字对应 sde_table_registry 表中要素类的 registration_id。强烈建议不要对这些表和存储过程进行编辑,而且也不支持这种编辑操作。
View a diagram of a feature class using ST_Geometry storage in PostgreSQL.
需要使用 Adobe Acrobat Reader 才能打开此文件。
虚线表示各列之间的隐含关系;实线表示各列之间明确定义的关系。
PostgreSQL 数据库中采用 PostGIS 几何存储的要素类
如果安装了 PostGIS 并且使用 PostGIS 模板创建数据库,则可使用扩展的熟知文本 (EWKT) 和扩展的熟知二进制 (EWKB) 空间类型来创建要素类。使用这种方法时,几何列将被添加到业务表中用来存储要素几何。在地理数据库中,这种几何存储类型称为 PG_GEOMETRY。
默认情况下,DEFAULTS DBTUNE 配置关键字中的 GEOMETRY_STORAGE 参数将被设置为 ST_GEOMETRY。如果要对大多数要素类使用 PG_GEOMETRY 存储类型,则可更改 DEFAULTS 关键字中的 GEOMETRY_STORAGE 参数,将其设置为 PG_GEOMETRY。(使用 sdedbtune 命令可更改 DBTUNE 参数设置。)也可以在通过 ArcGIS 或 ArcSDE 命令创建要素类时指定 PG_GEOMETRY 关键字。使用 PG_GEOMETRY 存储类型在 ArcGIS 中创建的要素类将在所有者方案中创建包含几何列的业务表。记录将被添加到 SDE 方案中所有与采用 ST_GEOMETRY 存储类型创建的要素类相同的表中。另外,还会将一条记录添加到公共方案中的 geometry_columns 表。因此,对于任何创建采用 PG_GEOMETRY 存储类型的数据的用户来说,必须对 public.geometry_columns 表具有 SELECT、INSERT、UPDATE 和 DELETE 权限。
因为不存在可用来对 public.geometry_columns 表中存储的表名称进行更新的 PostGIS 功能,所以无法对使用 PG_GEOMETRY 存储类型创建的要素类进行重命名。对要素类重命名将会在 public.geometry_storage 表中生成一个孤立行。
View a diagram of a feature class using PostGIS geometry storage in PostgreSQL.
需要使用 Adobe Acrobat Reader 才能打开此文件。
虚线表示各列之间的隐含关系;实线表示各列之间明确定义的关系。
有关地理数据库中 PostGIS 几何存储的详细信息,请参阅 ArcGIS 和 PostGIS 几何类型。
XML 工作空间文档中存储的要素类
要素类在 DataElement 元素中进行定义。要素类的 DataElement 标签设置为 esri:DEFeatureClass 类型。要素类 DataElement 中还有定义要素类的其他元素,例如 Field、Domain、ConfigurationKeyword 和 SpatialReference 元素。
<DataElement xsi:type="esri:DEFeatureClass">
<CatalogPath>/V=sde.DEFAULT/FC=stegageo.harley.parcels</CatalogPath>
<Name>stegageo.harley.parcels</Name>
<DatasetType>esriDTFeatureClass</DatasetType>
<DSID>13</DSID>
<Versioned>true</Versioned>
<CanVersion>true</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>10</Precision>
<Scale>0</Scale>
<Required>true</Required>
<Editable>false</Editable>
<AliasName>OBJECTID</AliasName>
<ModelName>OBJECTID</ModelName>
</Field>
用于定义要素类的所有其他元素
</DataElement>