定义要素类属性
创建要素类时,必须指定若干用于定义其数据结构的要素类属性。
大多数情况下,最佳选择是接受创建要素类向导所提供的默认属性值。不过,此部分将对每个要素类属性进行说明,以便您能够了解什么时候以及为什么需要使用自定义值(而不是默认值),以及更改这些值将对数据产生什么影响。
能否创建适应于数据模型的适当的要素类,将取决于以下要素类属性:
名称/别名
要素类名称是标识要素类的唯一句柄。为要素类命名时最常用的方式是大小写混写或使用下划线,例如,MajorRoads 或 Major_Roads。
创建要素类时,应为其指定一个名称,以指明要素类中所存储的数据。要素类名称在数据库或地理数据库中必须唯一,不能存在多个同名的要素类。也就是说,不允许在同一地理数据库中存在具有相同名称的两个要素类,即使这两个要素类位于不同的要素数据集中。
但您在 ArcGIS for Desktop 中创建要素类时所指定的名称并不是数据库或地理数据库中对应要素类的显示名称。数据库或地理数据库会追加用于存储该要素类的方案名称。除 Oracle 以外的所有数据库,还会向名称中追加数据库的名称。这称为全限定要素类名称。例如,如果用户 Werther 在 spdata 数据库中创建了一个名为 alpacas 的要素类,则该要素类的完全限定名称为
spdata.werther.alpacas
因此,其他用户也可以创建名为 alpacas 的要素类,因为他们创建的要素类会在要素类名称中追加相应的用户名。例如,如果用户 Gretchen 创建了自己的 alpacas 要素类,则完全限定名称为
spdata.gretchen.alpacas
但建议您不要重复使用要素类名称,即使它们存储在不同的方案或数据库中。在此示例中,如果两个要素类都包含 alpacas 的相关信息,则没必要创建两个单独的要素类。如果这两个要素类包含的数据明显不同,则这种不同应从要素类名称中反映出来。
在 Informix 中,即使将要素类存储在不同的方案中,这些要素类也不得使用相同的名称。
其他规则
- 名称必须以字母开头,不能是数字或者星号 (*) 或百分号 (%) 等特殊字符。
- 名称不应包含空格。如果表或要素类的名称包含两部分,则用下划线 (_) 连接各单词,如 garbage_routes。
- 名称中不应包含保留字,如 select 或 add。有关其他保留字,请查阅 DBMS 文档。
- 要素类名称和表名称的长度取决于基础数据库。文件地理数据库中的要素类的最大名称长度为 160 个字符。请查阅 DBMS 文档以获得确定的最大的名称长度。
不支持具有以下前缀的表名或要素类名:
- gdb_
- sde_
- delta_
重命名字段
可以对属性 对话框中字段选项卡上的表或要素类的字段进行重命名。ArcGIS 10 或更高版本的地理数据库中的字段支持重命名,并可以重命名数据库表中的字段。
要重命名字段,可以在目录树中右键单击要素类或表,然后单击属性。单击字段选项卡查看该表或要素类中的字段的列表。单击要重命名的字段的文本,然后输入一个新名称。单击确定应用更改并关闭属性 对话框。
字段名称的限制类似于表和要素类名称的限制。
- 名称必须以字母开头,不能是数字或者星号 (*) 或百分号 (%) 等特殊字符。
- 名称不应包含空格。
如果字段名称包含两部分,则用下划线 (_) 连接各单词,如 customer_address。
- 名称中不应包含保留字,如 all 或 result。
有关其他保留字,请查阅 DBMS 文档。
- 文件地理数据库中的字段名称最多包含 64 个字符,大多数企业级地理数据库和数据库中的字段名称最多包含 31 个字符(在 Oracle 中为 30 个字符)。
无法重命名以下字段:
- ObjectID 和 GlobalID 字段
- 任何与形状相关的字段;形状、形状长度、形状面积
- 网络要素类的启用字段、辅助角色字段或网络权重字段
- 制图表达字段
- 参与网络数据集、Terrain 或地籍结构的要素类中的字段
- 用于编辑器追踪的字段
- 关系类主键和外键字段
- 子类型字段
- 栅格数据字段
别名
在地理数据库中创建表或要素类时,可以为其指定别名。别名就是一个替代名称。如果为表或要素类指定一个别名,则此名称就是用户将表或要素类添加到 ArcMap 时将会看到的名称。用户仍然可以转到图层属性 对话框的源选项卡查看表或要素类的名称。
要素类的类型
矢量要素(带有矢量几何的地理对象)是一种常用的地理数据类型,其用途广泛,非常适合表示带有离散边界的要素(例如街道、州和宗地)。要素是一个对象,可将其地理制图表达(通常为点、线或面)存储为行中的一个属性(或字段)。在 ArcGIS 中,要素类是数据库表中存储有公共空间制图表达和属性集的要素的同类集合,例如,线要素类用于表示道路中心线。
创建要素类时,将要求您设置要素的类型以定义要素类的类型(点、线、面等)。
通常,要素类是点、线或面的专题集合,但存在七种要素类类型。在数据库和地理数据库中支持前三种类型。仅地理数据库支持后四种类型。
- 磅: 表示过小而无法表示为线或面以及点位置(如 GPS 观测值)的要素。
- 线:表示形状和位置过窄而无法表示为区域的地理对象(如,街道中心线与河流)。也使用线来表示具有长度但没有面积的要素,如等值线和边界。
- 面: 一组具有多个边的面要素,表示同类要素类型(如州、县、宗地、土壤类型和土地使用区域)的形状和位置。
- 注记: 包含表示文本渲染方式的属性的地图文本。除了每个注记的文本字符串,还包括一些其他属性(例如,用于放置文本的形状点、其字体与字号以及其他显示属性)。注记也可通过要素进行连接,并可包含子类。
- 尺寸注记:一种可显示特定长度或距离(例如,要指示建筑物某一侧或地块边界或两个要素之间距离的长度)的特殊注记类型。在 GIS 的设计、工程和公共事业应用中,经常会使用尺寸注记。
- 多点:由多个点组成的要素。多点通常用于管理非常大的点集合数组(如激光雷达点聚类),可包含数以亿计的点。对于此类点几何使用单一行是不可行的。将这些点聚类为多点行,可使地理数据库能够处理海量点集。
- 多面体:一种 3D 几何,用于表示在三维空间中占用离散区域或体积的要素的外表面或壳。多面体由平面 3D 环和三角形构成,将组合使用这两种形状以建立三维壳模型。可使用多面体来表示从简单对象(如,球体和立方体)到复杂对象(如,等值面和建筑物)的任何事物。
几何属性
创建新要素类时,对于三维数据,可以选择坐标系统中是否包含测量 (m) 值或 z 值。
是否需要 m 值或 z 值由正在使用的数据类型决定。
通过在数据中包含 m 值,可允许在点坐标的折点处存储属性值。如果是线性参考,m 值会将测量值存储在沿线状要素分布的折点中。这将允许沿线找到位置。如果要对数据使用线性参考或动态分段应用,则其坐标中必须包含 M 值。
Z 值用于表示特定表面位置的代表高程或其他属性。在高程或地形模型中,z 值表示高程;在其他类型的表面模型中,它表示某些特定属性(如年降雨量、人口和其他表面测量值)的密度或数量。如果要构建高程模型、创建地形或处理任意三维表面,则坐标中必须包含 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。
- SDO_GEOMETRY: 如果要向 ArcSDE for Oracle 地理数据库添加栅格数据集,可指定 SDO_GEOMETRY 配置关键字,从而要求数据库以 Oracle GeoRaster 格式存储栅格数据。
- TEXT_UTF16: 如果将包含中文字符的要素类复制到文件地理数据库,可指定 TEXT_UTF16 配置关键字,这样属性列中的文本字符将以 UTF-16 格式进行存储,从而更高效地存储中文字符。
字段和字段属性
在 ArcCatalog 或目录窗口中创建要素类时,可指定要素类中所要包含的字段。还可以指定字段属性,如字段类型和可存储在字段中的最大数据量。每个字段类型都有特殊的属性。
所有字段均具有如下属性:
- 别名:这是要素类字段的备用名称。与字段的真实名称不同,别名不需要遵守数据库的限制,因此可包含空格和特殊字符,并允许以数字开头。您只能为地理数据库中的要素类指定字段别名。
- 允许空值:这会在创建字段时控制该字段是否具有“NOT NULL”约束。如果“允许空值”设为“否”,数据库中的字段定义将包含“NOT NULL”约束。另一方面,如果保持默认设置“是”,则字段将为 NULLABLE。注:
当且仅当数据库中的字段具有“NOT NULL”约束时,地理数据库模型才会插入一个空值(数字 = 0,文本 = ""),而不是数据库“NULL”。
- 默认值:当使用 ArcMap 编辑工具创建新要素或对象时,可输入用来自动填充该要素或对象的默认值。只能为地理数据库中的要素类指定默认字段值。
- 长度: 这是文本字段的属性,用来确定可输入的最大字符数。
所有要素类都具有一组必填字段,用于记录要素类中任意特定对象状态。创建要素类时会自动创建这些必填字段,且无法删除。必填字段也可能具有一些必要的属性,例如,它们的属性域属性。无法修改必填字段的必需属性。
例如,在多边形要素类中,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 字段的几何类型属性是“多边形”)导入字段定义时,不会覆盖“点”属性。