创建要素类时,必须指定若干用于定义其数据结构的要素类属性。
大多数情况下,最佳选择是接受这些属性的默认值。 不过,此部分将对每个要素类属性进行说明,以便您能够了解什么时候以及为什么需要使用自定义值(而不是默认值),以及更改这些值将对数据产生什么影响。
能否创建适应于数据模型的适当的要素类,将取决于以下要素类属性。
名称和别名
创建要素类时,请提供一个名称以指明要素类中所存储的数据。
要素类名称在数据库或地理数据库中必须唯一,不能存在多个同名的要素类。 也就是说,不允许在同一地理数据库中存在具有相同名称的两个要素类,即使这两个要素类位于不同的要素数据集中。
要确保要素类名称唯一,ArcGIS 使用完全限定的要素类名称以防止可能出现的重复名称。 完全限定的要素类名称可能会在要素类名称前面附加用于存储要素类的方案的名称,还可能在前面附加存储要素类的数据库的名称。 如果完全限定名称中的一个组成部分是唯一的,则要素类名称被视为唯一。
下图显示了在不同类型的地理数据库中创建的同一个要素类 Hurricane_Paths 的示例。 在所有示例中,地理数据库的名称均为 Florida。 对于企业级地理数据库示例,要素类所有者名为 GIS。
下表将上图中的数字与其对应的数据存储类型、描述和要素类存储在数据库或地理数据库中时应用的完全限定名称结构进行了关联。
图像编号 | 数据存储type | 描述 |
---|---|---|
1 | 文件地理数据库 (.gdb) | 仅会使用提供的表名称或要素类名称。 完全限定要素类名称的结构会显示为 [FeatureClassName]。 |
2 | 移动地理数据库 (.geodatabase) | 移动地理数据库在 SQLite 数据库中构建,包含逻辑数据库名称和物理数据库名称。 物理数据库名称由文件路径、用户提供的数据库名称和文件扩展名构成。 但是,无论创建移动地理数据库时提供的物理数据库名称为何,SQLite 始终使用保留的主数据库名称 main 作为逻辑名称。 完全限定要素类名称的结构会显示为 [main].[FeatureClassName]。 |
3 | 在某些 ArcGIS 支持的数据库(例如 PostgreSQL)中,数据库名称或数据源名称也是完全限定要素类名称的一部分。 完全限定要素类名称的结构会显示为 [DatabaseName].[SchemaName].[FeatureClassName]。 | |
4 | 在数据库和企业级地理数据库(例如 Oracle 和 SQL Server)中,ArcGIS 仅会在要素类名称之前附加用于存储要素类的方案的名称。 完全限定要素类名称的结构会显示为 [SchemaName].[FeatureClassName]。 |
要素类和表名称规则和限制
下表列出了受支持的要素类和表名称字符规则:
字符 | 名称开头 | 其他位置 | 别名中 |
---|---|---|---|
字母 (A-Z) | |||
下划线 ( _ ) | |||
数字 (0-9) | |||
空间 | |||
符号(下划线除外) | |||
上标字母和数字 | |||
下标字母和数字 |
其他要素类和表名称规则和限制如下:
- 要素类和表名称中不能包含保留字,例如 select 或 add。有关其他保留字的信息,请查阅数据库管理系统 (DBMS) 文档。
- 不支持具有以下前缀的要素类名或表名:
- gdb_
- sde_
- delta_
- 要素类名称和表名称的长度取决于基础数据库。 有关数据库特定限制的详细信息,请参阅文件地理数据库的大小和名称限制、移动地理数据库的大小和名称限制或数据库数据和 ArcGIS。
设置别名
在地理数据库中创建表或要素类时,可以为其指定别名。 别名就是一个替代名称。 如果为表或要素类指定了一个别名,则此名称就是用户将表或要素类添加到地图时将会看到的名称。 用户可以转到属性对话框的源选项卡,以查看表或要素类的名称。
使用地理处理工具在地理数据库中创建要素类或表时,不存在用于指定别名的参数。 但是,可以在属性对话框的源选项卡中设置要素类或表的别名。
- 在目录窗格中右键单击要素类或表。
- 单击属性。
- 单击源选项卡。
- 单击别名属性以启用名称编辑。
- 键入一个别名,然后单击确定,设定该要素类或表的别名。
要素类的类型
矢量要素(带有矢量几何的地理对象)是一种常用的地理数据集,其用途广泛,非常适合表示带有离散边界的要素(例如街道、州和宗地)。 要素是一个对象,可将其地理制图表达(通常为点、线或面)存储为行中的一个属性(或字段)。 在 ArcGIS 中,要素类是数据库表中存储有公共空间制图表达和属性集的要素的同类集合,例如,线要素类用于表示道路中心线。
注:
创建要素类时,将要求您设置要素的类型以定义要素类的类型(点、多点、折线或多面体)。
通常,要素类是点、线或面的专题集合,但存在几种要素类类型。 在数据库和地理数据库中支持前三种类型。 后四个仅适用于地理数据库。
- 点 - 表示过小而无法表示为线或面以及点位置(如 GPS 观测值)的要素。
- 线 - 表示形状和位置过窄而无法表示为区域的地理对象(如,街道中心线与河流)。 也使用线来表示具有长度但没有面积的要素,如等值线和边界。
- 面 - 一组具有多个边的面要素,表示同类要素类型(如州、县、宗地、土壤类型和土地使用区域)的形状和位置。
- 注记 - 包含表示文本渲染方式的属性的地图文本。 除了每个注记的文本字符串,还包括一些其他属性(例如,用于放置文本的形状点、其字体与字号以及其他显示属性)。 注记也可以是要素关联的,并可包含子类。
- 尺寸注记 - 一种可显示特定长度或距离(例如,要指示建筑物某一侧或地块边界或两个要素之间距离的长度)的特殊注记类型。 在 GIS 的设计、工程和公共事业应用中,经常会使用尺寸注记。
- 多点 - 由多个点组成的要素。 多点通常用于管理非常大的点集合数组(如激光雷达点聚类),可包含数以亿计的点。 对于此类点几何使用单一行是不可行的。 将这些点聚类为多点行,可使地理数据库能够处理海量点集。
- 多面体 - 一种 3D 几何,用于表示在三维空间中占用离散区域或体积的要素的外表面或壳。 多面体由平面 3D 环和三角形构成,多面体将组合使用这两种形状以建立三维壳模型。 您可以使用多面体来表示从简单对象(如,球体和立方体)到复杂对象(如,等值面和建筑物)的任何事物。
- 3D 对象 - 一种 3D 几何,专门用于表示在三维空间中占用离散区域或体积的要素的外表面或壳的附加格式支持(例如材料)。 您可以使用 3D 对象以较高的细节水平表示材料,从而支持光泽度或粗糙度等美感。 您可以在简单或高级对象(例如球体和立方体)以及复杂结构(例如等值面和建筑材料)上使用它们。 3D 对象使用高级关联表存储材料的多个组件。 这些表,以及平面 3D 环和三角形,将共同用于建立三维壳模型。
几何属性
创建要素类时,对于三维数据,可以选择坐标系统中是否包含测量 (m) 值或 z 值。
是否需要 m 值或 z 值由正在使用的数据类型决定。
通过在数据中包含 m 值,可允许在点坐标的折点处存储属性值。 如果是线性参考,m 值会将测量值存储在沿线状要素分布的折点中。 这将允许沿线找到位置。 如果要对数据使用线性参考或动态分段应用,则其坐标中必须包含 M 值。
Z 值用于表示特定表面位置的代表高程或其他属性。 在高程或地形模型中,z 值表示高程;在其他类型的表面模型中,它表示某些特定属性(如年降雨量、人口和其他表面测量值)的密度或数量。 如果要构建高程模型、创建地形或处理任意 3D 表面,则坐标中必须包含 z 值。
坐标系
创建要素类时,必须选择(也可能需要创建)一种坐标系。 坐标系与容差和分辨率值一起组成要素类的空间参考。 空间参考描述要素实际所处的位置。
可通过多种方式为新要素类定义坐标系:
- 选择一个 ArcGIS 随附的预定义坐标系。 浏览至能够准确代表数据模型中区域的地理坐标系或投影坐标系。
- 导入由另一要素类使用的坐标系参数。 如果想要使用另一个要素类的坐标系作为模板,可选择浏览到该要素类并导入以获取其坐标系。
- 定义新的自定义坐标系。 可输入值来创建符合您要求的坐标系。
如果让坐标中包含 z 值,还需要指定垂直坐标系。 垂直坐标系对 z 值进行地理配准,通常用来指示高程。 垂直坐标系包含大地基准或高程基准、测量的线性单位、轴方向和垂直位移。
测量值不具有坐标系。
如果数据没有坐标系信息或您不知道要使用哪个坐标系,可选择未知坐标系。
也可以通过选择复制并修改现有坐标系来编辑其属性。
容差
地理数据库中的空间参考还包含容差值、x,y 坐标、z 坐标和 m 坐标,它们均具有反映坐标数据准确性的相关容差值。 容差值为坐标之间的最小距离。 如果一个坐标在另一个坐标的容差值范围内,则会将二者视为同一位置。 在关系运算或拓扑运算中需要确定两个点是否足够近而成为一个坐标点,或两个点是否足够远而作为两个独立的坐标点时,可使用该设置。
默认容差设定值为 0.001 米,或者为其等效值(以地图单位表示)。 这是默认分辨率值的 10 倍,大多数情况下推荐使用此设置。 允许的最小容差值是分辨率值的两倍。 如果容差值设置得较大,则会获得较低的坐标数据精度;相反,如果容差值设置得较小,则会获得较高的坐标数据精度。
注:
对于关系运算和拓扑运算,不同的容差值可能会产生不同的答案。 例如,如果使用最小容差,两个几何体可能属于不相交几何(没有共有的点),如果使用较大的容差,则它们可能会属于接触几何。
提示:
可在创建要素类工具的环境选项卡中设置容差属性。
分辨率和值域范围
要素类或要素数据集的所有坐标均根据所选坐标系进行地理配准,然后被捕捉到格网。 此格网由分辨率定义,分辨率用来确定坐标值的精度(即,有效数字位数)。 分辨率确定了覆盖要素类或要素数据集的空间范围的格网网格的精细度。。 所有坐标均捕捉到此格网,而分辨率定义了格网的各条线之间的距离。
分辨率值的单位与相关坐标系的单位相同。 例如,如果空间参考所使用的投影坐标系的单位是米,则分辨率值的单位也定义为米。 所用的分辨率值至少要比容差值小 10 倍。
默认(和建议使用的)分辨率值是 0.0001 米 (1/10 mm),或者为其等效值(以地图单位表示)。
例如,如果要素类以美国国家平面英尺为单位进行存储,则默认精度为 0.0003281 英尺(0.003937 英寸)。 如果坐标以经纬度表示,则默认分辨率为 0.000000001 度。
对于未知坐标系或 m 值,请将分辨率设为数据类型所对应的值,而不必明确设置测量单位。
提示:
可在创建要素类工具的环境选项卡中设置分辨率和域范围属性。
配置关键字
在创建表或要素类时,可指定配置关键字来微调数据的存储方式。 配置参数将被组合为一个或多个配置关键字,其中一个关键字为 DEFAULTS 配置关键字,用于指定默认存储参数。
大多数情况下,应使用 DEFAULT 关键字。 但是在某些情况下,在创建特定数据集或数据类型时可能要指定其他配置关键字,以将其性能最大化或对其在数据库中的存储方式的某一方面进行改善。
下面是配置关键字的一些示例及其应用:
- DEFAULT - 对于大多数地理数据库应用,此关键字会使用合理的默认配置和存储设置。
- MAX_FILE_SIZE_256TB - 如果将一个特别大的图像导入文件地理数据库,可指定 MAX_FILE_SIZE_256TB 配置关键字,从而允许地理数据库中栅格数据集最大可达 256 TB。
- TEXT_UTF16 - 如果将包含中文字符的要素类复制到文件地理数据库,可指定 TEXT_UTF16 配置关键字,这样属性列中的文本字符将以 UTF-16 格式进行存储,从而更高效地存储中文字符。
字段和字段属性
使用创建要素类向导或创建要素类工具创建要素类时,默认最初仅将地理数据库维护的字段添加到要素类中。 可以将自有字段添加到字段视图中的要素类。 字段视图可用于指定每个字段的特定属性,如字段类型和可存储在字段中的最大数据量。
所有字段均具有如下属性:
- Alias - 这是要素类字段的备用名称。 与字段的真实名称不同,别名不需要遵守数据库的限制,可包含空格和特殊字符,并允许以数字开头。 您只能为地理数据库中的要素类指定字段别名。
- Allow Nulls - 这会在创建字段时控制该字段是否具有“NOT NULL”约束。 如果“允许为空”设为“否”,数据库中的字段定义将包含“NOT NULL”约束。 如果保持默认设置“是”,则字段将为 NULLABLE。
注:
当且仅当数据库中的字段具有 NOT NULL 约束时,地理数据库模型才会插入一个空值(数字 = 0,文本 = " "),而不是数据库 NULL。
- Default Value:当使用 ArcGIS Pro 编辑工具创建新要素或对象时,可输入用来自动填充该要素或对象的默认值。 只能为地理数据库中的要素类指定默认字段值。
- Length - 这是文本字段的属性,用于确定可输入的最大字符数。
所有要素类都具有一组必填字段,用于记录要素类中任意特定对象状态。 创建要素类时会自动创建这些必填字段,且无法删除。 必填字段也可能具有一些必要的属性,例如,它们的属性域属性。 无法修改必填字段的必需属性。
例如,在面要素类中,OBJECTID 和 SHAPE 即为必填字段。 它们确实具有一些可修改的属性(例如,它们的几何类型),但不能删除这些字段。
如果在地理数据库中创建线要素类,则会在该要素类中自动添加一个附加字段,用以记录线的长度。 如果创建面要素类,则会自动添加两个附加字段,用以记录每个面要素的长度(周长)和面积。 这些值的测量单位取决于对要素类定义的空间参考。 根据使用的数据库和空间类型,这些字段的名称会有所不同。 这些字段是必填字段,不能修改。
对于某些字段名称,在 ArcGIS 中会显示其存储在企业级地理数据库中的要素类的全限定名称。 例如,如果创建或导入了包含名为 AREA 的字段的面要素类,则会在该名称前附加数据库、方案和要素类名称。 该名称将会出现在要素类的属性表中。 也就是说,对于 MUSEUM 数据库的 PROF 方案中所存储的名为 ARCHSITES 的面要素类,AREA 字段如下所示:
MUSEUM.PROF.ARCHSITES.AREA
以下列出了企业级地理数据库中包含的所有完全限定的字段名称:
- FID
- AREA
- LEN
- POINTS
- NUMOFPTS
- ENTITY
- EMINX
- EMINY
- EMAXX
- EMAXY
- EMINZ
- EMAXZ
- MIN_MEASURE
- MAX_MEASURE
对于这种情况,要考虑使用不同的字段名称或字段别名。
导入字段
创建要素类时,可选择从另一个要素类或表中导入字段。 该选项允许使用另一个要素类或表作为模板,用于为要创建的要素类或表定义字段。 导入字段后,可编辑字段名称、数据类型以及属性。
如果在要素类创建过程中导入字段,则不会影响必填字段。 例如,如果将新要素类的几何类型属性设置为存储点,当从某个要素类(其中 SHAPE 字段的几何类型属性设置为存储面)导入字段定义时,不会覆盖要素类的几何类型。
注:
导入字段时,如果导入了任何高精度日期字段,则这些字段将导入为低精度日期。 使用将日期字段迁移至高精度地理处理工具将表中的日期字段迁移至高精度。 高精度日期字段支持采用 mm/dd/yyyy hh:mm:ss.sss 形式的毫秒级时间。
分割模型
默认情况下,创建线或面要素类时,会在要素类上自动定义分割模型。 分割模型用于确定在编辑过程中分割要素时如何划分表中要素的几何及其属性。
分割模型具有以下两种可以定义的行为:
分割模型名称中的正斜杠表示正在分割的要素类中要素上所发生操作有序列表。 更新/插入是默认的分割模型行为,大多数用户无需更改。 当您有特定的建模要求(例如匹配互操作性和数据转换特定格式,并需要将分割标识为删除原始要素)时,可以使用删除/插入/插入分割模型。
除了在要素类上定义分割模型外,还可以在关系类上定义分割策略。 关系类分割策略用于确定在编辑过程中,当分割原始要素类中的要素时,如何处理目标表中的相关记录。 根据关系类的类型(简单或复合),可以定义不同的分割策略行为,其中包括默认(简单)、默认(复合)和复制相关对象。
有关如何设置和使用此关系类属性的详细信息,请参阅关系类分割策略。
可以使用以下两种方法之一设置要素类的分割模型:
- 要素类属性 - 在要素类属性对话框的源选项卡中,向下滚动到分割模型。 单击分割模型旁边的单元格启用下拉列表。 从列表中选择一个分割模型将填充设置要素类分割模型地理处理工具并在后台运行该工具。
- 设置要素类分割模型工具 - 使用设置要素类分割模型地理处理工具更改要素类的分割模型。
注:
如果输入要素类来自企业级地理数据库,则您必须是数据所有者才能运行此工具。
更新/插入
默认情况下,当创建更新/插入分割模型时,将在要素类上对其进行设置。 因此,当在编辑过程中分割此要素类中的要素时,原始要素将更新成为最大的要素,较小的要素将作为新行插入表中。
示例(更新/插入):
下图显示了当电缆要素类分割模型设置为默认值更新/插入时,分割单个电缆 OBJECTID 2 的前后状态。 在分割之前,已选择第一行 OBJECTID 2,并使用分割编辑工具分割此所选要素。 分割后,请注意第一行 OBJECTID 2 保持不变,并且其几何和 OBJECTID 属性值已更新。 这表明 OBJECTID 2 包含分割后最大的要素,较小的要素已作为新行 OBJECTID 5 插入表中。 分割后,OBJECTID 2 和 OBJECTID 5 的总长度与分割之前 OBJECTID 2 的原始长度相同。
删除/插入/插入
当将要素类的分割模型设置为删除/插入/插入时,如果在编辑过程中分割了该要素类中的要素,则分割操作会导致分割的原始要素被删除,然后将分割要素的两个部分均作为新要素和新行插入表中。
注:
在低于 ArcGIS Pro 2.6 或 ArcGIS Enterprise 10.8.1 的版本中,无法打开设置为删除/插入/插入分割模型的要素类。
示例(删除/插入/插入):
下图显示了当电缆要素类分割模型已设置为更新/插入时,分割单个电缆 OBJECTID 2 的之前和之后。 在分割之前,已运行设置要素类分割模型地理处理工具以将分割模型更改为删除/插入/插入。 已选择第一行 OBJECTID 2,并将使用分割编辑工具用于分割此所选要素。 分割后,请注意第一行 OBJECTID 2 已被删除,并已插入两个新行 OBJECTID 6 和 OBJECTID 7。 分割后,插入的两个新要素的总长度与分割前原始要素的长度相同。
警告:
如果在要素类上将分割模型设置为删除/插入/插入注册为版本化,并且在两个版本(例如默认版本和子版本)中以两种方式拆分同一要素,则由于已删除原始要素并已插入两个新要素,因此不会显示任何冲突。 因此,最终子版本将包含协调时分割要素的所有变体。 如果使用更新/插入默认分割模型,并且在两个版本中以两种方式拆分同一要素,则将生成更新/更新冲突,警告用户进行的编辑存在问题。
要素类属性
可以在要素类属性对话框的资源选项卡中查看要素类,然后向下滚动到分割模型。
范围
要素类的空间范围属性基于要素类中的所有坐标最后的已知空间范围。 该范围属性不会在每次编辑要素类中的要素时更新。 这意味着范围属性中的值可能不包含要素的实际空间范围。 可以重新计算要素类范围或手动设置范围值。
注:
范围属性用于某些空间查询操作,因此当手动设置范围值时,这些值应始终等于 ArcGIS Pro 重新计算的值或等于更大的范围值。